基准测试程序描述
根据以下标准来挑选所使用的基准测试程序:业界所采用的基准测试程序,对于复杂的工作负载,这些基准测试程序是可靠的指示器;组件级的基准测试程序,它们指出了特定的内核性能问题。业界基准测试程序是通常为业界所接受,用来测量特定工作负载的性能和可伸缩性。这些基准测试程序常常需要复杂的或代价昂贵的设置,大多数" OSC(开放源码社区)大都没有这样的设置。这些复杂的设置是我们对 OSC 所做出的贡献之一。例如:
SPECweb99:代表 Web 服务性能。
SPECsfs:代表 NFS 性能。
数据库查询:代表数据库查询性能。
NetBench:代表 SMB 文件服务性能。
组件级的基准测试程序测量特定 Linux 内核组件的性能和可伸缩性,对于各种工作负载,这些基准测试程序被认为是至关重要的。例如:
Netperf3:测量网络堆栈的性能,包括 TCP、IP 和网络设备驱动程序。
VolanoMark:测量调度程序、信号、TCP 发送/接收和回送的性能。
块 I/O 测试:测量VFS、原始和直接 I/O、块设备层、SCSI 层和低级的 SCSI/光纤设备驱动程序的性能。
OSC 一般会使用一些基准测试程序。由于 OSC 已经认识到了基准测试程序的重要性,因此愿意用它们。从而很容易让 OSC 确信基准测试程序所显示的性能和可伸缩性方面的瓶颈。此外,通常没有阻止我们公布原始数据的许可证问题。由于设置这些基准测试程序通常很简单,而且所需硬件也最少,因此 OSC 可以运行这些基准测试程序。而另一方面,它们常常不能够满足我们对企业系统的需求。例如:
LMBench:用于测量 Linux API 的性能。
IOZone:用于测量本机文件系统吞吐量。
DBench:用于测量 NetBench 的文件系统组件。
SMB Torture:用于测量 SMB 文件服务性能。
针对目标工作负载,可以选择使用许多基准测试程序。我们之所以选择上述基准测试程序是因为在给定资源的情形下,它们最适合我们的任务。同样道理,我们没有选择一些重要的基准测试程序。此外,我们没有选择运行一些已经由 IBM 中其它性能团队已经在研究的基准测试程序(例如,IBM Solution Technologies System Performance Team 已经发现 Linux 上的 SPECjbb“足够好了”)。表 1 中所显示的是 Linux 性能团队目前所使用的基准测试程序,以及所要测试的内核组件。
基准测试程序结果
这里所提供的内容描述了在我们这一套测试中所挑选的三个基准测试程序,用它们来量化 Linux 内核性能:数据库查询、VolanoMark 和 SPECweb99。对于所有这些基准测试程序,我们使用 8 路的机器,在下图中详细显示了基准测试程序结果。

图" 1 显示了数据库查询基准测试程序结果。另外还描述了所使用的硬件和软件配置。该图以图形方式展示了在完成目标过程中所取得的进展。我们已经解决的一些问题在以下方面取得了改善:添加了避免弹性缓冲区、ips、io_request_lock、readv、kiobuf 和 O(1) 调度程序内核补丁以及几个 DB2 优化。
VolanoMark 基准测试程序(请参阅参考资料)创建了 10 个(每个)可容纳 20 个客户机的聊天室。每个聊天室可以将一个客户机的消息回应给同一聊天室中的其他 19 个客户机。该基准测试程序(目前还不是开放源码基准测试程序)包含 VolanoChat 服务器和另外一个用于模拟聊天室中客户机的程序。用它来测量原始服务器性能和网络可伸缩性性能。VolanoMark 可在两种模式下运行:回送和网络模式。回送模式测试原始服务器性能,网络模式测试网络可伸缩性性能。VolanoMark 使用两个参数来控制聊天室的大小和数目。
