超线程加快Linux操作系统的速度(下)(3)

文章作者 100test 发表时间 2007:03:14 16:40:34
来源 100Test.Com百考试题网


tbench 是类似于 dbench 的另一个文件服务器工作负载。但是,tbench 只产生 TCP 和进程负载。tbench 进行套接字调用,和 SMBD 在 netbench 负载下进行的调用相同,但是 tbench 不进行文件系统调用。tbench 背后的思想是将 SMBD 从 netbench 测试中消除掉,尽管可以使 SMBD 代码快速运行。tbench 的吞吐量结果告诉我们,如果我们消除所有文件系统 I/O 和 SMB 信息包处理,netbench 可以运行得有多快。tbench 被构建成 dbench 包的一部分。

表 6 描述了超线程对 tbench 工作负载的影响。和前面一样,每个数据点代表五次运行的几何平均数。超线程的确会提高 tbench 的吞吐量,提高幅度从 22% 到 31%。基于这五个测试方案的几何平均数,整体提高幅度为 27%。

  

表 6. 超线程对 tbench 吞吐量的影响

图 3. 超线程对 tbench 工作负载的影响

Linux" 内核 2.5.x 中的超线程支持

Linux 内核 2.4.x 自 2.4.17 发行版起就支持 HT。内核 2.4.17 了解逻辑处理器,并将超线程处理器当作两个物理处理器。但是,仍然认为现有的内核 2.4.x 中所使用的调度程序还不成熟,因为它不能区别是两个逻辑处理器在争用资源,还是两个单独的物理处理器在争用资源。

Ingo Molnar 已经指出了当前调度程序出现错误的一些情况(请参阅参考资料以获取链接)。请研究一下带有两个物理 CPU 的系统,每个 CPU 提供两个虚拟处理器。如果两个任务正在运行,当前调度程序会让它们同时在单个物理处理器上运行,即使将其中一个进程迁移到另一个物理 CPU 会得到好得多的性能。该调度程序还不明白:将进程从一个虚拟处理器迁移到另一个虚拟处理器(同一物理 CPU 上的逻辑 CPU)要比将进程在物理处理器之间进行迁移来得更省力(由于高速缓存装入)。

解决方案是更改运行队列的工作方式。2.5 调度程序在每个处理器中维持一个运行队列,并设法避免在队列之间移动任务。这种更改是让每个物理处理器拥有一个运行队列,它能将任务提供给所有的虚拟处理器。这样就比较清晰地说明,是什么产生了空闲 CPU(所有的虚拟处理器必须为空闲),产生的代码就会“神奇地实现”在超线程系统进行调度的需要。



相关文章


难得一见十大经典Linux系统当机画面(1)
超线程加快Linux操作系统的速度(下)(2)
超线程加快Linux操作系统的速度(下)(3)
超线程加快Linux操作系统的速度(下)(1)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛