Commit graph

48 commits

Author SHA1 Message Date
John Cuthbertson
3373070e7f 6923430: G1: assert(res != 0,"This should have worked.")
7007446: G1: expand the heap with a single step, not one region at a time

Changed G1CollectedHeap::expand() to expand the committed space by calling VirtualSpace::expand_by() once rather than for every region in the expansion amount. This allows the success or failure of the expansion to be determined before creating any heap regions. Introduced a develop flag G1ExitOnExpansionFailure (false by default) that, when true, will exit the VM if the expansion of the committed space fails. Finally G1CollectedHeap::expand() returns a status back to it's caller so that the caller knows whether to attempt the allocation.

Reviewed-by: brutisso, tonyp
2011-02-02 10:41:20 -08:00
Antonios Printezis
8bce4a6620 6977804: G1: remove the zero-filling thread
This changeset removes the zero-filling thread from G1 and collapses the two free region lists we had before (the "free" and "unclean" lists) into one. The new free list uses the new heap region sets / lists abstractions that we'll ultimately use it to keep track of all regions in the heap. A heap region set was also introduced for the humongous regions. Finally, this change increases the concurrency between the thread that completes freeing regions (after a cleanup pause) and the rest of the system (before we'd have to wait for said thread to complete before allocating a new region). The changest also includes a lot of refactoring and code simplification.

Reviewed-by: jcoomes, johnc
2011-01-19 19:30:42 -05:00
Antonios Printezis
edcfaf0f84 6994056: G1: when GC locker is active, extend the Eden instead of allocating into the old gen
Allow the eden to the expanded up to a point when the GC locker is active.

Reviewed-by: jwilhelm, johnc, ysr, jcoomes
2010-12-07 16:47:42 -05:00
Antonios Printezis
bb23e30511 6974966: G1: unnecessary direct-to-old allocations
This change revamps the slow allocation path of G1. Improvements include the following: a) Allocations directly to old regions are now totally banned. G1 now only allows allocations out of young regions (with the only exception being humongous regions). b) The thread that allocates a new region (which is now guaranteed to be young) does not dirty all its cards. Each thread that successfully allocates out of a young region is now responsible for dirtying the cards that corresponding to the "block" that just got allocated. c) allocate_new_tlab() and mem_allocate() are now implemented differently and TLAB allocations are only done by allocate_new_tlab(). d) If a thread schedules an evacuation pause in order to satisfy an allocation request, it will perform the allocation at the end of the safepoint so that the thread that initiated the GC also gets "first pick" of any space made available by the GC. e) If a thread is unable to allocate a humongous object it will schedule an evacuation pause in case it reclaims enough regions so that the humongous allocation can be satisfied aftewards. f) The G1 policy is more careful to set the young list target length to be the survivor number +1. g) Lots of code tidy up, removal, refactoring to make future changes easier.

Reviewed-by: johnc, ysr
2010-08-24 17:24:33 -04:00
Stefan Karlsson
8006fe8f75 6989984: Use standard include model for Hospot
Replaced MakeDeps and the includeDB files with more standardized solutions.

Reviewed-by: coleenp, kvn, kamg
2010-11-23 13:22:55 -08:00
Jon Masamitsu
28e56b8970 6984287: Regularize how GC parallel workers are specified
Associate number of GC workers with the workgang as opposed to the task.

Reviewed-by: johnc, ysr
2010-09-20 14:38:38 -07:00
John Cuthbertson
2b0e8a56df 6981746: G1: SEGV with -XX:+TraceGen0Time
Pass correct value for length to NumberSeq constructor. Guard dereferences of "body_summary" pointer with a NULL check.

Reviewed-by: tonyp, ysr
2010-09-13 10:00:24 -07:00
Antonios Printezis
b4148f3379 6963209: G1: remove the concept of abandoned pauses
As part of 6944166 we disabled the concept of abandoned pauses (i.e., if the collection set is empty, we would still try to do a pause even if it is to update the RSets and scan the roots). This changeset removes the code and structures associated with abandoned pauses.

Reviewed-by: iveresov, johnc
2010-08-04 13:03:23 -04:00
John Cuthbertson
3a2b2b4fd8 6814437: G1: remove the _new_refs array
The per-worker _new_refs array is used to hold references that point into the collection set. It is populated during RSet updating and subsequently processed. In the event of an evacuation failure it processed again to recreate the RSets of regions in the collection set. Remove the per-worker _new_refs array by processing the references directly. Use a DirtyCardQueue to hold the cards containing the references so that the RSets of regions in the collection set can be recreated when handling an evacuation failure.

Reviewed-by: iveresov, jmasa, tonyp
2010-08-02 12:51:43 -07:00
Antonios Printezis
dfc84e8c89 6944166: G1: explicit GCs are not always handled correctly
G1 was not handling explicit GCs correctly in many ways. It does now. See the CR for the list of improvements contained in this changeset.

Reviewed-by: iveresov, ysr, johnc
2010-06-28 14:13:17 -04:00
Antonios Printezis
3e2cf1a294 6946048: G1: improvements to +PrintGCDetails output
Small improvements to G1's PrintGCDetails output. It also includes minor formatting details.

Reviewed-by: ysr, johnc
2010-04-22 15:20:16 -04:00
Antonios Printezis
a6d2266193 6949307: G1: raise a vm error, do not core dump, if target pause time and target interval are inconsistent
First, change the guarantee to raising a vm error. Second, set the interval dynamically, and based on the pause time target, if it is not set explicitly.

Reviewed-by: ysr, johnc
2010-05-07 13:14:41 -04:00
John R Rose
d6a9b93b5a Merge 2010-06-02 22:45:42 -07:00
Erik Trimble
ba7c173659 6941466: Oracle rebranding changes for Hotspot repositories
Change all the Sun copyrights to Oracle copyright

Reviewed-by: ohair
2010-05-27 19:08:38 -07:00
Vladimir Kozlov
cc18a50e59 6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
Added new product ObjectAlignmentInBytes flag to control object alignment.

Reviewed-by: twisti, ysr, iveresov
2010-05-27 18:01:56 -07:00
John Cuthbertson
b1867e0dd5 6819061: G1: eliminate serial Other times that are proportional to the collection set length
6871109: G1: remove the concept of the scan only prefix

Removed scan only regions and associated code. The young portion of the collection set is now constructed incrementally - when a young region is retired as the current allocation region it is added to the collection set.

Reviewed-by: apetrusenko, iveresov, tonyp
2010-04-22 10:02:38 -07:00
Andrey Petrusenko
99cdb36eca 6942253: G1: replace G1ParallelGCAllocBufferSize with YoungPLABSize and OldPLABSize
Replaces the G1-specific parameter with the existing ones that are used by the other GCs (YoungPLABSize and OldPLABSize)

Reviewed-by: tonyp, johnc
2010-04-16 08:48:16 -07:00
Antonios Printezis
9b4fc8fc23 6937142: G1: improvements to debugging output (S-M)
Various fixes to the G1 debugging output.

Reviewed-by: johnc, iveresov
2010-03-30 15:43:03 -04:00
Antonios Printezis
719e7f0926 6909756: G1: guarantee(G1CollectedHeap::heap()->mark_in_progress(),"Precondition.")
Make sure that two marking cycles do not overlap, i.e., a new one can only start after the concurrent marking thread finishes all its work. In the fix I piggy-back a couple of minor extra fixes: some general code reformatting for consistency (only around the code I modified), the removal of a field (G1CollectorPolicy::_should_initiate_conc_mark) which doesn't seem to be used at all (it's only set but never read), as well as moving the "is GC locker active" test earlier into the G1 pause / Full GC and using a more appropriate method for it.

Reviewed-by: johnc, jmasa, jcoomes, ysr
2010-04-06 10:59:45 -04:00
Antonios Printezis
972acdab81 6937160: G1: should observe GCTimeRatio
Remove the G1GCPercent parameter, that specifies the desired GC overhead percentage in G1, and observe the GCTimeRatio parameter instead.

Reviewed-by: jmasa, johnc
2010-03-30 15:36:55 -04:00
Antonios Printezis
1eb12e87a7 6928065: G1: use existing command line parameters to set the young generation size
See synopsis

Reviewed-by: johnc, jmasa
2010-02-24 14:56:20 -05:00
Antonios Printezis
77b2dfce1d 6928073: G1: use existing command line parameters for marking cycle initiation
Replace the combination of the G1SteadyStateUsed / G1SteadyStateUsedDelta parameteres to decide the marking initiation threshold and instead use InitiatingHeapOccupancyPercent.

Reviewed-by: ysr, johnc
2010-02-23 23:14:34 -05:00
Antonios Printezis
b5c83abcd4 6928059: G1: command line parameter renaming
Rename G1 parameters to make them more consistent.

Reviewed-by: jmasa, johnc
2010-02-23 23:13:23 -05:00
Igor Veresov
52b92d5593 6923991: G1: improve scalability of RSet scanning
Implemented block-based work stealing. Moved copying during the rset scanning phase to the main copying phase. Made the size of rset table depend on the region size.

Reviewed-by: apetrusenko, tonyp
2010-02-11 15:52:19 -08:00
Igor Veresov
1383dc414b 6862387: tune concurrent refinement further
Reworked the concurrent refinement: threads activation, feedback-based threshold adjustment, other miscellaneous fixes.

Reviewed-by: apetrusenko, tonyp
2009-12-16 15:12:51 -08:00
Y. Srinivas Ramakrishna
b5af9f3408 6902303: G1: ScavengeALot should cause an incremental, rather than a full, collection
ScavengeALot now causes an incremental (but possibly partially young, in the G1 sense) collection. Some such collections may be abandoned on account of MMU specs. Band-aided a native leak associated with abandoned pauses, as well as an MMU tracker overflow related to frequent scavenge events in the face of a large MMU denominator interval; the latter is protected by a product flag that defaults to false.

Reviewed-by: tonyp
2009-11-19 13:43:25 -08:00
Y. Srinivas Ramakrishna
c54bb4236d 6902701: G1: protect debugging code related to 6898948 with a debug flag
Protected stats dump with a new develop flag; other than for the dump, reconciled product and non-product behaviour in face of the error.

Reviewed-by: tonyp
2009-11-19 10:19:19 -08:00
Y. Srinivas Ramakrishna
241f0f0cd8 6898948: G1: forensic instrumentation for out-of-bounds recent_avg_pause_time_ratio()
Added instrumentation and (temporary) assert in non-product mode; clipped the value when found out-of-bounds in product mode. Fix of original issue will follow collection of data from this instrumentation.

Reviewed-by: jcoomes, tonyp
2009-11-13 11:55:26 -08:00
Antonios Printezis
7c9b6d8d16 6886024: G1: assert(recent_avg_pause_time_ratio() < 1.00,"All GC?")
The assert is incorrect and can fire incorrectly due to floating point inaccuracy.

Reviewed-by: apetrusenko, ysr, jcoomes
2009-10-23 14:34:27 -04:00
Antonios Printezis
243367ec16 6819085: G1: use larger and/or user settable region size
Instead of the region size being hard-coded, allow the user to set it.

Reviewed-by: jmasa, johnc, apetrusenko
2009-07-30 16:22:58 -04:00
Antonios Printezis
4d138cd094 6871111: G1: remove the concurrent overhead tracker
Removing the concurrent overhead tracker from G1, along with the GC overhead reporter and the G1AccountConcurrentOverhead (both of which rely on the the concurrent overhead tracker).

Reviewed-by: iveresov, johnc
2009-08-19 12:53:25 -04:00
John Cuthbertson
f1cbffdd3e 6819077: G1: first GC thread coming late into the GC
The first worker thread is delayed when entering the GC because it clears the card count table that is used in identifying hot cards. Replace the card count table with a dynamically sized evicting hash table that includes an epoch based counter.

Reviewed-by: iveresov, tonyp
2009-08-04 16:00:17 -07:00
Y. Srinivas Ramakrishna
075c1335cb 6700789: G1: Enable use of compressed oops with G1 heaps
Modifications to G1 so as to allow the use of compressed oops.

Reviewed-by: apetrusenko, coleenp, jmasa, kvn, never, phh, tonyp
2009-07-14 15:40:39 -07:00
Igor Veresov
8c764e214c 6484957: G1: parallel concurrent refinement
6826318: G1: remove traversal-based refinement code

Removed traversal-based refinement code as it's no longer used. Made the concurrent refinement (queue-based) parallel.

Reviewed-by: tonyp
2009-05-11 16:30:56 -07:00
John Cuthbertson
55750920b4 6490395: G1: Tidy up command line flags
Change G1 flag names to be more consistent and disable some in 'product' mode.

Reviewed-by: tonyp, iveresov
2009-04-30 15:07:53 -07:00
Andrey Petrusenko
cf2ae8d98d 6543938: G1: remove the concept of popularity
Reviewed-by: iveresov, tonyp
2009-03-25 13:10:54 -07:00
Antonios Printezis
d5e5e5a3d1 6820321: G1: Error: guarantee(check_nums(total, n, parts), "all seq lengths should match")
Small fixes to sort out some verbosegc-related incorrectness and a failure

Reviewed-by: apetrusenko
2009-03-21 22:53:04 -04:00
Antonios Printezis
f8c3115e4e Merge 2009-03-18 11:37:48 -04:00
Antonios Printezis
ecdb99412d 6604422: G1: re-use half-promoted regions
6728271: G1: Cleanup G1CollectedHeap::get_gc_alloc_regions()

It allows the last half-full region to be allocated to during a GC to be reused during the next GC.

Reviewed-by: apetrusenko, jcoomes
2009-03-15 22:03:38 -04:00
Erik Trimble
8d6035660e Merge 2009-03-12 18:16:36 -07:00
Xiomara Jayasena
2be2e027b0 6814575: Update copyright year
Update copyright for files that have been modified in 2009, up to 03/09

Reviewed-by: katleman, tbell, ohair
2009-03-09 13:28:46 -07:00
Antonios Printezis
f883e6fde8 6804746: G1: guarantee(variance() > -1.0,"variance should be >= 0") (due to evacuation failure)
Under certain circumstances (evacuation failure) the pause time is not communicated to the policy and, as a result, the pause time field is not initialized properly.

Reviewed-by: jmasa
2009-02-24 15:50:23 -05:00
Andrey Petrusenko
4be1a50ed3 6802413: G1: G1FixedSurvivorSpaceSize should be converted into regions in calculate_survivors_policy()
Reviewed-by: tonyp, jmasa
2009-02-09 17:33:06 +03:00
Andrey Petrusenko
61181babf1 6484959: G1: introduce survivor spaces
6797754: G1: combined bugfix

Implemented a policy to control G1 survivor space parameters.

Reviewed-by: tonyp, iveresov
2009-02-06 01:38:50 +03:00
Antonios Printezis
5d486c3a66 6484956: G1: improve evacuation pause efficiency
A bunch of performance optimizations to decrease GC pause times in G1.

Reviewed-by: apetrusenko, jmasa, iveresov
2009-01-16 13:02:20 -05:00
Xiomara Jayasena
99f0eac1a2 6785258: Update copyright year
Update copyright for files that have been modified starting July 2008 to Dec 2008

Reviewed-by: katleman, ohair, tbell
2008-12-15 16:55:11 -08:00
Antonios Printezis
e2b3310cb6 6722565: G1: assert !r->is_on_unclean_list() fires
Under certain circumstances, two cleanup threads can claim and process the same region.

Reviewed-by: apetrusenko, ysr
2008-08-06 11:57:31 -04:00
Y. Srinivas Ramakrishna
18f3386a98 6711316: Open source the Garbage-First garbage collector
First mercurial integration of the code for the Garbage-First garbage collector.

Reviewed-by: apetrusenko, iveresov, jmasa, sgoldman, tonyp, ysr
2008-06-05 15:57:56 -07:00