454 Commits

Author SHA1 Message Date
John Cuthbertson
eb2c52c717 7041879: G1: introduce stress testing parameter to cause frequent evacuation failures
Add the flags G1EvacuationFailureALot flag (and supporting flags) to force trigger evacuation failures. The support flags control how often to trigger an evacuation failure and during which types of evacuation pause. This functionality is analogous to that of PromotionFailureALot for the other collectors.

Reviewed-by: brutisso
2012-08-28 15:20:08 -07:00
Bengt Rutisson
68bbfe24e7 7178363: G1: Remove the serial code for PrintGCDetails and make it a special case of the parallel code
Also reviewed by vitalyd@gmail.com. Introduced the WorkerDataArray class. Fixed some minor logging bugs.

Reviewed-by: johnc, mgerdin
2012-08-23 10:21:12 +02:00
Bengt Rutisson
6dbe18d702 7193157: G1: Make some develpflags available in product builds
Also reviewed by: vitalyd@gmail.com. Make G1DefaultMinNewGenPercent, G1DefaultMaxNewGenPercent, G1OldCSetRegionLiveThresholdPercent and G1OldCSetRegionThresholdPercent experimental flags

Reviewed-by: ysr, johnc, jmasa
2012-08-23 05:25:59 +02:00
John Cuthbertson
61493cd92e 7185699: G1: Prediction model discrepancies
Correct the result value of G1CollectedHeap::pending_card_num(). Change the code that calculates the GC efficiency of a non-young heap region to use historical data from mixed GCs and the actual number of live bytes when predicting how long it would take to collect the region. Changes were also reviewed by Thomas Schatzl.

Reviewed-by: azeemj, brutisso
2012-08-21 14:10:39 -07:00
John Cuthbertson
384650cb3e 7192128: G1: Extend fix for 6948537 to G1's BOT
G1 does not appear to be immune to the issue described in CR 6948537 and increasing the size of old-generation PLABs appears to increase the liklihood of seeing the issue. Extend the fix for 6948537 to G1's BlockOffsetTable.

Reviewed-by: brutisso, jmasa
2012-08-21 10:05:57 -07:00
Brandon Mitchell
3234f913bb 6818524: G1: use ergonomic resizing of PLABs
Employ PLABStats instances to record information about survivor and old PLABs, and use the recorded stats to adjust the sizes of survivor and old PLABS.

Reviewed-by: johnc, ysr
2012-08-06 12:20:14 -07:00
Antonios Printezis
a6580a7e63 7114678: G1: various small fixes, code cleanup, and refactoring
Various cleanups as a prelude to introducing iterators for HeapRegions.

Reviewed-by: johnc, brutisso
2012-07-19 15:15:54 -07:00
Thomas Schatzl
7ac8896f1d 7182260: G1: Fine grain RSet freeing bottleneck
Chain the fine grain PerRegionTables in an individual RSet together and free them in bulk using a single operation.

Reviewed-by: johnc, brutisso
2012-07-17 12:24:05 -07:00
Brandon Mitchell
6fdfe86bbd 7184772: G1: Incorrect assert in HeapRegionLinkedList::add_as_head()
Assertion incorrectly checks that _head is NULL and should be checking that _tail is NULL instead.

Reviewed-by: johnc
2012-07-17 14:57:02 -07:00
John Cuthbertson
7e2522f283 7173712: G1: Duplicated code in G1UpdateRSOrPushRefOopClosure::do_oop_nv()
Duplicated code from G1RemSet::par_write_ref() inlined into G1UpdateRSOrPushRefOopClosure::do_oop_nv() was showing up in profiles with a fairly high amount of CPU time. Manually inline the main part of G1RemSet::par_write_ref() to eliminate the code duplication.

Reviewed-by: azeemj, brutisso
2012-07-17 11:52:10 -07:00
Jon Masamitsu
00502cdd51 Merge 2012-07-16 13:00:26 -07:00
Bengt Rutisson
3571ee23dc 7178361: G1: Make sure that PrintGC and PrintGCDetails use the same timing for the GC pause
Also reviewed by: vitalyd@gmail.com. Move the timing out of G1CollectorPolicy into the G1GCPhaseTimes class

Reviewed-by: johnc
2012-07-11 22:47:38 +02:00
Coleen Phillimore
135f315eaa Merge 2012-07-02 13:11:28 -04:00
Zhengyu Gu
a39b17624a 6995781: Native Memory Tracking (Phase 1)
7151532: DCmd for hotspot native memory tracking

Implementation of native memory tracking phase 1, which tracks VM native memory usage, and related DCmd

Reviewed-by: acorn, coleenp, fparain
2012-06-28 17:03:16 -04:00
Thomas Schatzl
79ee0ab0c2 6921087: G1: remove per-GC-thread expansion tables from the fine-grain remembered sets
Remove the per-thread expansion tables (PosParPRT) and associated expansion and compaction from the fine grain RSet entries. This code has been unused for a while.

Reviewed-by: johnc, brutisso
2012-06-25 16:00:55 -07:00
Bengt Rutisson
ee7ac30420 7173460: G1: java/lang/management/MemoryMXBean/CollectionUsageThreshold.java failes with G1
The scope of TraceMemoryManagerStats in G1CollectedHeap need to cover the call to G1MonitoringSupport::update_sizes()

Reviewed-by: johnc, jmasa
2012-06-04 13:29:34 +02:00
Bengt Rutisson
e294a9f5ec 7172388: G1: _total_full_collections should not be incremented for concurrent cycles
Reviewed-by: azeemj, jmasa
2012-06-05 22:30:24 +02:00
Bengt Rutisson
212ab5c73a 7172279: G1: Clean up TraceGen0Time and TraceGen1Time data gathering
Simplify code, remove unused code, remove ExitAfterGCNum

Reviewed-by: huntch, johnc
2012-05-31 21:10:33 +02:00
Bengt Rutisson
b76f6e07ab 7171936: LOG_G incorrectly defined in globalDefinitions.hpp
Removed LOG_G and LOG_K. Moved LOG_M to where it is being used.

Reviewed-by: twisti, johnc
2012-05-25 22:35:13 +02:00
John Cuthbertson
3f38785a0a 7143858: G1: Back to back young GCs with the second GC having a minimally sized eden
Before the last thread to leave a JNI critical region was able to schedule a GCLocker Initiated GC, another thread was attempting an allocation and saw that the GCLocker region was no longer active and successfully scheduled a GC. Stall allocating threads until the GCLocker Initiated GC is performed and then retry the allocation.

Reviewed-by: brutisso, huntch
2012-05-29 10:18:02 -07:00
Bengt Rutisson
eba9965d54 7166894: Add gc cause to GC logging for all collectors
Reviewed-by: mgerdin, johnc
2012-05-15 10:25:06 +02:00
John Cuthbertson
73636f80f0 7168294: G1: Some Full GCs incorrectly report GC cause as "No GC"
GC cause was not being set by the VM_G1CollectForAllocation VM operation.

Reviewed-by: jmasa, ysr, brutisso
2012-05-15 09:49:18 -07:00
Bengt Rutisson
b68794be17 7161545: G1: Minor cleanups to the G1 logging
Rename "to-space-overflow" to "to-space-exhausted", Introduce one decimal point in the size format, Add Sum to the aggregate and re-order the entries, Add number of GC workers to the log output

Reviewed-by: johnc, jwilhelm
2012-05-14 17:32:17 +02:00
Bengt Rutisson
93bfefecfe 7163848: G1: Log GC Cause for a GC
Reviewed-by: johnc, jwilhelm, jmasa
2012-04-25 12:36:37 +02:00
John Cuthbertson
377a04fe57 7143490: G1: Remove HeapRegion::_top_at_conc_mark_count
Removed the HeapRegion::_top_at_conc_mark_count field. It is no longer needed as a result of the changes for 6888336 and 7127706. Refactored the closures that finalize and verify the liveness counting data so that common functionality was placed into a base class.

Reviewed-by: brutisso, tonyp
2012-04-25 10:23:12 -07:00
Antonios Printezis
0afaaf8d36 7145441: G1: collection set chooser-related cleanup
Cleanup of the CSet chooser class: standardize on uints for region num and indexes (instead of int, jint, etc.), make the method / field naming style more consistent, remove a lot of dead code.

Reviewed-by: johnc, brutisso
2012-04-18 13:39:55 -04:00
Antonios Printezis
01ea4199c7 7157073: G1: type change size_t -> uint for region counts / indexes
Change the type of fields / variables / etc. that represent region counts and indeces from size_t to uint.

Reviewed-by: iveresov, brutisso, jmasa, jwilhelm
2012-04-18 07:21:15 -04:00
Bengt Rutisson
f695b75d78 4988100: oop_verify_old_oop appears to be dead
Removed oop_verify_old_oop and allow_dirty. Also reviewed by: alexlamsl@gmail.com

Reviewed-by: jmasa, jwilhelm
2012-04-16 08:57:18 +02:00
Bengt Rutisson
bb59715dae 7160728: Introduce an extra logging level for G1 logging
Added log levels "fine", "finer" and "finest". Let PrintGC map to "fine" and PrintGCDetails map to "finer". Separated out the per worker information in the G1 logging to the "finest" level.

Reviewed-by: stefank, jwilhelm, tonyp, johnc
2012-04-13 01:59:38 +02:00
Antonios Printezis
29afa9bf4b 7127697: G1: remove dead code after recent concurrent mark changes
Removed lots of dead code after some recent conc mark changes.

Reviewed-by: brutisso, johnc
2012-04-05 13:57:23 -04:00
Bengt Rutisson
a99b0c08d4 7130974: G1: Remove G1ParCopyHelper
Reviewed-by: tonyp, johnc
2012-03-16 09:52:57 +01:00
John Cuthbertson
79c90a15fa 7143511: G1: Another instance of high GC Worker Other time (50ms)
Tiered compilation has increased the number of nmethods in the code cache. This has, in turn, significantly increased the number of marked nmethods processed during the StrongRootsScope destructor. Create a specialized version of CodeBlobToOopClosure for G1 which places only those nmethods that contain pointers into the collection set on to the marked nmethods list.

Reviewed-by: iveresov, tonyp
2012-03-13 11:05:32 -07:00
Bengt Rutisson
a6d84bc811 7156764: Remove unused size parameter from some CollectedHeap methods
Some minor cleanups

Reviewed-by: tonyp, jwilhelm
2012-03-27 10:29:59 +02:00
Antonios Printezis
450d6e8d9a 7146246: G1: expose some of the -XX flags that drive which old regions to collect during mixed GCs
Make two G1 cmd line flags available in product builds: G1HeapWastePercent (previously called: G1OldReclaimableThresholdPercent) and G1MixedGCCountTarget (previous called: G1MaxMixedGCNum). Also changed the default of the former from 1% to 5% and the default for G1OldCSetRegionLiveThresholdPercent to 90%.

Reviewed-by: azeemj, jwilhelm, johnc
2012-03-23 10:53:19 -04:00
John Cuthbertson
006def0451 7147724: G1: hang in SurrogateLockerThread::manipulatePLL
Attempting to initiate a marking cycle when allocating a humongous object can, if a marking cycle is successfully initiated by another thread, result in the allocating thread spinning until the marking cycle is complete. Eliminate a deadlock between the main ConcurrentMarkThread, the SurrogateLocker thread, the VM thread, and a mutator thread waiting on the SecondaryFreeList_lock (while free regions are going to become available) by not manipulating the pending list lock during the prologue and epilogue of the cleanup pause.

Reviewed-by: brutisso, jcoomes, tonyp
2012-03-12 14:59:00 -07:00
Bengt Rutisson
4a2a6ebe99 7152954: G1: Native memory leak during full GCs
Add destructor to TruncatedSeq and call delete when necessary

Reviewed-by: johnc, tonyp
2012-03-13 21:12:53 +01:00
John Cuthbertson
4bcab49b68 7147806: G1: Crash in vm bootstrap when running with -XX:+UseG1GC -XX:-UsePerfData
Update generation and collector counters only if UsePerfData is enabled.

Reviewed-by: iveresov, tonyp
2012-03-02 10:36:16 -08:00
Antonios Printezis
be06406cb8 7132029: G1: mixed GC phase lasts for longer than it should
Revamp of the mechanism that chooses old regions for inclusion in the CSet. It simplifies the code and introduces min and max bounds on the number of old regions added to the CSet at each mixed GC to avoid pathological cases. It also ensures that when we do a mixed GC we'll always find old regions to add to the CSet (i.e., it eliminates the case where a mixed GC will collect no old regions which can happen today).

Reviewed-by: johnc, brutisso
2012-02-15 13:06:53 -05:00
Antonios Printezis
6a31970946 7129892: G1: explicit marking cycle initiation might fail to initiate a marking cycle
If we try to schedule an initial-mark GC in order to explicit start a conc mark cycle and it gets pre-empted by antoher GC, we should retry the attempt as long as it's appropriate for the GC cause.

Reviewed-by: brutisso, johnc
2012-02-14 08:21:08 -05:00
John Coomes
140e8ff0d9 Merge 2012-02-03 12:08:55 -08:00
Tom Rodriguez
5a41427b37 7141200: log some interesting information in ring buffers for crashes
Reviewed-by: kvn, jrose, kevinw, brutisso, twisti, jmasa
2012-02-01 07:59:01 -08:00
John Cuthbertson
179d6df8c0 7133038: G1: Some small profile based optimizations
Some minor profile based optimizations. Reduce the number of branches and branch mispredicts by removing some virtual calls, through closure specalization, and refactoring some conditional statements.

Reviewed-by: brutisso, tonyp
2012-01-26 14:14:55 -08:00
Antonios Printezis
802519ea53 7127706: G1: re-enable survivors during the initial-mark pause
Re-enable survivors during the initial-mark pause. Afterwards, the concurrent marking threads have to scan them and mark everything reachable from them. The next GC will have to wait for the survivors to be scanned.

Reviewed-by: brutisso, johnc
2012-01-25 12:58:23 -05:00
John Cuthbertson
0fa6fc2279 6484965: G1: piggy-back liveness accounting phase on marking
Remove the separate counting phase of concurrent marking by tracking the amount of marked bytes and the cards spanned by marked objects in marking task/worker thread local data structures, which are updated as individual objects are marked.

Reviewed-by: brutisso, tonyp
2012-01-12 00:06:47 -08:00
Bengt Rutisson
4e395f3ddd 7132311: G1: assert((s == klass->oop_size(this)) || (Universe::heap()->is_gc_active() && ((is_typeArray()..
Move the check for when to call collect() to before we do a humongous object allocation

Reviewed-by: stefank, tonyp
2012-01-23 20:36:16 +01:00
Bengt Rutisson
7946306583 7131791: G1: Asserts in nightly testing due to 6976060
Create a handle and fake an object to make sure that we don't loose the memory we just allocated

Reviewed-by: tonyp, stefank
2012-01-20 18:01:32 +01:00
Antonios Printezis
c90c187756 7078465: G1: Don't use the undefined value (-1) for the G1 old memory pool max size
Reviewed-by: johnc, brutisso
2012-01-19 09:13:58 -05:00
John Cuthbertson
43a30ad483 7129271: G1: Interference from multiple threads in PrintGC/PrintGCDetails output
During an initial mark pause, signal the Concurrent Mark thread after the pause output from PrintGC/PrintGCDetails is complete.

Reviewed-by: tonyp, brutisso
2012-01-17 10:21:43 -08:00
Antonios Printezis
c9eb103b7f 7097586: G1: improve the per-space output when using jmap -heap
Extend the jmap -heap output for G1 to include some more G1-specific information.

Reviewed-by: brutisso, johnc, poonam
2012-01-18 10:30:12 -05:00
Bengt Rutisson
c11ba93098 6976060: G1: humongous object allocations should initiate marking cycles when necessary
Reviewed-by: tonyp, johnc
2012-01-16 22:10:05 +01:00