RFR: JDK-8326586: Improve Speed of System.map
Thomas Stuefe
stuefe at openjdk.org
Mon Feb 26 08:05:53 UTC 2024
On Mon, 26 Feb 2024 07:56:42 GMT, Johan Sjölen <jsjolen at openjdk.org> wrote:
>> A small optimization that speeds up `jcmd pid System.map` by orders of magnitude by optimizing NMT cache lookup for sequential accesses. This cache is used to map NMT against System information - and the latter usually comes in sequential form, e.g. scanned from `/proc/<pid>/maps` or via VirtualQuery.
>>
>> On Linux x64, `System.map`for a JVM with an artificially bloated process space (1 million mappings) takes:
>>
>> before this patch: 6.3 minutes
>> with this patch: 4.2 seconds
>>
>> which is a 87x speed improvement.
>>
>> Ping @jdksjolen and @gerard-ziemski?
>
> src/hotspot/share/nmt/memMapPrinter.cpp line 134:
>
>> 132: // of OS mappings is scanned (VirtualQuery, /proc/pid/maps), and these lists
>> 133: // are usually sorted in order of addresses, ascending.
>> 134: static uintx last = 0;
>
> Sorry, I should've caught this when we first reviewed this, but why are we using `uintx` instead of `uintptr_t`?
Technically these are the same. I tend to prefer `uintx` when its indexes, not addresses, they designate. As in "things you count" vs "things you point to".
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/17984#discussion_r1502176638
More information about the hotspot-runtime-dev
mailing list