超线程:grub 配置中的 nosmt

问题描述 投票:0回答:1

目前,我在专用CPU云环境上运行Debian 12实例。它有2个核心,4个线程。 通过BIOS设置关闭超线程也不是不可能。

我发现可以通过grub中的系统设置禁用超线程,在

/etc/default/grub
中添加“nosmt”:

GRUB_CMDLINE_LINUX="quiet nosmt"

我想知道在没有超线程的情况下,这在性能方面是否很好? 我的意思是,通过系统设置禁用它与通过 BIOS 禁用它具有相同的效果吗?

或者以这种方式实现它是个坏主意,在这种情况下最好保持超线程关闭(虚拟专用 CPU)?

linux-kernel kvm hyperthreading
1个回答
0
投票

通过 BIOS 禁用 SMT 将获得更好的性能。

如果您通过 BIOS,所有资源都将可供在核心之上运行的单个线程使用,如果您通过内核,某些资源将不可用。

两个例子:

  • 重新排序缓冲区中的插槽
  • 存储缓冲区中的插槽

两个缓冲区都在超级同级之间进行分区。因此,如果 ROB 有 256 个条目,则每个超级同级有 128 个插槽。

如果通过BIOS禁用,由于会有1个超线程,因此它将获得所有256个条目。

如果通过内核禁用,单个线程将仅获得 128 个条目。

© www.soinside.com 2019 - 2024. All rights reserved.