如何解决所有线程核心不显示的问题

如何解决所有线程核心不显示的问题

我想问有关可以从操作系统读取的CPU线程数的问题。这个问题是如何解决核心不显示的问题,而不是询问如何检查核心线程。

服务器规格

  • HPE dl360p 第 8 代
  • 中央处理器:2 个 E5-2680 v2
  • Debian Proxmox
  • Bios 上启用超线程

线程 cpu 应该是 20 个核心的 40 个线程,但是当我检查时lscpucat /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/controloff(= not forceoffNor notsupported),那么您可以重新启用超线程,而无需重新启动echo on > /sys/devices/system/cpu/smt/control

来源:这个问题关于服务器故障内核文档

另一方面,HP ProLiant DL360p Gen8 是 2012 年推出的产品,其停售时间为 2016 年,因此目前它已其预期使用寿命即将结束。如果系统在其生命周期的大部分时间内都在运行,则可能是您的某个 CPU 在您重新启动系统时碰巧发生了故障。

相关内容