CPU核心数与线程数
CPU 的线程数概念仅仅只针对 Intel 的 CPU 才有用,因为它是通过 Intel 超线程技术来实现的,最早应用在 Pentium4 上。如果没有超线程技术,一个 CPU 核心对应一个线程(因此对于一个CPU,线程数总是大于或等于核心数的)。所以,对于 AMD 的 CPU 来说,只有核心数的概念,没有线程数的概念。
CPU 之所以要增加线程数,是源于多任务处理的需要:线程数越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间 CPU 能同时并行处理的任务数。
因此,线程数是一种逻辑的概念,简单地说,就是模拟出的 CPU 核心数。一个核心最少对应一个线程,但英特尔有个超线程技术可以把一个物理线程模拟出两个线程来用,充分发挥 CPU 性能,即一个核心可以有两个到多个线程。
㈠ 概念
- 物理CPU
实际Server中插槽上的CPU个数
物理cpu数量,可以数不重复的 physical id 有几个- 逻辑CPU
Linux用户对 /proc/cpuinfo 这个文件肯定不陌生. 它是用来存储cpu硬件信息的
信息内容分别列出了processor 0 – n 的规格。这里需要注意,如果你认为n就是真实的cpu数的话, 就大错特错了
一般情况,我们认为一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上再分一倍数量的cpu core出来
逻辑CPU数量=物理cpu数量 x cpu cores 这个规格值 x 2(如果支持并开启ht)
备注一下:Linux下top查看的CPU也是逻辑CPU个数- CPU核数
一块CPU上面能处理数据的芯片组的数量、比如现在的i5 760,是双核心四线程的CPU、而 i5 2250 是四核心四线程的CPU
一般来说,物理CPU个数×每颗核数就应该等于逻辑CPU的个数,如果不相等的话,则表示服务器的CPU支持超线程技术
㈡ 查看CPU信息
lscpu
查看CPU的统计信息
/proc/cpuinfo 查看每个CPU具体信息
当我们 cat /proc/cpuinfo 时
具有相同core id的CPU是同一个core的超线程
具有相同physical id的CPU是同一个CPU封装的线程或核心
# 查看 cpu 型号
# dmidecode -s processor-version
Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
# 查看 cpu 个数
# grep 'physical id' /proc/cpuinfo |sort|uniq|wc -l
2
# 查看核心数
# grep 'core id' /proc/cpuinfo |sort|uniq|wc -l
2
# cat /proc/cpuinfo |grep "cores"|uniq
2
# 查看线程数
# grep 'processor' /proc/cpuinfo |sort|uniq|wc -l
4
参考:
https://blog.csdn.net/dba_waterbin/article/details/8644626
http://durant35.github.io/2017/05/16/hsw_CPUWipeoutIlliteracy/
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 using1174@foxmail.com
文章标题: CPU核心数与线程数
文章字数: 730
本文作者: Jun
发布时间: 2018-07-19, 22:03:00
最后更新: 2019-01-24, 15:11:43
原始链接: http://yoursite.com/2018/07/19/CPU核心数与线程数/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。