我在 8 节点 NUMA 机器上运行 Java 1.6 进程,使用:
numactl --cpunodebind=0 java -server com.foo.Bar
每个节点有 8 个 CPU,报告如下numactl --hardware
:
available: 8 nodes (0-7)
node 0 cpus: 1 2 3 4 5 6 7 8
node 0 size: ...
node 0 free: ...
node 1 cpus: 9 10 11 12 13 14 15 16
node 1 size: ...
node 1 free: ...
...
node 7 cpus: 56 57 58 59 60 61 62 63
node 7 size: ...
node 7 free: ...
函数调用Runtime.getRuntime().availableProcessors()
返回64
。
尽管有限制,为什么Runtime
进程的对象报告 64 个可用处理器?cpunodebind
有没有办法获得 Java 进程可用的实际处理器数量?