我需要了解不同级别的磁盘 I/O 对我的应用程序的影响。为此,我正在寻找一种在基准模式下运行应用程序时生成不同数量的磁盘负载的方法。
我们目前收到用户关于性能缓慢的投诉,但我们获得的信息非常少,因此我们还无法确定问题的确切位置。I/O 是主要嫌疑人,但我们想确定一下。
对于初学者来说,我可以用一些东西来创建可配置的连续读取或写入负载,例如从/dev/zero
tmp 文件或其他东西。我知道我可以使用dd
,但这会立即将磁盘推到极限,而我想要某种节流阀来随着后台流量的增加进行不同的测试运行。
为了让事情更具挑战性,它必须在 RedHat9 机器上运行,这意味着内核 2.4。所以理想情况下,这将是某种使用默认工具的脚本。
您可以制作一个大文件(例如 1GB),然后用于
rsync
复制文件。rsync
有一个内置选项来限制带宽。因此,您可以以 10KiB/sec、50KiB/sec 或 2MiB/sec 等速度复制文件。据我记得,Bonnie 可以创建一些负载: http: //www.coker.com.au/bonnie++/ 如果它不能按照您想要的方式工作,请编写一个小的 bash 脚本,使用各种实用程序,例如如 dd、rm、ls(或提到的 rsync)。
如果你有一个基准模式,你可以启动它的多个实例吗?如果是这样,您可以继续运行副本,直到您获得接近生产负载的东西。
您可以使用可编写脚本的工具以适当的模式对磁盘施加压力。例如 :
两者都允许您精确选择如何平衡读写、IO 大小等。
rugg是一个磁盘测试实用程序,可以为您解决问题。您可以控制它用于执行测试的线程数,从而控制磁盘和系统上的负载。它还允许您控制它是并行还是顺序进行测试,从而增加了另一个控制级别。