RFR: 8205051: UseNUMA memory interleaving vs cpunodebind & localalloc
Swati Sharma
duke at openjdk.org
Wed Nov 27 11:06:09 UTC 2024
Hi All,
The PR handles the performance issues related to flag UseNUMA. We disable the UseNUMA flag when the process gets invoked with incorrect node alignment.
We check the cpunodebind and membind(or interleave for interleave policy) bitmask equality and disable UseNUMA when they are not equal.
For example on a 4 NUMA node system:
0123 Node Number
1100 cpunodebind bitmask
1111 membind bitmask
Disable UseNUMA as CPU and memory bitmask are not equal.
0123 Node Number
1100 cpunodebind bitmask
1100 membind bitmask
Enable UseNUMA as CPU and memory bitmask are equal.
This covers all the cases with all policies and tested this with below command
numactl --cpunodebind=0,1 --localalloc java -Xlog:gc*=info -XX:+UseParallelGC -XX:+UseNUMA -version
For localalloc and preferred policies the membind bitmask returns true for all nodes, hence if cpunodebind is not bound to all nodes then the UseNUMA will be disabled.
This PR covers disabling the UseNUMA flag for all GC's hence we observed an improvement of ~25% on G1GC , ~20% on ZGC and ~7-8% on PGC in both throughput and latency on SPECjbb2015 on a 2 NUMA node SRF-SP system with 6Group configuration.
Please review and provide your valuable comments.
Thanks,
Swati Sharma
Intel
-------------
Commit messages:
- 8205051: Fixed whitespaces
- 8205051: UseNUMA memory interleaving vs cpunodebind & localalloc
Changes: https://git.openjdk.org/jdk/pull/22395/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22395&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8205051
Stats: 31 lines in 2 files changed: 27 ins; 2 del; 2 mod
Patch: https://git.openjdk.org/jdk/pull/22395.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/22395/head:pull/22395
PR: https://git.openjdk.org/jdk/pull/22395
More information about the hotspot-runtime-dev
mailing list