物理CPU、物理核和逻辑核的区分

理解CPU负载与核数
本文解释了CPU平均负载的概念,并非直接反映CPU使用率,而是指一段时间内等待处理的任务数量。文中还详细介绍了如何通过查看/proc/cpuinfo文件来区分物理CPU、物理核与逻辑核的数量。

之前看到一篇关于cpu load Average:CPU平均负载值的文章,想起之前的在物理核,逻辑核上面的问题,这里留下点Memory。
CPU Load Average是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。其实我们一般使用的vmstat中有瞬时的cpu队列数参考。

回到重点物理CPU、物理核和逻辑核
物理CPU(即板子上插了多少个宏观的CPU芯片)、物理核(CPU中包含的物理内核个数)以及逻辑核(用SMT技术将物理核虚拟而成的逻辑处理单元)的判断依据:
在/proc/cpuinfo文件的条目中:
1.有多少个不同的physical id就有多少个物理CPU。
2.cpu cores记录了对应的物理CPU(以该条目中的physical id标识)有多少个物理核。
3.siblings记录了对应的物理CPU(以该条目中的physical id标识)有多少个逻辑核。

通过执行以下命令,可以得到物理CPU数目及各自包含多少个物理核:
cat /proc/cpuinfo | grep -E "physical id|cpu cores" | sed 'N;s/\n/ /' | sort | uniq
假设输出如下,则表示有两个物理CPU,各自包含4个物理核:
physical id : 0 cpu cores : 4
physical id : 1 cpu cores : 4

通过执行以下命令,可以得到物理CPU数目及各自包含多少个逻辑核
cat /proc/cpuinfo | grep "physical id" | sort | uniq -c
假设输出如下,则表示有两个物理CPU,各自包含8个逻辑核
8 physical id : 0
8 physical id : 1

忙碌的工作了两周,继续忙碌中:)


———EOF———

作者: 吴颖敏 |   www.futurehandw.com
Email: wuyingminhui@gmail.com  
转载请注明来源:吴颖敏 -   www.futurehandw.com
### 物理CPU与逻辑CPU的区别 物理CPU指的是计算机中实际存在的处理器芯片上的心数量。每个物理CPU都是一个独立的处理单元,能够独立执行指令处理数据。在多处理器出现之前,一台计算机通常只有一个物理CPU[^1]。 逻辑CPU则是操作系统层面的概念,它代表了系统可以调度执行任务的数量。当启用超线程技术(Hyper-Threading, HT)时,每一个物理CPU心可以被模拟成两个或更多的逻辑CPU,从而允许每个物理心同时处理多个线程[^1]。这意味着,在支持并开启超线程的情况下,逻辑CPU的数量会是物理CPU数量乘以每个CPU心数再乘以2[^2]。 ### 多线程处理原理 多线程处理是一种硬件级别的优化技术,使得单个物理CPU心能够在同一时间运行多个线程。这种能力提高了处理器的利用率,并且对于某些类型的工作负载来说,能够显著提升性能。这是因为即使在一个心上,也可以通过交替执行不同线程来隐藏延迟,提高整体效率[^1]。 例如,如果一个应用程序需要进行大量的计算并且这些计算之间没有依赖关系,那么这个应用就可以很好地利用多线程来加速其执行过程。在这种情况下,操作系统将把不同的线程分配给可用的逻辑CPU去执行,这样就能实现并行处理[^1]。 ### 示例代码:查看Linux系统中的逻辑CPU数量 下面是一个简单的Python脚本示例,用来读取`/proc/cpuinfo`文件,并输出系统的逻辑CPU数量: ```python with open('/proc/cpuinfo') as f: cpu_info = f.readlines() logical_cpus = sum(1 for line in cpu_info if line.strip().startswith('processor')) print(f"系统中的逻辑CPU数量为: {logical_cpus}") ``` 这段代码通过遍历`/proc/cpuinfo`文件中的每一行,统计所有以'processor'开头的行数,这正好对应于系统识别到的所有逻辑CPU的数量[^2]。 --- ### 相关问题 1. 如何在Linux系统中区分物理CPU逻辑CPU? 2. 超线程技术是如何影响程序性能的? 3. 在编写多线程程序时,如何有效地利用逻辑CPU? 4. 如果关闭了超线程,对服务器性能有什么潜在的影响? 5. 怎样确定我的计算机是否启用了超线程技术?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值