Bad jvmpi performance due to GC operation for every object allocation
when jvmpi is enabled.
While debugging 4414956, I found a jvmpi performance problem and GC operation
is requested for every single object allocation due to a problem in
incremental_collection_will_fail flag.
When jvmpi_alloc_event_enabled is on, the new generation is always filled up
to force slow allocation.
incremental_collection_will_fail flag is used to indicate if DefNewGeneration
doesn't have sufficient space left for promotion or future allocation. That
flag is set in DefNewGeneration::gc_epilogue() after GC finishes but before
the new generation is filled. So incremental_collection_will_fail is always
set to false when jvmpi is on (since no real objects (not that many) are
allocated in the new generation).
The performance issue arises in GenCollectedHeap::mem_allocate_work()
that checks if incremenatal_collection_will_fail is false, then the system
only attempts to allocate memory from the first generation. When
jvmpi is enabled, allocation from the new generation (first generation) always
fails, which causes to do a collection!!
Need to check for jvmpi_alloc_event_enabled flag!
when jvmpi is enabled.
While debugging 4414956, I found a jvmpi performance problem and GC operation
is requested for every single object allocation due to a problem in
incremental_collection_will_fail flag.
When jvmpi_alloc_event_enabled is on, the new generation is always filled up
to force slow allocation.
incremental_collection_will_fail flag is used to indicate if DefNewGeneration
doesn't have sufficient space left for promotion or future allocation. That
flag is set in DefNewGeneration::gc_epilogue() after GC finishes but before
the new generation is filled. So incremental_collection_will_fail is always
set to false when jvmpi is on (since no real objects (not that many) are
allocated in the new generation).
The performance issue arises in GenCollectedHeap::mem_allocate_work()
that checks if incremenatal_collection_will_fail is false, then the system
only attempts to allocate memory from the first generation. When
jvmpi is enabled, allocation from the new generation (first generation) always
fails, which causes to do a collection!!
Need to check for jvmpi_alloc_event_enabled flag!
- relates to
-
JDK-4414956 Hotspot crashes running DrawIMGPerf with hprof on Solaris
-
- Closed
-