限制一个程序创建的磁盘 I/O?

限制一个程序创建的磁盘 I/O?

硬件:一台虚拟化服务器。双 Nehalem、24GB RAM、2 TB 镜像 HD。

软件:Debian、KVM、服务器上的 virt-manager 以及几个也使用 Linux 的虚拟机。2 TB 磁盘是一个大的 LVM,每个 VM 都获得一个逻辑卷并在其中创建自己的分区。

问题:在其中一个虚拟机上运行的程序会产生巨大的磁盘负载。这从来都不是问题,因为该程序从未在如此强大的硬件上运行过。现在 CPU 速度很快,因此会产生大量 I/O。目前我们对此无能为力,因为该工具是一个黑匣子。另一方面,快速计算是受欢迎的。该程序会创建大约 5 GB 的临时文件,这些文件将在下一次迭代期间被覆盖。

问题:我们如何限制进程的磁盘 I/O?

答案1

您需要ionice命令。对于空闲优先级(最低优先级):

ionice -c3 bash

您可以使用常规nice命令来降低 CPU 优先级,这也可能会限制 IO。

你也可以使用 来限制程序中的 FD 数量ulimit。这可能会限制应用程序能够打开的最大文件数,但也可能会破坏它。

另一个选择可能是购买更多内存,并将这些临时文件映射到带有挂载的 RAM 磁盘,从而完全减轻磁盘的负载。当然,您也可以通过为临时文件添加另一个磁盘来执行相同操作。

答案2

RHEL6 还将支持 cgroups,这可让您进行更细粒度的调整。您也可以尝试在 Debian 中查找

相关内容