NUMA 机器上 JVM 怎么分配内存、-XX:+UseNUMA 起什么作用?这篇说清楚一件事:在没有 NUMA 的机器上能验证什么,不能验证什么。能验证的部分(参数被接受、日志、默认值、ActiveProcessorCount)逐项给出。
hw.packages = 1
hw.physicalcpu = 10
hw.logicalcpu = 10
hw.memsize = 17179869184
hw.nperflevels = 2
sysctl 里名字含 numa 的项: 没有
命令是否存在: {'numactl': False, 'lscpu': False, 'numastat': False, 'taskset': False}JDK 21 UseSerialGC rc=0 NUMA 相关日志:['NUMA Support: Disabled'] JDK 21 UseParallelGC rc=0 NUMA 相关日志:['NUMA Support: Disabled'] JDK 21 UseG1GC rc=0 NUMA 相关日志:['NUMA Support: Disabled'] JDK 21 UseZGC rc=0 NUMA 相关日志:['NUMA Support: Disabled'] JDK 21 UseShenandoahGC rc=0 NUMA 相关日志:['NUMA Support: Disabled'] JDK 27 UseSerialGC rc=0 NUMA 相关日志:['NUMA Support: Disabled'] JDK 27 UseParallelGC rc=0 NUMA 相关日志:['NUMA Support: Disabled'] JDK 27 UseG1GC rc=0 NUMA 相关日志:['NUMA Support: Disabled'] JDK 27 UseZGC rc=0 NUMA 相关日志:['NUMA Support: Disabled'] JDK 27 UseShenandoahGC rc=0 NUMA 相关日志:['NUMA Support: Disabled']
JDK 21: {'NUMAChunkResizeWeight': '20', 'NUMAInterleaveGranularity': '2097152', 'NUMAPageScanRate': '256', 'NUMASpaceResizeRate': '1073741824', 'UseNUMA': 'false', 'UseNUMAInterleaving': 'false'}
JDK 27: {'NUMAChunkResizeWeight': '20', 'NUMAInterleaveGranularity': '2097152', 'NUMASpaceResizeRate': '1073741824', 'UseNUMA': 'false', 'UseNUMAInterleaving': 'false'}默认: availableProcessors=10,commonPool 并行度=9 -XX:ActiveProcessorCount=1 : availableProcessors=1,commonPool 并行度=1 ; G1 GC 线程数:1 -XX:ActiveProcessorCount=2 : availableProcessors=2,commonPool 并行度=1 ; G1 GC 线程数:2 -XX:ActiveProcessorCount=4 : availableProcessors=4,commonPool 并行度=3 ; G1 GC 线程数:4 -XX:ActiveProcessorCount=16: availableProcessors=16,commonPool 并行度=15 ; G1 GC 线程数:13