![为什么我在 CentOS 6 和 CentOS 7 之间的 /proc/cpuinfo 中得到不同的 cpu 标志?](https://linux22.com/image/151038/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E5%9C%A8%20CentOS%206%20%E5%92%8C%20CentOS%207%20%E4%B9%8B%E9%97%B4%E7%9A%84%20%2Fproc%2Fcpuinfo%20%E4%B8%AD%E5%BE%97%E5%88%B0%E4%B8%8D%E5%90%8C%E7%9A%84%20cpu%20%E6%A0%87%E5%BF%97%EF%BC%9F.png)
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 系统调用 nx pdpe1gb rdtscp lmconstant_tsc uprep_good不公平_spinlock pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 ic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand 管理程序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 系统调用 nx pdpe1gb rdtscp lmconstant_tscrep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand 管理程序lahf_lm abm 3dnowprefetch fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap xsaveopt xsavec xgetbv1 arat
为什么它们不同?
答案1
您正在运行一个较新的内核(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 起检测到)