问题描述

Windows 任务管理器中显示 CPU 线程数只有实际的一半 如下图,实际 CPU 线程数为 16,但任务管理器中显示的线程数为 8。 Windows 任务管理器

问题原因

在 CPU 管理工具,例如 Ryzen Master 中,开启了同步多线程 (SMT) 功能,导致 Windows 任务管理器中显示的线程数只有实际的一半。 Ryzen Master

解决方法

关闭 CPU 管理工具中的同步多线程 (SMT) 功能,重启计算机后,Windows 任务管理器中显示的线程数应该恢复正常。

你需要关闭 SMT 吗? 这应该是一个经常被讨论的问题了,我个人的建议是,对于一般消费者,除非你追求极致的单核表现,不然没必要关闭 SMT,多数时候打开 SMT 并不会带来负面的影响。

现代的操作系统在调度上都考虑到了 SMT 的特性,比如你有 8 个核心 16 线程,那么在多任务要求不是很大的情况下,操作系统会尽量避免让一个核心同时执行两个线程。那么那些单核倒退、资源冲突的情况就基本不会发生了。而当多任务要求很高的时候,操作系统让一个核心跑多个线程,这时候虽然可能会发生冲突导致效率反向降低,但是更多的时候是增加效率,所以从期望上来说,是没必要的。

如果追求极致性能且自己确切不需要那么多多线程性能,自然可以关掉。反正也用不到那么多线程,享受不到 SMT 的好处,还不如索性关了,杜绝一切可能的开销,也更容易超频了。所以其实核心越多的,越适合关闭 SMT,至于还在用 4 核心之类的就别关了。

参考链接

Wikipedia 同步多线程

知乎 说一说超线程/同步多线程(HT/SMT)技术那些事儿