我在 Linux 2.6.39 x86_64 上的 Core i7 930 @2.8GHz(四核)上的 BIOS 中启用和禁用了超线程,对 wine 的编译时间进行了多次测量。每次测量都是这样的:
git clean -xdf
./configure --prefix=/usr
time make -j$N
其中N
是从 1 到 8 的数字。
这是结果(“速度”从时间(1)开始为 60/真实):
此处蓝线对应 HT 禁用,紫色线对应 HT 启用。似乎启用 HT 后,使用 1-4 个线程比不使用 HT 慢。我想这可能与内核没有将进程分配到不同的内核并重用已经很忙的内核的第二个线程有关。
所以,我的问题是:如何强制内核为每个内核调度 1 个进程提供比向同一内核的不同线程添加更多进程更高的优先级?或者,如果我的推理是错误的,对于并行运行的 1-4 个进程,我如何才能使 HT 的性能不比不使用 HT 差?