RFR: 8194823: Serial GC does not account GCs caused by TLAB allocation in GC overhead limit

Thomas Schatzl tschatzl at openjdk.org
Thu May 25 10:52:00 UTC 2023


On Wed, 24 May 2023 10:54:16 GMT, Guoxiong Li <gli at openjdk.org> wrote:

> Hi all,
> 
> This patch enables the gc overhead limit when allocating TLAB in serial gc.
> The main modification is at `GenCollectedHeap::allocate_new_tlab` and the other 
> files only adjust the parameters of the method `allocate_new_tlab`.
> 
> Thanks for the review.
> 
> Best Regards,
> -- Guoxiong

Lgtm apart from parameter list formatting issues. Please fix before committing.

It's a bit unfortunate that support for this feature for one collector causes so many changes everywhere else. (But also indicates an issue with all other collectors not supporting it ;)). Maybe the parameters could be wrapped into something like an "AllocationRequest", but this is a) a separate issue, and b) needs to be discussed first with others.

src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp line 518:

> 516: 
> 517: HeapWord* ParallelScavengeHeap::allocate_new_tlab(size_t min_size, size_t requested_size, size_t* actual_size,
> 518:                                                   bool* gc_overhead_limit_was_exceeded) {

Suggestion:

HeapWord* ParallelScavengeHeap::allocate_new_tlab(size_t min_size,
                                                  size_t requested_size,
                                                  size_t* actual_size,
                                                  bool* gc_overhead_limit_was_exceeded) {

Parameter list formatting

src/hotspot/share/gc/parallel/parallelScavengeHeap.hpp line 106:

> 104:  protected:
> 105:   HeapWord* allocate_new_tlab(size_t min_size, size_t requested_size, size_t* actual_size,
> 106:                               bool* gc_overhead_limit_was_exceeded) override;

Suggestion:

  HeapWord* allocate_new_tlab(size_t min_size,
                              size_t requested_size,
                              size_t* actual_size,
                              bool* gc_overhead_limit_was_exceeded) override;

Parameter formatting

src/hotspot/share/gc/shared/memAllocator.cpp line 325:

> 323:   size_t min_tlab_size = ThreadLocalAllocBuffer::compute_min_size(_word_size);
> 324:   mem = Universe::heap()->allocate_new_tlab(min_tlab_size, new_tlab_size, &allocation._allocated_tlab_size,
> 325:                                             &allocation._overhead_limit_exceeded);

Suggestion:

  mem = Universe::heap()->allocate_new_tlab(min_tlab_size,
                                            new_tlab_size,
                                            &allocation._allocated_tlab_size,
                                            &allocation._overhead_limit_exceeded);

Parameter formatting

src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp line 535:

> 533: 
> 534:   HeapWord* allocate_new_tlab(size_t min_size, size_t requested_size, size_t* actual_size,
> 535:                               bool* gc_overhead_limit_was_exceeded) override;

Suggestion:

  HeapWord* allocate_new_tlab(size_t min_size,
                              size_t requested_size,
                              size_t* actual_size,
                              bool* gc_overhead_limit_was_exceeded) override;

src/hotspot/share/gc/x/xCollectedHeap.cpp line 150:

> 148: 
> 149: HeapWord* XCollectedHeap::allocate_new_tlab(size_t min_size, size_t requested_size, size_t* actual_size,
> 150:                                             bool* gc_overhead_limit_was_exceeded) {

Suggestion:

HeapWord* XCollectedHeap::allocate_new_tlab(size_t min_size,
                                            size_t requested_size,
                                            size_t* actual_size,
                                            bool* gc_overhead_limit_was_exceeded) {

src/hotspot/share/gc/z/zCollectedHeap.cpp line 145:

> 143: 
> 144: HeapWord* ZCollectedHeap::allocate_new_tlab(size_t min_size, size_t requested_size, size_t* actual_size,
> 145:                                             bool* gc_overhead_limit_was_exceeded) {

Suggestion:

HeapWord* ZCollectedHeap::allocate_new_tlab(size_t min_size,
                                            size_t requested_size,
                                            size_t* actual_size,
                                            bool* gc_overhead_limit_was_exceeded) {

-------------

Marked as reviewed by tschatzl (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/14120#pullrequestreview-1443605666
PR Review Comment: https://git.openjdk.org/jdk/pull/14120#discussion_r1205332523
PR Review Comment: https://git.openjdk.org/jdk/pull/14120#discussion_r1205333052
PR Review Comment: https://git.openjdk.org/jdk/pull/14120#discussion_r1205333593
PR Review Comment: https://git.openjdk.org/jdk/pull/14120#discussion_r1205333968
PR Review Comment: https://git.openjdk.org/jdk/pull/14120#discussion_r1205334232
PR Review Comment: https://git.openjdk.org/jdk/pull/14120#discussion_r1205334518


More information about the shenandoah-dev mailing list