获取Linux中的处理器/内核数量
Contents
1. 概述
在本教程中,我们将研究检查 Linux 机器中可用处理器或内核数量的方法。我们将仔细研究一些可用于此目的的 Bash 实用程序和系统文件。
2. lscpu实用程序
首先,让我们检查一下lscpu 命令的默认输出:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 39 bits physical, 48 bits virtual
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 142
Model name: Intel(R) Core(TM) i5-10310U CPU @ 1.70GHz
...
这里,** CPU(s)值表示逻辑核心数,在我们的输出中等于8 。
逻辑核心数等于“每个核心的线程数” × “每个插槽的核心数” × “插槽数”,机器上的物理核心数等于 “每个插槽的核心数” × “插槽数”。
根据上面的输出,我们可以推断出我们的机器有4 个物理内核,并且由于启用了超线程(“每个内核的线程数”等于2),我们得到了8个逻辑内核。
我们还检查一下直接获取机器上物理内核数的命令:
$ lscpu -b -p=Core,Socket | grep -v '^#' | sort -u | wc -l
4
在这里,我们使用*-p选项仅解析“Core”和“Socket”列。除此之外,我们还使用-b*选项将输出限制为仅在线 CPU。
3. /proc/cpuinfo文件
lscpu实用程序从**/proc/cpuinfo 文件中获取其信息,该文件包含所有逻辑内核或处理器的处理器信息**:
$ cat /proc/cpuinfo | egrep "processor|core id"
processor : 0
core id : 0
processor : 1
core id : 0
processor : 2
core id : 1
processor : 3
core id : 1
processor : 4
core id : 2
processor : 5
core id : 2
processor : 6
core id : 3
processor : 7
core id : 3
因此,让我们根据*/proc/cpuinfo*文件的内容来获取一台机器上的逻辑核心数:
$ grep --count ^processor /proc/cpuinfo
8
此外,我们还可以通过计算唯一核心 ID 的数量来获得机器上的物理核心数量:
$ grep ^"core id" /proc/cpuinfo | sort -u | wc -l
4
4. 其他选择
我们可以使用其他一些命令来获取处理器信息。让我们来看看。
4.1. nproc命令
让我们使用nproc实用程序检查系统上可用的处理器数量:
$ nproc --all
8
在这里,我们在这里使用了*–all*选项来打印已安装处理器的数量。
4.2. 使用getconf 查询
我们可以使用getconf命令查询配置的处理器值:
$ getconf -a | grep PROCESSORS
_NPROCESSORS_CONF 8
_NPROCESSORS_ONLN 8
在这种情况下,-a选项列出了系统的所有配置变量及其值。或者,我们也可以只查询与处理器相关的参数。因此,让我们检查配置的处理器数量:
$ getconf _NPROCESSORS_CONF
8
并且,在线处理器的数量:
$ getconf _NPROCESSORS_ONLN
8