iotop 不显示写入

iotop 不显示写入

磁盘上可能写入了什么内容而 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

为了提高性能,至关重要(有人正在等待请求的数据),写道可以推迟执行而不会产生不良影响(当然,只要它们在系统崩溃之前到达磁盘即可)。如果机器有足够的可用内存,则“不会有太多写入”。

相关内容