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 ------------- Commit messages: - Rework age table logging Changes: https://git.openjdk.org/zgc/pull/19/files Webrev: https://webrevs.openjdk.org/?repo=zgc&pr=19&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8306656 Stats: 200 lines in 10 files changed: 104 ins; 52 del; 44 mod Patch: https://git.openjdk.org/zgc/pull/19.diff Fetch: git fetch https://git.openjdk.org/zgc.git pull/19/head:pull/19 PR: https://git.openjdk.org/zgc/pull/19
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 incrementally with two additional commits since the last revision: - Add units - StefanK changes ------------- Changes: - all: https://git.openjdk.org/zgc/pull/19/files - new: https://git.openjdk.org/zgc/pull/19/files/46d42e6a..e2bded1d Webrevs: - full: https://webrevs.openjdk.org/?repo=zgc&pr=19&range=01 - incr: https://webrevs.openjdk.org/?repo=zgc&pr=19&range=00-01 Stats: 162 lines in 10 files changed: 55 ins; 60 del; 47 mod Patch: https://git.openjdk.org/zgc/pull/19.diff Fetch: git fetch https://git.openjdk.org/zgc.git pull/19/head:pull/19 PR: https://git.openjdk.org/zgc/pull/19
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 ------------- Changes: https://git.openjdk.org/zgc/pull/19/files Webrev: https://webrevs.openjdk.org/?repo=zgc&pr=19&range=02 Stats: 172 lines in 6 files changed: 89 ins; 42 del; 41 mod Patch: https://git.openjdk.org/zgc/pull/19.diff Fetch: git fetch https://git.openjdk.org/zgc.git pull/19/head:pull/19 PR: https://git.openjdk.org/zgc/pull/19
On Tue, 2 May 2023 11:13:44 GMT, Erik Helin <ehelin@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
On Fri, 21 Apr 2023 08:36:32 GMT, Erik Duveblad <ehelin@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
This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/zgc/pull/19
participants (3)
-
Axel Boldt-Christmas
-
duke
-
Erik Helin