linux 的cpu 信息及线程相关的信息储存于/proc/cpuinfo 文件中,我们可以根据名称查看。参考:https://www.cnblogs.com/yoyoblogs/p/11289981.html参考:https://baijiahao.baidu.com/s?id=1601592414830352193&wfr=spider&for=pc
背景知识
参考:https://zhuanlan.zhihu.com/p/86855590
物理 cpu 数(physical cpu)
指主板上实际插入的 cpu 硬件个数(socket)。(但是这一概念经常被泛泛的说成是 cpu 数,这很容易导致与 core 数,processor 数等概念混淆,所以此处强调是物理 cpu 数)。由于在主板上引入多个 cpu 插槽需要更复杂的硬件支持(连接不同插槽的 cpu 到内存和其他资源),通常只会在服务器上才这样做。在家用电脑中,一般主板上只会有一个 cpu 插槽。
主频 /Hz
这个表示的是CPU 内核心的时钟频率,我们可以将其理解为运算速度。
类比于人类,可以理解为,主频越高,力量越大。
image核心(core)
一开始,每个物理 cpu 上只有一个核心(a single core),对操作系统而言,也就是同一时刻只能运行一个进程/线程。为了提高性能,cpu 厂商开始在单个物理 cpu 上增加核心(实实在在的硬件存在),也就出现了双核心 cpu(dual-core cpu)以及多核心 cpu(multiple cores),这样一个双核心 cpu 就是同一时刻能够运行两个进程/线程的。
线程 (thread)
同时多线程技术(simultaneous multithreading)和 超线程技术(hyper–threading/HT)
本质一样,是为了提高单个 core 同一时刻能够执行的多线程数的技术(充分利用单个 core 的计算能力,尽量让其“一刻也不得闲”)。simultaneous multithreading 缩写是 SMT,AMD 和其他 cpu 厂商的称呼。hyper–threading 是 Intel 的称呼,可以认为 hyper–threading 是 SMT 的一种具体技术实现。在类似技术下,产生了如下等价术语:
- 虚拟 core:virtual core
- 逻辑 processer:logical processor
- 线程:thread
所以可以这样说:某款采用 SMT 技术的 4 核心 AMD cpu 提供了 8 线程同时执行的能力;某款采用 HT 技术的 2 核心 Intel cpu 提供了 4 线程同时执行的能力。
查看信息
- cpu个数
通过physical id 记录:
grep 'physical id' /proc/cpuinfo | sort -u
# -u 相当于uniq 处理
或者直接显示计数:
grep 'physical id' /proc/cpuinfo | sort -u | wc -l
2
- 核心数
我们可以直接查看每个物理cpu 的:
$ grep 'cpu cores' /proc/cpuinfo | sort -u
cpu cores : 24
看一下核心中的记录情况:
$ grep 'core id' /proc/cpuinfo
core id : 0
core id : 1
core id : 2
core id : 3
core id : 4
core id : 5
core id : 6
core id : 8
core id : 10
core id : 11
core id : 12
core id : 13
core id : 16
core id : 17
core id : 18
core id : 19
core id : 20
core id : 21
core id : 24
core id : 25
core id : 26
core id : 27
core id : 28
core id : 29
core id : 0
core id : 1
core id : 2
core id : 3
core id : 4
core id : 5
core id : 6
core id : 8
core id : 9
core id : 10
core id : 11
core id : 12
core id : 13
core id : 16
core id : 17
core id : 18
core id : 19
core id : 20
core id : 21
core id : 25
core id : 26
core id : 27
core id : 28
core id : 29
core id : 0
core id : 1
core id : 2
core id : 3
core id : 4
core id : 5
core id : 6
core id : 8
core id : 10
core id : 11
core id : 12
core id : 13
core id : 16
core id : 17
core id : 18
core id : 19
core id : 20
core id : 21
core id : 24
core id : 25
core id : 26
core id : 27
core id : 28
core id : 29
core id : 0
core id : 1
core id : 2
core id : 3
core id : 4
core id : 5
core id : 6
core id : 8
core id : 9
core id : 10
core id : 11
core id : 12
core id : 13
core id : 16
core id : 17
core id : 18
core id : 19
core id : 20
core id : 21
core id : 25
core id : 26
core id : 27
core id : 28
core id : 29
不难发现,core 的记录发生了重复,推测是由于physical id 设置了相同的名称,因此记录核心时就发生了重复。因此认为文件中记录的 24 核心更加准确。
- 查看线程数
通过processor 记录:
grep 'processor' /proc/cpuinfo | sort -u | wc -l
96
可知服务器有两个cpu,每个cpu为24核心,一共48个核心,96线程,每个核心有2个线程。
- lscpu
可以直接查看计算机的cpu信息:
Address sizes: 46 bits physical, 48 bits virtual
CPU(s): 96
On-line CPU(s) list: 0-95
Thread(s) per core: 2
Core(s) per socket: 24
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz
网友评论