我有一个程序在使用 Intel TBB 的 32 核系统上运行。我遇到的问题是,当我将程序设置为使用 32 个线程时,与 16 个线程相比,性能没有获得足够的提升(仅提升 50%)。但是,当我使用:
taskset 0xFFFFFFFF ./foo
这会将进程锁定到 32 个核心,性能要好得多。
我有以下两个问题:
- 为什么?默认情况下,操作系统无论如何都会将所有 32 个内核用于 32 线程程序。
- 我假设即使使用
taskset
,操作系统也被允许(将)交换虚拟线程和物理线程,即线程没有被固定。我对吗?
谢谢。