/proc/cpuinfo文件分析

  在Linux系统中,提供了proc文件系统显示系统的软硬件信息。如果想了解系统中CPU的提供商和相关配置信息,则可以通过/proc/cpuinfo文件得到。本文章针对该文件进行简单的总结。

  基于不同指令集(ISA)的CPU产生的/proc/cpuinfo文件不一样,基于X86指令集CPU的/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  :8192KB
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 patpse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lmconstant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr popcntlahf_lm
bogomips   :4522.12
clflush size  :64
cache_alignment  :64
address sizes    :40 bits physical, 48 bitsvirtual
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是否在内核态支持对用户空间的写保护(WriteProtection)
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、CPU的核数、CPU是否启用超线程等信息。

查询系统具有多少个逻辑核:cat /proc/cpuinfo |grep "processor" | wc -l

查询系统CPU的物理核数:cat /proc/cpuinfo | grep"cpu cores" | uniq

查询系统CPU是否启用超线程:cat /proc/cpuinfo | grep -e"cpu cores"  -e "siblings" | sort | uniq

  输出举例:

    cpu cores    :6
siblings     : 6

  如果cpu cores数量和siblings数量一致,则没有启用超线程,否则超线程被启用。

查询系统CPU的个数:cat /proc/cpuinfo | grep"physical id" | sort | uniq | wc -l

查询系统CPU是否支持某项功能,则根以上类似,输出结果进行sort,uniq和grep就可以得到结果。

 

LINUX内核版本是指系统内核的版本号。LINUX的内核具有两种不同的版本号,实验版本和产品化版本。要确定LINUX版本的类型,只要查看一下版本号:每一个版本号由三位数字组成,第二位数字说明版本类型。如果第二位数字是偶数则说明这种版本是产品化版本,如果是奇数说明是实验版本。如2.4.18是产品化版本,2.5.21是实验版本。查看linux内核版本 命令:uname –r 在/proc/version
Linux发行版本是指一些Linux厂商 将LINUX系统内核与应用软件及文档包装在一起,并提供一些安装界面和系统设定与管理工具,这就构成了一个发行套件。相对于内核版本,发行套件的版本号是随着发布者的不同而不同,与系统内核的版本号是相对独立的。比如RedHat AS4.0 UP4 的 内核版本 是2.6.9-42。在/etc/redhat-release