-
Enhancement
-
Resolution: Unresolved
-
P4
-
9
In some micro-benchmarks, more than 50% of cpu time is spent in GenericTaskQueueSet::steal_best_of_2 due to evacuation threads repeatedly trying to steal when there is very little to steal, and being too eager about it.
Significant improvements can be shown by:
- reducing the number of steal attempts per steal round
- not trying to steal if the victim queue is almost empty as well (because then the next thing that happens is that the victim will try to steal immediately)
- if unsuccessful to steal (and at least some elements are in the queues), give up the CPU immediately instead of doing long active waiting (after looking if we can terminate)
Significant improvements can be shown by:
- reducing the number of steal attempts per steal round
- not trying to steal if the victim queue is almost empty as well (because then the next thing that happens is that the victim will try to steal immediately)
- if unsuccessful to steal (and at least some elements are in the queues), give up the CPU immediately instead of doing long active waiting (after looking if we can terminate)
- relates to
-
JDK-8031565 Use serial/waiting time to perform independent tasks during young gc in G1
-
- Open
-
-
JDK-8156739 Provide a way to move multiple tasks from overflow to regular task queue
-
- Open
-
-
JDK-8159423 Improve sizing and padding of evacuation task queue data structures
-
- Open
-