对 I/O“友好”:在 *nix 中限制进程 I/O 资源

con*_*lee 6 unix mysql io

我正在一个大型共享 Ubuntu 服务器上工作,这让我的同事很恼火。我的一个过程是在 MySQL 数据库中进行大量插入,这使整个服务器陷入困境。

MySQL 没有使用大量 CPU 资源,也没有使用大量 RAM。如果是这种情况,我可以使用工具 'nice' 和 'ulimit' 来限制进程(实际上我在 MySQL 上使用 nice 并且没有帮助)。相反,MySQL 似乎在进行大量随机磁盘读写操作,因此每当其他人想要从磁盘读取或写入文件时,他们必须等待一两秒钟,这对于交互式使用是不可接受的。

关于我可以做些什么来限制 MySQL 的磁盘 I/O 的任何想法?(我正在寻找操作系统或内核级解决方案,而不是更改系统硬件设置的建议)。

我需要的在这里的留言板中得到了很好的描述。

use*_*686 5

ioniceutil-linux 的一部分)可以调整进程的 I/O 优先级,允许在空闲、8 个“尽力而为”和 8 个实时优先级之间进行选择。第 3 类是“空闲”:

ionice -c 3 -p $(pgrep -x mysqld)
Run Code Online (Sandbox Code Playgroud)

schedtool 可以调整一般调度策略,再次以“空闲”作为选择之一:

schedtool -D $(pgrep -x mysqld)
Run Code Online (Sandbox Code Playgroud)