RFR: JDK-8322475: Extend printing for System.map
Thomas Stuefe
stuefe at openjdk.org
Fri Dec 22 14:47:47 UTC 2023
On Fri, 22 Dec 2023 13:08:40 GMT, Stefan Karlsson <stefank at openjdk.org> wrote:
>> This is an expansion on the new `System.map` command introduced with JDK-8318636.
>>
>> We now print valuable information per memory region, such as:
>>
>> - the actual resident set size
>> - the actual number of huge pages
>> - the actual used page size
>> - the THP state of the region (was advised, is eligible, uses THP, ...)
>> - whether the region is shared
>> - whether the region had been committed (backed by swap)
>> - whether the region has been swapped out.
>>
>> Example output:
>>
>>
>> from to size rss hugetlb pgsz prot notes vm info/file
>> 0x00000000c0000000 - 0x00000000ffe00000 1071644672 0 4194304 2M rw-p huge JAVAHEAP /anon_hugepage
>> 0x00000000ffe00000 - 0x0000000100000000 2097152 0 0 2M rw-p huge JAVAHEAP /anon_hugepage
>> 0x0000558016b67000 - 0x0000558016b68000 4096 4096 0 4K r--p /shared/projects/openjdk/jdk-jdk/output-fastdebug/images/jdk/bin/java
>> 0x0000558016b68000 - 0x0000558016b69000 4096 4096 0 4K r-xp /shared/projects/openjdk/jdk-jdk/output-fastdebug/images/jdk/bin/java
>> 0x00007f3a749f2000 - 0x00007f3a74c62000 2555904 2555904 0 4K rwxp CODE(CodeHeap 'profiled nmethods')
>> 0x00007f3a74c62000 - 0x00007f3a7be51000 119468032 0 0 4K ---p nores CODE(CodeHeap 'profiled nmethods')
>> 0x00007f3a7be51000 - 0x00007f3a7c1c1000 3604480 3604480 0 4K rwxp CODE(CodeHeap 'profiled nmethods')
>> 0x00007f3a7c1c1000 - 0x00007f3a7c592000 4001792 0 0 4K ---p nores CODE(CodeHeap 'non-nmethods')
>> 0x00007f3a7c592000 - 0x00007f3a7c802000 2555904 2555904 0 4K rwxp CODE(CodeHeap 'non-profiled nmethods') ...
>
> src/hotspot/os/linux/memMapPrinter_linux.cpp line 276:
>
>> 274: }
>> 275:
>> 276: FILE* f = os::fopen("/proc/self/smaps", "r");
>
> We have seen that reading the smaps file can be extremely bad for the latency of the process. We've seen multi-seconds hangs because of external tools reading smaps. If we add a tool like this it would be good to add a big warning somewhere.
That is a good point, and I was afraid of that myself.
I think I will revise this coding and give the command a "detail" mode, and read smaps (with a warning in the "cost" jcmd category) only in details mode. In normal mode, "maps" is sufficient. And in summary mode I can get probably away with reading stat.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/17158#discussion_r1435128384
More information about the hotspot-dev
mailing list