cpu数-物理核-逻辑核
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
cpu数,物理核,逻辑核的关系: (1)
查看检查/proc/cpuinfo文件: (1)
查看CPU(各个逻辑核)占用情况: (2)
进程绑定逻辑核: (2)
linux下查看cpu物理个数和逻辑个数 (5)
cpu数,物理核,逻辑核的关系:
逻辑CPU个数> 物理CPU个数* CPU内核数开启了超线程
逻辑CPU个数= 物理CPU个数* CPU内核数没有开启超线程
查看检查/proc/cpuinfo文件:
(注意cpuinfo就是一个文本文件,记录了当前CPU信息)
例如我的CPU
#cat /proc/cpuinfo
processor :0
vendor_id :GenuineIntel
cpu family :6
model :26
model name :Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
stepping :5
cpu MHz :1600.000
cache size :8192 KB
physical id :0
siblings :8
core id :0
cpu cores :4
apicid :0
fpu :yes
fpu_exception :yes
cpuid level :11
wp :yes
flags :fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr popcnt lahf_lm
bogomips :4522.12
clflush size :64
cache_alignment :64
address sizes :40 bits physical, 48 bits virtual
power management :
以上输出项的含义如下:
processor :系统中逻辑处理核的编号。对于单核处理器,则课认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核
vendor_id :CPU制造商
cpu family :CPU产品系列代号
model :CPU属于其系列中的哪一代的代号
model name:CPU属于的名字及其编号、标称主频
stepping :CPU属于制作更新版本
cpu MHz :CPU的实际使用主频
cache size :CPU二级缓存大小
physical id :单个CPU的标号,物理CPU的id
siblings :单个CPU逻辑物理核数,每个物理CPU上逻辑CPU个数
core id :当前物理核在其所处CPU中的编号,这个编号不一定连续,每个CPU上的物理核的id cpu cores :该逻辑核所处CPU的物理核数,每个物理CPU的物理核个数
apicid :用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
fpu :是否具有浮点运算单元(Floating Point Unit)
fpu_exception :是否支持浮点计算异常
cpuid level :执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容wp :表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
flags :当前CPU支持的功能
bogomips :在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
clflush size :每次刷新缓存的大小单位
cache_alignment :缓存地址对齐单位
address sizes :可访问地址空间位数
power management :对能源管理的支持,有以下几个可选支持功能:
ts:temperature sensor
fid:frequency id control
vid:voltage id control
ttp:thermal trip
tm:
stc:
100mhzsteps:
hwpstate:
查看CPU(各个逻辑核)占用情况:
# top
remark:在top命令下,点击"1"可以查看各个逻辑核的占用情况
进程绑定逻辑核:
#include
//g++ -o test test.cpp
/*
启动两个实例,将进程都绑定到Cpu0:
taskset -c 0 ./test
taskset -c 0 ./test
通过top,输入“1”查看系统cpu状况:
Cpu1空闲,Cpu0使用100%
继续测试,将pid为18057的test迁移到CPU1上运行,执行:
$ taskset -pc 1 18057
pid 18057's current affinity list: 0
pid 18057's new affinity list: 1
Cpu0及Cpu1都进入忙碌状态了!
继续测试!将pid为18210的test也迁移到Cpu1上运行,执行:
Cpu0闲着,Cpu1忙碌起来了!
*/
void main(int argc, char** argv)
{
for(int i = 0; i<=10000000000000; i++)
{
if(i == 100000000)
{