如何在 Linux(2.4)系统上生成不同级别的磁盘负载

如何在 Linux(2.4)系统上生成不同级别的磁盘负载

我需要了解不同级别的磁盘 I/O 对我的应用程序的影响。为此,我正在寻找一种方法,在基准测试模式下运行应用程序时生成不同数量的磁盘负载。

目前,我们收到用户关于性能缓慢的投诉,但我们获得的信息非常少,因此我们还不能确定问题究竟出在哪里。I/O 是主要嫌疑,但我们想确定一下。

首先,我可以使用某种方法来创建可配置的连续读取或写入负载,例如从/dev/zerotmp 文件或类似文件读取或写入。我知道我可以使用dd,但这会立即将磁盘推到极限,而我希望使用某种节流阀来进行不同的测试运行,以增加背景流量。

为了让事情更具挑战性,它必须在 RedHat9 机器上运行,也就是内核 2.4。因此,理想情况下,这将是某种利用现有默认工具的脚本。

答案1

您可以创建一个大文件(例如 1GB),然后使用rsync它来复制文件。rsync有一个内置选项来限制带宽。因此,您可以以 10KiB/秒、50KiB/秒或 2MiB/秒等速度复制文件。

答案2

据我记得,Bonnie 可以创建一些负载: http://www.coker.com.au/bonnie++/ 如果它没有按照您希望的方式工作,请编写一个小型 bash 脚本,使用各种实用程序,例如 dd、rm、ls(或提到的 rsync)。

答案3

如果您有基准测试模式,您可以启动它的多个实例吗?如果可以,您可以继续运行副本,直到接近生产负载。

答案4

拉格是一款磁盘测试实用程序,可以帮您解决问题。您可以控制它执行测试时使用的线程数,从而控制磁盘和系统的负载。它还允许您控制它是并行还是顺序执行测试,从而增加了另一个控制级别。

相关内容