当我转储一个大型 MySQL 数据库(其转储大小约为 10GB)时,它几乎立即出现在磁盘上,但是稍后,当内核决定将其刷新到磁盘时,服务器几乎停止运行,并且其他 IO 请求占用大量资源即使 mysqldump 使用 ionice -c3 运行,完成时间也更长,因此使用 ionice 没有实际效果。
当你将数据写入页缓存时,没有字段来存储IO优先级。所以ionice
不会有什么影响。我有这个权利吗?
我的最新内核版本是4.18.16-200.fc28.x86_64
.
答案1
是的。
理论上,ionice 允许您对命令的 IO 进行优先级排序,就像 Nice(1) 理论上对 CPU 使用率进行优先级排序一样。这将是一种方便的方法,可以让大型但相对重要的编译在后台进行,而不会妨碍您对机器的交互式使用。
(为什么是的,我确实经常从源代码重新编译 Firefox。)
[...]
下一个问题是,即使直接在磁盘上运行,
ionice
也不会降低异步写入 IO 的优先级。这是大多数程序都会执行的大部分写入 IO。 Ionice 可能会减慢同步写入速度(我没有测试程序),并且它绝对适用于读取,但仅此而已。