磁盘上可能写入了什么内容而 iotop 没有显示?
# iotop -a
Total DISK READ: 8.19 M/s | Total ****DISK WRITE: 3.34 M/s****
TID PRIO USER DISK READ DISK WRITE> SWAPIN IO COMMAND
428 be/4 root 0.00 B 84.00 K 0.00 % 0.02 % [kjournald]
2600 be/3 root 0.00 B 8.00 K 0.00 % 0.01 % auditd -s disable
2582 be/4 root 0.00 B 4.00 K 0.00 % 0.00 % syslog-ng
(iotop 不能使用 -o 运行)
您如何解释这一点?
# iostat
Linux 3.0.51-0.7.9-default (x) 03/10/13 _x86_64_
avg-cpu: %user %nice %system %iowait %steal %idle
1.08 0.00 1.33 5.27 0.00 92.32
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 5.10 173.02 14.35 824994560 68417967
sdb 79.08 1028.23 1018.19 4902923384 4855045168
sr0 0.00 0.00 0.00 988 0
dm-0 175.34 1028.23 1018.19 4902916232 4855045168
答案1
我想知道“总磁盘写入”和“实际磁盘写入”之间的区别。运行显示实际的磁盘写入。如果您将某些内容写入磁盘,内核可以为您缓存这些写入(我认为这是 vonbrand 的意思)。您可以使用[0]iotop -a
检查是否有一些需要写入磁盘的脏页。如果是,则有一些页面需要写入磁盘。cat /proc/vmstat | egrep "dirty|writeback"
nr_dirty > 0
在您的例子中,只显示了实际的读写速度。进程已经完成写入,但更改尚未写入磁盘。当您查看 iotop 时,内核正在执行此操作。您看不到进程写入,但您会看到有数据已写入磁盘。
这也是为什么有时顶部的两个值(总读/写和实际读/写)iotop
不相等的原因。
[0]https://lonesysadmin.net/2013/12/22/better-linux-disk-caching-performance-vm-dirty_ratio/
答案2
为了提高性能,读至关重要(有人正在等待请求的数据),写道可以推迟执行而不会产生不良影响(当然,只要它们在系统崩溃之前到达磁盘即可)。如果机器有足够的可用内存,则“不会有太多写入”。