当然我们知道cat /proc/cpuinfo |grep "cpu cores"
会给出一个输出
[root@14:47 ~]# cat /proc/cpuinfo |grep "cpu cores"
cpu cores : 2
cpu cores : 2
cpu cores : 2
cpu cores : 2
Run Code Online (Sandbox Code Playgroud)
但实际上我想获得 cpu 内核的总数。我希望结果是
cpu cores: 8
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这样的结果?
ss_*_*iwe 11
尝试这个,
按照 man lscpu
CORE The logical core number. A core can contain several CPUs.
SOCKET The logical socket number. A socket can contain several cores.
Run Code Online (Sandbox Code Playgroud)
cores
以及sockets
是物理的,CPU(s)
逻辑数也是。因此,要找到您的系统拥有的核心数,请执行以下操作number of cores x number of sockets
的示例输出lscpu
如下:
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
Run Code Online (Sandbox Code Playgroud)
所以总人数 cores: 16
的总数CPU(s): 32
(因为threads
每个core
是2
)
正如@Durga 提到的,nproc
给出的CPUs
.
如需更多信息,请参阅本答案,得到的解释/proc/cpuinfo
是指该
我要感谢 @ Kusalananda帮助我理解相同的内容。
如果你只对 sum 感兴趣,你也可以使用 GNU awk:
cat /proc/cpuinfo |grep "cpu cores" | awk -F: '{ num+=$2 } END{ print "cpu cores", num }'
Run Code Online (Sandbox Code Playgroud)
编辑:这是 OP 对最后一列的数字求和的意图的正确答案。然而,关于找出机器上有多少个内核(物理/虚拟)的问题在该问题的其他答案中给出。
如果你有 glibc 和一个相当新的内核,你可以使用
getconf _NPROCESSORS_ONLN
Run Code Online (Sandbox Code Playgroud)
返回当前在线1处理器的数量。这包括虚拟和超线程处理器。
1在大多数系统上,这将与总处理器数相同。一个或多个处理器因某种原因(例如,由于故障或由于租用/许可硬件等人为限制)而禁用的系统或支持“热插拔”CPU、添加了新 CPU 但尚未启用的系统除外。
归档时间: |
|
查看次数: |
27399 次 |
最近记录: |