Linux系统下,CPU信息详解(cpuinfo,多核,多线程)

本文介绍如何使用cat /proc/cpuinfo命令获取Linux系统中CPU的详细信息,包括逻辑CPU数量、物理CPU数量、每个物理CPU中的核心数量等,并提供判断是否支持超线程及64位的技巧。

Linux系统下,CPU信息详解(cpuinfo,多核,多线程)  


在Linux系统中,如何详细了解CPU的信息呢? 当然是通过cat /proc/cpuinfo来检查了,但是比如几个物理CPU/几核/几线程,这些问题怎么确定呢?
经过查看,我的开发机器是1个物理CPU,4核8线程,Intel(R) Core(TM) i7 CPU 860  @ 2.80GHz
记录一下,判断的过程和知识。
判断依据:
1.具有相同core id的cpu是同一个core的超线程。
2.具有相同physical id的cpu是同一颗cpu封装的线程或者cores。
英文版:
1.Physical id and core id are not necessarily consecutive but they are unique. Any cpu with the same core id are hyperthreads in the same core.
2.Any cpu with the same physical id are threads or cores in the same physical socket.
echo "logical CPU number:"
#逻辑CPU个数
cat /proc/cpuinfo | grep "processor" | wc -l
echo "physical CPU number:"
#物理CPU个数:
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
echo "core number in a physical CPU:"
#每个物理CPU中Core的个数:
cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F: '{print $2}'
#查看每个physical cpu上core id的数量,即为每个物理CPU上的core的个数
cat /proc/cpuinfo | grep "core id"
#是否为超线程?
#如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。
#每个物理CPU中逻辑CPU(可能是core, threads或both)的个数:
cat /proc/cpuinfo | grep "siblings"
/proc/cpuinfo 文件包含系统上每个处理器的数据段落。/proc/cpuinfo 描述中有 6 个条目适用于多内核和超线程(HT)技术检查:processor, vendor id, physical id, siblings, core id 和 cpu cores。
processor 条目包括这一逻辑处理器的唯一标识符。
physical id 条目包括每个物理封装的唯一标识符。
core id 条目保存每个内核的唯一标识符。
siblings 条目列出了位于相同物理封装中的逻辑处理器的数量。
cpu cores 条目包含位于相同物理封装中的内核数量。
如果处理器为英特尔处理器,则 vendor id 条目中的字符串是 GenuineIntel。
1.拥有相同 physical id 的所有逻辑处理器共享同一个物理插座。每个 physical id 代表一个唯一的物理封装。
2.Siblings 表示位于这一物理封装上的逻辑处理器的数量。它们可能支持也可能不支持超线程(HT)技术。
3.每个 core id 均代表一个唯一的处理器内核。所有带有相同 core id 的逻辑处理器均位于同一个处理器内核上。
4.如果有一个以上逻辑处理器拥有相同的 core id 和 physical id,则说明系统支持超线程(HT)技术。
5.如果有两个或两个以上的逻辑处理器拥有相同的 physical id,但是 core id 不同,则说明这是一个多内核处理器。cpu cores 条目也可以表示是否支持多内核。
判断CPU是否64位,检查cpuinfo中的flags区段,看是否有lm标识。
Are the processors 64-bit?   
A 64-bit processor will have lm ("long mode") in the flags section of cpuinfo. A 32-bit processor will not.

Linux系统中,计算CPU利用率是一个复杂的过程,尤其是在多核多线程的情况下。/proc文件系统提供了必要信息来计算CPU利用率。特别是/proc/stat和/proc/cpuinfo文件包含了关于处理器和CPU使用状态的关键数据。要准确计算多核CPU的利用率,我们需要理解每个文件提供的信息以及如何分析这些信息。 参考资源链接:[Linux系统CPU利用率计算详解](https://wenku.csdn.net/doc/1wapgv23r8?spm=1055.2569.3001.10343) 首先,/proc/stat文件提供了自系统启动以来的CPU状态统计信息。其中'cpu'行包括了用户态时间(user)系统态时间(system)、空闲时间(idle)、等待I/O时间(iowait)、硬中断时间(irq)和软中断时间(softirq)等字段。这些字段是理解CPU利用率的关键。 对于多核处理器系统,/proc/cpuinfo文件同样重要。它列出了每个CPU核心的详细信息。我们可以通过processor字段来识别不同的逻辑CPU核心。在多核或支持超线程的处理器中,每个逻辑CPU核心都会在/proc/stat文件中有一个对应的'cpuX'行。 为了计算多核CPU利用率,我们需要对所有逻辑核心的'cpuX'行进行分析。我们首先记录下每个核心的user、system、idle时间等。在等待一个固定时间间隔后,再次记录这些时间点。利用记录的时间差值,我们可以计算出这段时间内CPU的总使用时间和总空闲时间,进而得出CPU利用率。 具体到编程实现,可以通过读取/proc/stat文件,并解析其中的用户时间、系统时间等字段,再结合时间差分方法来计算出CPU的利用率。在Linux中,可以使用C/C++或Python等语言通过文件I/O来读取/proc文件系统中的数据,并进行必要的数值计算。 在计算过程中,还需要注意系统中可能存在的虚拟核心(如超线程技术产生的核心)。这些虚拟核心虽然不是物理上的核心,但在操作系统看来它们是独立的逻辑核心,因此也需要被纳入到CPU利用率的计算中。 《Linux系统CPU利用率计算详解》这本资料详细介绍了Linux CPU利用率的计算方法,并涵盖了/proc文件系统的使用,对于理解和实施CPU利用率的计算有着极大的帮助。通过这本书,你可以获得深入的理解和实践指导,从而在Linux系统监控和性能优化方面迈出坚实的步伐。 参考资源链接:[Linux系统CPU利用率计算详解](https://wenku.csdn.net/doc/1wapgv23r8?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值