如何检查 Linux 中是否启用了 Intel 超线程
超线程是 Intel 的同步多线程 (SMT) 技术,旨在提高 x86 CPU 处理器的执行并行性。启用超线程后,每个物理核心都表示为两个“逻辑处理器”,每个逻辑处理器都可以同时执行作业,同时共享物理核心的资源。当一个逻辑处理器停止或中断时,同一核心上的另一个逻辑处理器可以从停止的处理器窃取资源。因此,超线程有望提高整体 CPU 吞吐量,对于涉及 CPU 和 I/O 密集型工作负载混合的多线程应用程序尤其有用,例如视频编码、3D 渲染、游戏等。
如果您想检查您的 Linux 系统上是否启用了超线程,有多种方法可以实现。
方法一:BIOS设置
超线程是 CPU 处理器的一项功能。因此,通常您需要使用 BIOS 设置来检查是否启用了超线程。 BIOS 菜单因系统而异,超线程设置通常位于“高级”、“处理器”或“性能”相关设置下。例如,Dell XPS 13 BIOS 中的超线程控制如下所示。

方法二:lscpu
假设由于某种原因(例如,由于远程访问)您无法访问系统的 BIOS 菜单。在这种情况下,您可以利用 lscpu 命令来显示有关系统 CPU 架构的信息。特别是,在其输出中查找Thread(s) per core
条目。如果此条目显示“1”,则表示每个核心只有一个线程可用。因此超线程被禁用。如果显示“2”,则表示超线程已启用。

因此,只需使用以下命令来检查状态即可。
$ lscpu | grep Thread
方法三:/sys/devices/system/cpu/smt/active
从命令行检查超线程状态的另一种方法是访问位于 /sys/devices/system/cpu/smt/active
的伪文件。如果启用超线程,则此文件的内容将为 1
(或 on
),否则为 0
(或 off
)。
$ cat /sys/devices/system/cpu/smt/active
方法四:dmidecode
您还可以使用 dmidecode 命令行工具检查是否启用了超线程。使用 -tprocessor
运行它,并比较输出中的“Core Count”和“Thread Count”。如果这两个计数相同,则表示超线程未启用。如果“Thread Count”是“Core Count”的两倍,则表示启用了超线程。
$ sudo dmidecode -t processor | grep Count
