![Linux 未检测到超线程](https://linux22.com/image/26508/Linux%20%E6%9C%AA%E6%A3%80%E6%B5%8B%E5%88%B0%E8%B6%85%E7%BA%BF%E7%A8%8B%20.png)
我有一台戴尔服务器,有两个Intel Xeon E5645 cpu,每个cpu有6个核心,每个核心都是超线程的(即应该相当于两个虚拟核心)。我在这台服务器上安装了 CentOS 6.2,它似乎只检测到 12 个核心(尽管总共应该有 24 个虚拟核心)。
当我查看/proc/cpuinfo
每个CPU时,我得到:
cpu cores: 6
siblings: 6
这似乎表明核心数量等于虚拟核心数量,或者未检测/启用超线程。
当我运行时,dmidecode
我可以看到 HT 标志已打开,并且我确实看到以下内容,这似乎表明 BIOS 已正确配置为超线程。
Core Count: 6
Core Enabled: 6
Thread Count: 12
为了让 Linux 检测到所有虚拟核心,我是否缺少一些配置?
答案1
您是否检查过您的 BIOS 设置,即如果您的 BIOS 中没有打开超线程,则它无法运行。
答案2
在Linux内核配置中,有一个选项叫做
配置_NR_CPUS
其在内核文档中的描述:
这允许您指定该内核支持的最大 CPU 数量。支持的最大值为 512,有意义的最小值为 2。
检查该值,并根据需要增加它。当然,之后您需要重新编译内核。