dav*_*avr 21 linux performance io
我见过这个问题: 如何识别大量写入磁盘?
而且我之前使用过dstat和atop ……但它们似乎没有指出是什么进程导致了磁盘 I/O。例如,来自 dstat:
dstat -ta --top-bio
----system---- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- ----most-expensive----
time |usr sys idl wai hiq siq| read writ| recv send| in out | int csw | block i/o process
14-12 16:16:25| 22 3 49 26 0 0|2324k 0 | 17k 6144B| 0 0 |1324 0 |
14-12 16:16:26| 24 3 30 43 0 0|4960k 8192B|1498B 4322B| 0 0 |1494 0 |wget 0 4096B
14-12 16:16:27| 25 4 38 33 0 0|4612k 548k|5011B 27k| 0 0 |1582 0 |kjournald 0 24k
14-12 16:16:28| 23 3 42 32 0 0|5072k 0 | 24k 4368B| 0 0 |1495 0 |
Run Code Online (Sandbox Code Playgroud)
请注意 dsk/total 有多高——在 2 到 5 MB/秒之间。但是再看看“最昂贵”列——这里只有几个字节,那里只有几个 KB,有时甚至什么都没有。'atop' 也是同样的事情。显示总体磁盘使用率较高,但单个进程的使用率较低。我正在运行 CentOS 5,内核 2.6.18-53。
我需要更新的内核版本吗?也许某处有一些系统配置设置?'atop' 主页建议安装一些内核补丁,但我宁愿不去配置和编译我自己的内核。
asd*_*min 28
iotop (链接) for starter ;) 我还没有看到你发布它的输出。
1:我在日志文件系统和 atime 方面遇到了几乎相同的情况 - 但是写入次数更多。
尝试使用 noatime 重新挂载并关闭文件系统日志记录(稍后仅用于测试),以查看它是否基于文件系统,并且如上所述,如果它基于进程,则为 iotop。
2:我猜这个分区不是刚刚重建的raid阵列的一部分,是吗?
3:如果你有很多非常小的文件(比实际的块设备块大小和/或文件系统块大小小很多),并且你正在读取这些小文件,你最终会从系统中读取整个块,并且大多数这些块中的一个将被无用读取。
4:如果上面没有任何帮助,您始终可以通过执行获得访问的文件列表
echo 1 > /proc/sys/vm/block_dump
Run Code Online (Sandbox Code Playgroud)
请注意,它会大大降低系统性能。说明可以在我之前的帖子中找到