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