在对运行软件 RAID 1 上的 ext3 的 Debian Linux 机器的性能问题进行故障排除时,我将一个将无用临时日志文件写入 /dev/null 的进程的输出重定向到 (ln -s /dev/null/ foo),这已将写入操作减少了约 3MB/s。然而,这一变化似乎也导致写入和总体 IOwait 时间大幅增加,我无法解释,并非常希望得到一些意见...
iostat:http://oi45.tinypic.com/5l2mx0.jpg
写入延迟(凌晨 3 点左右应用更改):http://oi46.tinypic.com/33be1kw.jpg
更新 18.04.13:
写入 IOwait 仍然比以前高,但我已经应用了以下所有方法,所有这些都至少在某种程度上是有益的......
- 使用 noatime 选项重新挂载文件系统。
- 更改为 deadline ioscheduler。
- 已将 vm.swappiness 设为 30(主机上有~1GB 的数据库、CMS 和流音频)。
- 将 sda 和 sdb 的预读从 4096 降低到 256。
- 将 /dev/md2 (主数据分区) 的预读从 256 提高到 4096。
更新 19.04.13:
- 将主文件系统从 ext3 转换为 ext4
答案1
从逻辑上讲,唯一可以增加响应时间(I/O 等待)的方法是增加对“相同”事物执行的操作数量。
假设:/dev/null 的 I/O 在驱动程序级别引起的操作比磁盘的 I/O(可能缓冲更多)要多
测试:尝试将其切换回磁盘文件。如果响应时间下降,则说明 /dev/null 的某些方面比预期耗时更长。如果响应时间保持不变,则说明在更改的同时发生了一些影响响应时间的事情。
--戴夫