从图 3、图 4 我们已经知道,打开超线程支持对线程创建/销毁性能几乎没有影响,而这两张图表也进一步说明,超线程技术对于线程切换开销也没有明显的影响。超线程技术是 CPU 内部的优化技术,和真正的双 CPU 完全不同。大量研究表明,如果没有内核与用户应用相结合的专门优化措施,超线程并不会带来很大的性能变化。除非是高负载综合服务器系统(例如繁忙的数据库系统),购买超线支持的 CPU 并不能带来多少好处。
4. 综合性能

前面几节分析让我们了解了线程库性能改进的细节,通过 volanomark 测试,我们可以近似得到在综合应用环境下,特别是网络服务需求中线程库以及内核对系统整体性能的影响程度。
图 9 综合了不同内核、不同处理机数条件下,两种线程库的 volanomark 结果。从图中可以观察到以下三点:
- NPTL 能极大提高 SMP 环境下服务器系统的整体性能(超过 65%),相对而言,对单处理机系统影响较小(10% 左右);
- 2.6 内核的抢占特性对系统性能影响很小(不超过 ±1%),某些情况下甚至有所下降;
- 超线程技术在 LinuxThreads 中的影响是负面的,在 NPTL 中是正面的,但影响幅度都很小(5% - 6%)。
以上结论中前两点与 LMBench 针对性测试结果完全吻合,第三点的偏差实际上反映了超线程技术对于综合服务器环境还是有一定加速的。
五、 总结
我们的评测为广大 Linux 用户,特别是服务器用户提供了一点有价值的参考:
- 如果你的是多处理机系统,那么毫不犹豫地升级你的内核,并记住,一定要同时升级你的线程库,它通常与 glibc 紧密耦合;
- 如果你的系统并没有实时应用,不要打开 "内核可抢占" 开关,它只会让你的系统更慢;
- 慎重考虑是否使用超线程技术,即使你已经购买了支持超线程的 CPU,有时关闭它可能更适合你的需求。