Linux下查看CPU信息
Posted kongslly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下查看CPU信息相关的知识,希望对你有一定的参考价值。
Linux下查看CPU信息,CPU的信息在启动的过程中被装载到虚拟目录/proc下的cpuinfo文件中,我们可以通过 cat /proc/cpuinfo查看
[root@localhost proc]# cat cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Xeon(R) CPU E3-1225 v3 @ 3.20GHz
stepping : 3
microcode : 0x17
cpu MHz : 3200.500
cache size : 8192 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initialapicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpuvme de psetscmsrpaemce cx8 apicsepmtrrpgemcacmov pat pse36 clflushdtsacpi mmx fxsrsse sse2 ssht tm pbesyscallnx pdpe1gb rdtscp lm constant_tscarch_perfmonpebsbtsrep_goodnoplxtopologynonstop_tscaperfmperfeagerfpupnipclmulqdq dtes64 monitor ds_cplvmxsmxest tm2 ssse3 fma cx16 xtprpdcmpcid sse4_1 sse4_2 x2apic movbepopcnttsc_deadline_timeraesxsaveavx f16c rdrandlahf_lmabmaratepbxsaveoptpln pts dthermtpr_shadowvnmiflexpriorityeptvpidfsgsbasetsc_adjust bmi1 hle avx2 smep bmi2 ermsinvpcidrtm
bogomips : 6400.67
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Xeon(R) CPU E3-1225 v3 @ 3.20GHz
stepping : 3
microcode : 0x17
cpu MHz : 3200.500
cache size : 8192 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 4
apicid : 2
initialapicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpuvme de psetscmsrpaemce cx8 apicsepmtrrpgemcacmov pat pse36 clflushdtsacpi mmx fxsrsse sse2 ssht tm pbesyscallnx pdpe1gb rdtscp lm constant_tscarch_perfmonpebsbtsrep_goodnoplxtopologynonstop_tscaperfmperfeagerfpupnipclmulqdq dtes64 monitor ds_cplvmxsmxest tm2 ssse3 fma cx16 xtprpdcmpcid sse4_1 sse4_2 x2apic movbepopcnttsc_deadline_timeraesxsaveavx f16c rdrandlahf_lmabmaratepbxsaveoptpln pts dthermtpr_shadowvnmiflexpriorityeptvpidfsgsbasetsc_adjust bmi1 hle avx2 smep bmi2 ermsinvpcidrtm
bogomips : 6400.67
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Xeon(R) CPU E3-1225 v3 @ 3.20GHz
stepping : 3
microcode : 0x17
cpu MHz : 3200.000
cache size : 8192 KB
physical id : 0
siblings : 4
core id : 2
cpu cores : 4
apicid : 4
initialapicid : 4
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpuvme de psetscmsrpaemce cx8 apicsepmtrrpgemcacmov pat pse36 clflushdtsacpi mmx fxsrsse sse2 ssht tm pbesyscallnx pdpe1gb rdtscp lm constant_tscarch_perfmonpebsbtsrep_goodnoplxtopologynonstop_tscaperfmperfeagerfpupnipclmulqdq dtes64 monitor ds_cplvmxsmxest tm2 ssse3 fma cx16 xtprpdcmpcid sse4_1 sse4_2 x2apic movbepopcnttsc_deadline_timeraesxsaveavx f16c rdrandlahf_lmabmaratepbxsaveoptpln pts dthermtpr_shadowvnmiflexpriorityeptvpidfsgsbasetsc_adjust bmi1 hle avx2 smep bmi2 ermsinvpcidrtm
bogomips : 6400.67
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Xeon(R) CPU E3-1225 v3 @ 3.20GHz
stepping : 3
microcode : 0x17
cpu MHz : 3200.000
cache size : 8192 KB
physical id : 0
siblings : 4
core id : 3
cpu cores : 4
apicid : 6
initialapicid : 6
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpuvme de psetscmsrpaemce cx8 apicsepmtrrpgemcacmov pat pse36 clflushdtsacpi mmx fxsrsse sse2 ssht tm pbesyscallnx pdpe1gb rdtscp lm constant_tscarch_perfmonpebsbtsrep_goodnoplxtopologynonstop_tscaperfmperfeagerfpupnipclmulqdq dtes64 monitor ds_cplvmxsmxest tm2 ssse3 fma cx16 xtprpdcmpcid sse4_1 sse4_2 x2apic movbepopcnttsc_deadline_timeraesxsaveavx f16c rdrandlahf_lmabmaratepbxsaveoptpln pts dthermtpr_shadowvnmiflexpriorityeptvpidfsgsbasetsc_adjust bmi1 hle avx2 smep bmi2 ermsinvpcidrtm
bogomips : 6400.67
clflush size : 64
cache_alignment : 64
address sizes : 39 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的标号 |
siblings | 单个CPU逻辑物理核数 |
core id | 当前物理核在其所处CPU中的编号,这个编号不一定连续 |
cpu cores | 该逻辑核所处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信息就可以直接读取这个文件来获取,可以使用system函数进行匹配查找,也可以自己封装一段代码来实现:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main()
char cpuProce[] = "processor\\t:";
char readInfo;
int fd = 0;
int col = 0;
int flag = 0;
int cpuNUM = 0;
fd = open("/proc/cpuinfo", O_RDONLY);
if (fd< 0)
return 0;
flag = 1;
for (col = 0; read(fd, &readInfo, 1) == 1; )
if (readInfo == '\\n')
col = 0;
flag = 1;
else
if (flag && col < (sizeof(cpuProce) - 1))
if (readInfo != cpuProce[col])
flag = 0;
col++;
else if (flag)
cpuNUM++;
flag = 0;
printf("CPU number is:%d\\n",cpuNUM);
close(fd);
return 0;
Makefile文件:
CXX=g++
CFLAGS=-O3 -Wall -fmessage-length=0 -fPIC -DARCH_x86
OBJS=getCpuNum.o
LIBS+=
TARGET= getCpuNum
$(TARGET):$(OBJS)
$(CXX) -o $(TARGET) $(OBJS) $(CFLAGS) $(LIBS)
chmod 6755 $(TARGET)
all:$(TARGET)
install: all
chmod 6755 $(TARGET)
clean:
rm -f $(OBJS) $(TARGET)
运行结果:
[root@localhostgetCpuNum]# ./getCpuNum
CPU number is:4
和上面直接读取文件的数量是一致的。
以上是关于Linux下查看CPU信息的主要内容,如果未能解决你的问题,请参考以下文章