我需要了解不同级别的磁盘I / O对我的应用程序的影响。 要做到这一点,我正在寻找一种方式来生成不同数量的磁盘负载,而我在基准模式下运行的应用程序。
我们目前收到用户抱怨速度慢的问题,但是我们得到的信息非常薄,所以我们还不能确定问题出在哪里。 I / O是主要的嫌疑犯,但我们想知道肯定。
对于初学者,我会很好的创build一个可configuration的连续读取或写入负载,例如从/dev/zero到tmp文件或其他东西。 我知道我可以使用dd ,但是这会立即将磁盘推到极限,而我希望某种节stream阀能够随着不断增加的背景stream量进行不同的testing。
为了使事情变得更具挑战性,必须在RedHat9盒子上运行,这意味着内核2.4。 所以理想情况下,这将是某种使用默认工具的脚本。
您可以创build一个大文件(例如1GB),然后使用rsync来复制文件。 rsync有一个内置的选项来限制带宽。 所以你可以以10KiB / sec或50KiB / sec或2MiB / sec等速度复制文件。
据我记忆,邦妮可以创build一些负载: http : //www.coker.com.au/bonnie++/如果它不按照你想要的方式工作,编写一个小的bash脚本,将使用各种实用工具,如作为dd,rm,ls(或提到的rsync)。
如果你有一个基准模式,你可以旋转多个实例吗? 如果是这样,你可以继续运行副本,直到你接近你的生产负载。
您可以使用可编写脚本的工具以正确的模式压缩磁盘。 例如 :
两者都允许您精确select如何平衡读写,IO大小等。
rugg是一个磁盘testing工具,可能会为你做的伎俩。 您可以控制执行testing的线程数量,从而控制磁盘和系统的负载。 它还允许您控制是否并行或按顺序执行testing,并添加另一个级别的控制。