Answers:
nproc
是您要寻找的。
此处更多信息:http : //www.cyberciti.biz/faq/linux-get-number-of-cpus-core-command/
nproc
在我的ubuntu VM上有,但在基于RedHat 5.5的计算机上没有。
nproc --all
对于所有已安装的处理单元。不使用时--all
,nproc
仅显示当前进程可用的处理单元。阅读手册页以获取更多详细信息。MMV。
最简单的工具随glibc一起提供,称为getconf
:
$ getconf _NPROCESSORS_ONLN
4
nproc
,这在Mac os x上默认起作用。
_NPROCESSORS_ONLN
其输出中列出了(或任何带有cpu,proc等的东西)。我希望它可以在Linux / Solaris上运行,因为它是posix工具,因此我不必使用分支。
如果要这样做,使其可以在linux和OS X上运行,则可以执行以下操作:
CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu)
psrinfo -p
代替
在较新的内核上,您也可以使用/sys/devices/system/cpu/
接口获取更多信息:
$ ls /sys/devices/system/cpu/
cpu0 cpufreq kernel_max offline possible present release
cpu1 cpuidle modalias online power probe uevent
$ cat /sys/devices/system/cpu/kernel_max
255
$ cat /sys/devices/system/cpu/offline
2-63
$ cat /sys/devices/system/cpu/possible
0-63
$ cat /sys/devices/system/cpu/present
0-1
$ cat /sys/devices/system/cpu/online
0-1
有关所有这些含义的更多信息,请参见官方文档。
online
文件比nproc的操作更简单)
当有人问“处理器/核数”时,有2个答案被要求。“处理器”的数量将是计算机插槽中安装的物理数量。
“核心”的数量将是物理核心。至少不包括超线程(虚拟)内核。作为使用线程池编写大量程序的人,您确实需要了解物理内核与内核/超线程的数量。也就是说,您可以修改以下脚本来获取所需的答案。
#!/bin/bash
MODEL=`cat /cpu/procinfo | grep "model name" | sort | uniq`
ALL=`cat /proc/cpuinfo | grep "bogo" | wc -l`
PHYSICAL=`cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l`
CORES=`cat /proc/cpuinfo | grep "cpu cores" | sort | uniq | cut -d':' -f2`
PHY_CORES=$(($PHYSICAL * $CORES))
echo "Type $MODEL"
echo "Processors $PHYSICAL"
echo "Physical cores $PHY_CORES"
echo "Including hyperthreading cores $ALL"
在具有2个型号Xeon X5650物理处理器的计算机上的结果,每个物理处理器具有6个还支持超线程的物理核心:
Type model name : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz
Processors 2
Physical cores 12
Including hyperthreading cores 24
在装有2个mdeol Xeon E5472处理器的计算机上,每个处理器具有4个不支持超线程的物理内核
Type model name : Intel(R) Xeon(R) CPU E5472 @ 3.00GHz
Processors 2
Physical cores 8
Including hyperthreading cores 8
util-linux项目lscpu(1)
提供的命令也可能有用:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 58
Model name: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
Stepping: 9
CPU MHz: 3406.253
CPU max MHz: 3600.0000
CPU min MHz: 1200.0000
BogoMIPS: 5787.10
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 4096K
NUMA node0 CPU(s): 0-3