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)