我想问有关可以从操作系统读取的CPU线程数的问题。这个问题是如何解决核心不显示的问题,而不是询问如何检查核心线程。
服务器规格
- HPE dl360p 第 8 代
- 中央处理器:2 个 E5-2680 v2
- Debian Proxmox
- Bios 上启用超线程
线程 cpu 应该是 20 个核心的 40 个线程,但是当我检查时lscpu
只cat /proc/cpuinfo
显示 20 个线程。
在我重新启动服务器之前,线程仍然读取 40 个,而在我重新启动后,它只读取 20 个线程。
您有想法让所有线程都显示吗?
答案1
超线程也可以通过 Linux 操作系统禁用。如果您的系统已应用了初始解决方法Spectre家族的ZombieLoad攻击,它可能包括操作系统级别的超线程禁用 - 当您启动系统时,解决方法可能才刚刚生效。
Run cat /sys/devices/system/cpu/smt/active
:如果返回0
则超线程未激活。cat /sys/devices/system/cpu/smt/control
将指示是否可以在不重新启动的情况下重新启用超线程。
nosmt=force
如果通过添加引导选项或运行来完成禁用echo forceoff > /sys/devices/system/cpu/smt/control
,则您必须找到禁用选项/命令,将其删除并重新引导系统以重新启用超线程。
如果cat /sys/devices/system/cpu/smt/control
说off
(= not forceoff
Nor notsupported
),那么您可以重新启用超线程,而无需重新启动echo on > /sys/devices/system/cpu/smt/control
。
来源:这个问题关于服务器故障和内核文档。
另一方面,HP ProLiant DL360p Gen8 是 2012 年推出的产品,其停售时间为 2016 年,因此目前它已其预期使用寿命即将结束。如果系统在其生命周期的大部分时间内都在运行,则可能是您的某个 CPU 在您重新启动系统时碰巧发生了故障。