你真的会看Linux硬件信息?【补盲】
最近在研究Linux系统负载的时候,接触到一些关于CPU信息查看的知识,和大家分享一下。通过对/proc/cpuinfo文件中的参数的分析,也学到了不少东西。
在Linux操作系统中,CPU的信息在启动过程中被装载到虚拟目录/proc下的cpuinfo文件中,可通过cat /proc/cpuinfo查看一下:
在这个服务器上,physical id 全是0,也就是物理CPU有1个,核心标识(core id)数量有8个, 每个CPU的核心数量 'cpu cores' 为8,siblings的值为16,总共有16个processor,也就是逻辑核心是16。
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
#查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
#查看内存信息
free -g
cat /proc/meminfo|head -1
上图是本人机器的CPU信息,下面我们来分析其中几个比较重要的指标:
processor 逻辑处理器的id。
physical id 物理封装的处理器的id。
core id 每个核心的id。
cpu cores 位于相同物理封装的处理器中的内核数量。
siblings 位于相同物理封装的处理器中的逻辑处理器的数量。
返回去看上图,physical id都为0,说明只有一个物理处理器;
processor有两个不同的编号,并且同属于一个physical id,同时cpu cores值为2,这也就说明了CPU是双核心的,并且每个核心只有一个逻辑处理器。
所以这个服务器主机的CPU为1个物理封装的处理器,每个处理器又有8个处理核心(cpu cores),每个cpu core有可划分为2个逻辑处理器(超线程技术),因此,每个物理处理器上有16个逻辑处理器,总共就有16个processor。这回明白了吧。
① 物理CPU
实际服务器中插槽上的CPU个数
是指物理上,也就是硬件上存在着几颗物理cpu,指的是真实存在是cpu处理器的个数,1个代表一颗,2个代表2颗cpu处理器。
物理cpu数量,可以数不重复的 physical id 有几个
② 逻辑CPU
Linux用户对 /proc/cpuinfo 这个文件肯定不陌生. 它是用来存储cpu硬件信息的
信息内容分别列出了processor 0 – n 的规格。这里需要注意,如果你认为n就是真实的cpu数的话, 就大错特错了
一般情况,我们认为一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上再分一倍数量的cpu core出来,这时逻辑CPU数就是核心数的两倍了
逻辑CPU数量=物理cpu数量 x cpu cores 这个规格值 x 2(如果支持并开启ht)
备注一下:Linux下top按1后 查看的CPU也是逻辑CPU个数
③ CPU核数
一块CPU上面能处理数据的芯片组的数量、比如现在的i5 760,是双核心四线程的CPU、而 i5 2250 是四核心四线程的CPU
核心数:一个核心就是一个物理线程,英特尔有个超线程技术可以把一个物理线程模拟出两个线程来用,充分发挥CPU性能,意思是一个核心可以有多个线程。
线程数:线程数是一种逻辑的概念,简单地说,就是模拟出的CPU核心数。比如,可以通过一个CPU核心数模拟出2线程的CPU,也就是说,这个单核心的CPU被模拟成了一个类似双核心CPU的功能。
一般来说,物理CPU个数×每颗核数就应该等于逻辑CPU的个数,如果不相等的话,则表示服务器的CPU支持超线程技术
查看CPU信息
vendor id 如果处理器为英特尔处理器,则字符串是 Genuine Intel。
processor 包括这一逻辑处理器的唯一标识符。
physical id 包括每个物理封装的唯一标识符。
core id 保存每个内核的唯一标识符。
siblings 列出了位于相同物理封装中的逻辑处理器的数量。
cpu cores 包含位于相同物理封装中的内核数量。
拥有相同 physical id 的所有逻辑处理器共享同一个物理插座,每个 physical id 代表一个唯一的物理封装。
Siblings 表示位于这一物理封装上的逻辑处理器的数量,它们可能支持也可能不支持超线程(HT)技术。
每个 core id 均代表一个唯一的处理器内核,所有带有相同 core id 的逻辑处理器均位于同一个处理器内核上。简单的说:“siblings”指的是一个物理CPU有几个逻辑 CPU,”cpu cores“指的是一个物理CPU有几个核。
如果有一个以上逻辑处理器拥有相同的 core id 和 physical id,则说明系统支持超线程(HT)技术。
如果有两个或两个以上的逻辑处理器拥有相同的 physical id,但是 core id不同,则说明这是一个多内核处理器。cpu cores条目也可以表示是否支持多内核。
Linux下关于物理CPU、逻辑CPU和CPU核数、超线程
1、概念
(1) 【物理CPU数】 :实际Server中插槽上的CPU个数,物理cpu数量可以数不重复的 physical id 有几个 (physical id)
(2) 【CPU核数】:单块CPU上面能处理数据的芯片组的数量,如双核、四核等 (cpu cores)
(3)【逻辑CPU数】:一般情况下,逻辑cpu=物理CPU个数×每颗核数,如果不相等的话,则表示服务器的CPU支持超线程技术(HT:简单来说,它可使处理器中的1 颗内核如2 颗内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能,此时逻辑cpu=物理CPU个数×每颗核数x2)
(4)【超线程】:超线程(Hyper-Threading,简称“HT”)”技术。超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。
超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程,虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。
查看整体软硬件信息+状态的快捷Bash:
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
physicalNumber=0
coreNumber=0
logicalNumber=0
HTNumber=0
logicalNumber=$(grep "processor" /proc/cpuinfo|sort -u|wc -l)
physicalNumber=$(grep "physical id" /proc/cpuinfo|sort -u|wc -l)
coreNumber=$(grep "cpu cores" /proc/cpuinfo|uniq|awk -F':' '{print $2}'|xargs)
HTNumber=$((logicalNumber / (physicalNumber * coreNumber)))
cpuName=$(cat /proc/cpuinfo|grep name| sort|uniq -c)
echo -e "\033[33m****** CPU Information ******\033[0m"
echo "CPU Name: ${cpuName}"
echo "Logical CPU Number : ${logicalNumber}"
echo "Physical CPU Number : ${physicalNumber}"
echo "CPU Core Number : ${coreNumber}"
echo "HT Number : ${HTNumber}"
top -b |head -n 3
echo -e "\033[33m****** MEM Information ******\033[0m"
free -m
echo -e "\033[33m****** DISK Information ******\033[0m"
df -h
echo -e "\033[33m****** NETWORK Information ******\033[0m"
ifconfig|grep -w inet -B1 -A6
echo -e "\033[33m****** SYS Information ******\033[0m"
cat /proc/version
cat /etc/os-release
本文来自博客园,作者:sunsky303,转载请注明原文链接:https://www.cnblogs.com/sunsky303/p/17248438.html