Что может быть записано на диск, чего не показывает 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
Мне было интересно узнать о разнице между «Total DISK WRITE» и «Actual DISK WRITE». Бег iotop -a
показывает фактическую запись на диск. Если вы напишете sth. на диск ядро может кэшировать эти записи для вас (я думаю, именно это имел в виду фонбранд). Вы можете проверить, есть ли грязные страницы, которые нужно записать на диск, используя: cat /proc/vmstat | egrep "dirty|writeback"
[0]. Если nr_dirty > 0
, то есть несколько страниц, которые необходимо записать на диск.
В вашем случае показаны только фактические скорости чтения / записи. И процессы уже закончили запись, но изменения еще не записаны на диск. Ядро в настоящее время делает это, когда вы взглянули на iotop. Вы не видите процесса записи, но вы видите, что на диск были записаны данные.
Это также причина, по которой иногда два значения (общее чтение / запись и фактическое чтение / запись) в верхней части iotop
не равны.
[0] https://lonesysadmin.net/2013/12/22/better-linux-disk-caching-performance-vm-dirty_ratio/
Для производительности, читает критичны (кто-то ждет запрошенных данных), пишет могут быть отложены без каких-либо последствий (очевидно, если они попадают на диск до того, как система выйдет из строя). Если на машине много свободной памяти, не следует ожидать много записей.