1. 程式人生 > >ubuntu檢視cpu資訊

ubuntu檢視cpu資訊

檢視當前作業系統核心資訊  

# uname -a

Linux redcat 2.6.31-20-generic #58-Ubuntu SMP Fri Mar 12 05:23:09 UTC 2010 i686 GNU/Linux

檢視當前作業系統發行版資訊

#cat /etc/issue

Ubuntu 9.10 /n /l

檢視cpu型號

# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

2  Intel(R) Core(TM)2 Duo CPU     P8600  @ 2.40GHz (看到有2個邏輯CPU, 也知道了CPU型號)

檢視物理cpu顆數

# cat /proc/cpuinfo | grep physical | uniq -c

2 physical id    : 0 (說明實際上是1顆2核的CPU)

檢視cpu執行模式

# getconf LONG_BIT

32

(說明當前CPU執行在32bit模式下, 但不代表CPU不支援64bit)

檢視cpu是否支援64bit

# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l

2

(結果大於0, 說明支援64bit計算. lm指long mode, 支援lm則是64bit)

檢視cpu資訊概要(昨天看aix的時候剛發現的,在ubuntu上竟然也有~):

#lscpu

Architecture:          i686                            #架構686 CPU(s):                2                                   #邏輯cpu顆數是2 Thread(s) per core:    1                           #每個核心執行緒數是1                  Core(s) per socket:    2                           #每個cpu插槽核數/每顆物理cpu核數是2 CPU socket(s):         1                            #cpu插槽數是1 Vendor ID:             GenuineIntel           #cpu廠商ID是GenuineIntel CPU family:            6                              #cpu系列是6 Model:                 23                                #型號23 Stepping:              10                              #步進是10 CPU MHz:               800.000                 #cpu主頻是800MHz Virtualization:        VT-x                         #cpu支援的虛擬化技術VT-x(對此在下一博文中解釋下http://hi.baidu.com/sdusoul/blog/item/5d8e0488def3a998a5c272c0.html) L1d cache:             32K                         #一級快取32K(google了下,這具體表示表示cpu的L1資料快取為32k) L1i cache:             32K                          #一級快取32K(具體為L1指令快取為32K) L2 cache:              3072K                      #二級快取3072K  

最後來個大而全的:

#cat /proc/cpuinfo

processor    : 0 vendor_id    : GenuineIntel cpu family    : 6 model        : 23 model name    : Intel(R) Core(TM)2 Duo CPU     P8600  @ 2.40GHz stepping    : 10 cpu MHz        : 800.000 cache size    : 3072 KB physical id    : 0 siblings    : 2 core id        : 0 cpu cores    : 2 apicid        : 0 initial apicid    : 0 fdiv_bug    : no hlt_bug        : no f00f_bug    : no coma_bug    : no fpu        : yes fpu_exception    : yes cpuid level    : 13 wp        : yes flags        : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm ida tpr_shadow vnmi flexpriority bogomips    : 4788.60 clflush size    : 64 power management: processor    : 1 vendor_id    : GenuineIntel cpu family    : 6 model        : 23 model name    : Intel(R) Core(TM)2 Duo CPU     P8600  @ 2.40GHz stepping    : 10 cpu MHz        : 800.000 cache size    : 3072 KB physical id    : 0 siblings    : 2 core id        : 1 cpu cores    : 2 apicid        : 1 initial apicid    : 1 fdiv_bug    : no hlt_bug        : no f00f_bug    : no coma_bug    : no fpu        : yes fpu_exception    : yes cpuid level    : 13 wp        : yes flags        : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm ida tpr_shadow vnmi flexpriority bogomips    : 4787.96 clflush size    : 64 power management:

補充,linux下通過c獲取CPU個數資訊

#include<stdio.h> #include<unistd.h> int main() { int cpu_num; cpu_num = sysconf(_SC_NPROCESSORS_CONF); printf("_SC_NPROCESSORS_CONF=%d/n",cpu_num); cpu_num = sysconf(_SC_NPROCESSORS_ONLN); printf("_SC_NPROCESSORS_ONLN=%d/n",cpu_num); return 0; } /*  * - _SC_NPROCESSORS_CONF *       The number of processors configured. *  * - _SC_NPROCESSORS_ONLN *       The number of processors currently online (available). */ Linux下獲得CPU個數一個簡單方法就是檢視/proc/cpuinfo檔案。看出現processor字樣的行數是多少條,即有多少個邏輯CPU(包括多核,超執行緒)。 因此cmd下輸入下面命令即可:

cat /proc/cpuinfo | grep processor | wc -l

因此c++程式中很自然的想到使用strstr函式查詢processor關鍵詞出現次數即可。

參考部落格: