天天看點

linux下/proc/cpuinfo 檔案分析

/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  : 8192 KB

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 pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida nonstop_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr popcnt lahf_lm

bogomips   :4522.12

clflush size  :64

cache_alignment  : 64

address sizes    : 40 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資訊中flags各項含義:

fpu: Onboard (x87) Floating Point Unit

vme: Virtual Mode Extension

de: Debugging Extensions

pse: Page Size Extensions

tsc: Time Stamp Counter: support for RDTSC and WRTSC instructions

msr: Model-Specific Registers

pae: Physical Address Extensions: ability to access 64GB of memory; only 4GB can be accessed at a time though

mce: Machine Check Architecture

cx8: CMPXCHG8 instruction

apic: Onboard Advanced Programmable Interrupt Controller

sep: Sysenter/Sysexit Instructions; SYSENTER is used for jumps to kernel memory during system calls, and SYSEXIT is used for jumps: back to the user code

mtrr: Memory Type Range Registers

pge: Page Global Enable

mca: Machine Check Architecture

cmov: CMOV instruction

pat: Page Attribute Table

pse36: 36-bit Page Size Extensions: allows to map 4 MB pages into the first 64GB RAM, used with PSE.

pn: Processor Serial-Number; only available on Pentium 3

clflush: CLFLUSH instruction

dtes: Debug Trace Store

acpi: ACPI via MSR

mmx: MultiMedia Extension

fxsr: FXSAVE and FXSTOR instructions

sse: Streaming SIMD Extensions. Single instruction multiple data. Lets you do a bunch of the same operation on different pieces of input: in a single clock tick.

sse2: Streaming SIMD Extensions-2. More of the same.

selfsnoop: CPU self snoop

acc: Automatic Clock Control

IA64: IA-64 processor Itanium.

ht: HyperThreading. Introduces an imaginary second processor that doesn’t do much but lets you run threads in the same process a  bit quicker.

nx: No Execute bit. Prevents arbitrary code running via buffer overflows.

pni: Prescott New Instructions aka. SSE3

vmx: Intel Vanderpool hardware virtualization technology

svm: AMD “Pacifica” hardware virtualization technology

lm: “Long Mode,” which means the chip supports the AMD64 instruction set

tm: “Thermal Monitor” Thermal throttling with IDLE instructions. Usually hardware controlled in response to CPU temperature.

tm2: “Thermal Monitor 2″ Decrease speed by reducing multipler and vcore.

est: “Enhanced SpeedStep”

根據以上内容,我們則可以很友善的知道目前系統關于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

繼續閱讀