我通常运行Runtime#availableProcessors
来确定Windows计算机上有多少个内核,它工作正常。结果与我从控制面板中找到的结果一致。
但是,当我在 Linux 服务器上应用 API 时,它返回 1
.据我所知,服务器功能更强大,对我来说它是一个单一的CPU系统没有意义。
我做了一些搜索,发现Linux盒子是Intel(R) Xeon(R) CPU X5675 @ 3.07GHz
,谷歌搜索显示它有6
CPU内核。
那么问题来了,Runtime#availableProcessors
为什么要误报?这是一个错误吗?
谢谢
John
这是/proc/cpuinfo
的全部输出
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 44
model name : Intel(R) Xeon(R) CPU X5675 @ 3.07GHz
stepping : 2
cpu MHz : 3059.000
cache size : 12288 KB
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc up ida nonstop_tsc arat pni ssse3 cx16 sse4_1 sse4_2 popcnt lahf_lm
bogomips : 6118.00
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: [8]
它必须是服务器的配置方式(也许你在 VM 中运行(。当我在我的个人 Linux 笔记本电脑上运行时,
public static void main(String[] args) {
System.out.println(Runtime.getRuntime().availableProcessors());
}
我得到
4
因为这台机器有四个核心。cat /proc/cpuinfo
报告相同。