/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