硬件:一个虚拟化服务器。 双Nehalem,24GB RAM,2 TB镜像HD。
软件:服务器上的Debian,KVM,virt-manager以及多个使用Linux的虚拟机。 2TB磁盘是一个大的LVM,每个虚拟机都有一个逻辑卷,并在其中创build自己的分区。
问题:其中一个虚拟机上运行的程序之一会造成巨大的磁盘负载。 这从来不是一个问题,因为程序从来没有在如此强大的硬件上运行。 现在CPU速度很快,结果是很多的I / O。 目前我们不能做太多的工作,因为这个工具是一个黑盒子。 另一方面,快速计算是受欢迎的。 该程序创build了大约5 GB的临时文件,在下一次迭代过程中被覆盖。
问题:如何限制进程的磁盘I / O?
你想要ionice命令。 对于空闲优先级(最低优先级):
ionice -c3 bash
你可以使用常规的nice命令来降低CPU的优先级,这也可能会限制IO的副作用。
你也许可以用ulimit来限制程序中的ulimit 。 这可能会限制应用程序可以运行的最大打开文件,但也可能会破坏它。
还有一种方法是去购买更多的内存,并将这些临时文件映射到一个带有mount的ram磁盘上,完全从磁盘上卸载。 您当然也可以通过为临时文件添加另一个磁盘来做同样的事情。
RHEL6也将支持cgroups,它可以让你做更精细的调整。 你也可以尝试在Debian中查看