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
#include
#include
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;
}
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
和上面直接读取文件的数量是一致的。