RFR: 8306656: Generational ZGC: Fix age table logging [v3]

Axel Boldt-Christmas aboldtch at openjdk.org
Tue May 2 12:14:45 UTC 2023


On Tue, 2 May 2023 11:13:44 GMT, Erik Helin <ehelin at openjdk.org> wrote:

>> Hey all,
>> 
>> please review this patch that updates the age table logging. The logging now looks like:
>> 
>> 
>> [1.946s][info][gc,reloc    ] GC(22) y: Age Table:
>> [1.946s][info][gc,reloc    ] GC(22) y:                    Live              Small              Medium             Large        
>> [1.946s][info][gc,reloc    ] GC(22) y: Eden               0M -> 0M        300 -> 300           0 -> 0             0 -> 0       
>> [1.946s][info][gc,reloc    ] GC(22) y: Survivor 1         0M -> 0M          2 -> 2             0 -> 0             0 -> 0       
>> [1.946s][info][gc,reloc    ] GC(22) y: Survivor 2         0M -> 0M          1 -> 0             0 -> 0             0 -> 0       
>> [1.946s][info][gc,reloc    ] GC(22) y: Survivor 3         0M -> 0M          1 -> 1             0 -> 0             0 -> 0       
>> [1.946s][info][gc,reloc    ] GC(22) y: Survivor 4         0M -> 0M          0 -> 1             0 -> 0             0 -> 0 
>> 
>> 
>> The first column is the size of the live objects with the given age and how that has changed since the previous collection. The remaining columns are the number of pages of the given age and how those have changed from the previous collection to the current one (so the format is `<previous> -> <current>`). This makes it easy to spot a change in behavior in objects' lifetimes from one collection to another: if objects have similar lifetimes compared to the previous collection then the distribution of pages should be similar between the current collection and the previous collection.
>> 
>> _Note_: I would like to make the table adapt to live sizes smaller than one megabyte, but that should probably be done for the logging as a whole, not just for the age table.
>> 
>> I also cleaned up some minor stuff as I went along.
>> 
>> Testing:
>> - [x] Tier 1-3 (macOS-aarch64, Windows-x64, Linux-x64, Linux-aarch64)
>> - [x] Local testing on macOS-aarch64
>> 
>> Thanks,
>> Erik
>
> Erik Helin has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains three commits:
> 
>  - Add units
>  - StefanK changes
>  - Rework age table logging

src/hotspot/share/gc/z/zStat.cpp line 1583:

> 1581: 
> 1582:     return ZPageAgeMax;
> 1583:   }();

There can be cases where there are empty ages in the middle, I think it pretty much only happens when `ZTenuringThreshold` is used. So maybe reverse iterate from `ZPageAgeMax-1` and find the first where some data is not 0 and return `i + 1`

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

PR Review Comment: https://git.openjdk.org/zgc/pull/19#discussion_r1182452350


More information about the zgc-dev mailing list