目前,我在专用CPU云环境上运行Debian 12实例。它有2个核心,4个线程。 通过BIOS设置关闭超线程也不是不可能。
我发现可以通过grub中的系统设置禁用超线程,在
/etc/default/grub
中添加“nosmt”:
GRUB_CMDLINE_LINUX="quiet nosmt"
我想知道在没有超线程的情况下,这在性能方面是否很好? 我的意思是,通过系统设置禁用它与通过 BIOS 禁用它具有相同的效果吗?
或者以这种方式实现它是个坏主意,在这种情况下最好保持超线程关闭(虚拟专用 CPU)?
通过 BIOS 禁用 SMT 将获得更好的性能。
如果您通过 BIOS,所有资源都将可供在核心之上运行的单个线程使用,如果您通过内核,某些资源将不可用。
两个例子:
两个缓冲区都在超级同级之间进行分区。因此,如果 ROB 有 256 个条目,则每个超级同级有 128 个插槽。
如果通过BIOS禁用,由于会有1个超线程,因此它将获得所有256个条目。
如果通过内核禁用,单个线程将仅获得 128 个条目。