為什麼我在 CentOS 6 和 CentOS 7 之間的 /proc/cpuinfo 中得到不同的 cpu 標誌?
CentOS 6.9 在 中顯示以下 CPU 標誌
/proc/cpuinfo
:fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc up rep_good unfair_spinlock pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch arat xsaveopt fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx
我在同一台機器上重新安裝了 CentOS 7.5,得到了
fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap xsaveopt xsavec xgetbv1 arat
為什麼它們不同?
您正在執行一個較新的核心(3.10 在 CentOS 7 上有許多更新檔,而 2.6.32 在 CentOS 6 上有許多更新檔),它的標誌略有不同——有點令人困惑,列出的標誌不僅
/proc/cpuinfo
代表CPU 功能;即使他們這樣做了,給定的核心也只能知道編寫時存在的功能,因此在較新 CPU 上執行的較舊核心將失去 CPU 支持的功能。這些差異對應於添加或刪除的核心特性,或者在編寫舊核心時不存在的 CPU 特性,而新核心現在知道這些特性。您已經“失去”了以下標誌:
up
(SMP 核心在單個處理器上啟動)unfair_spinlock
(不公平的半虛擬化自旋鎖)並獲得以下內容:
nopl
(CPU 支持NOPL
指令;這是 2.6.27 中添加的合成標誌,我不確定為什麼您的 CentOS 6 核心沒有顯示它)eagerfpu
(非延遲 FPU 恢復;在 3.6 中添加,在 4.8 中刪除)mpx
(記憶體保護擴展;從 3.13 開始檢測)smap
(主管模式訪問預防;從 3.6 開始檢測)xsavec
(擴展狀態標誌之一;從 3.15 開始檢測)xgetbv1
(另一個擴展狀態標誌;從 3.15 開始檢測)