Статистика в / proc / diskstats всегда показывает больше записей, чем читает

1249
Emilio Lazo

Я взял следующую статистику из / proc / diskstats:

9 0 md0 106989 0 _2923830_ 0 117988 0 _3448953_ 0 0 0 0 8 0 sda 33840 22299 _1143351_ 871132 87336 194804 _2003961_ 2201868 0 949992 3075508 8 32 sdc 34326 22412 _1147488_ 530856 85645 193714 _1981641_ 1147288 0 777236 1679364 8 16 sdb 34090 22044 _1145348_ 516996 87908 194091 _2002553_ 1160088 0 777432 1678168 253 0 dm-0 61416 0 _1474562_ 1089052 8671 0 _71664_ 2314824 0 152296 3403896 253 1 dm-1 16733 0 _321034_ 177216 39437 0 _1292056_ 2234284 0 366448 2411516 253 2 dm-2 27407 0 _1103562_ 301084 57436 0 _1918752_ 3595356 0 495024 3896452 253 3 dm-3 1223 0 _22904_ 16800 5373 0 _166481_ 537476 0 101444 554276 

md0 - это устройство RAID5 с sda3, sdb3 и sdc3. dm-0, dm-1, dm-2 и dm-3 - это /, / home, / var и squid-cache. Ядро 3.17-1-amd64, Debian sid.

За исключением dm-0, почему всегда больше записанных секторов, чем прочитанных? (оба выделены; 8 часов безотказной работы)

Другая машина (ядро 3.13.0-42-generic, LinuxMint 17.1):

8 0 sda 348838 182021 _14285981_ 3994572 2220600 1291157 _179318400_ 150821584 0 6850872 154817944 

Еще один (ядро 3.11-1-amd64, Debian wheezy:

8 16 sdb 5759214 809293 _345212787_ 20363500 6136587 7332680 528239577 _419346280_ 0 34343932 439745468 

Последний (RAID1, ядро ​​3.2.0-4-amd64, Debian wheezy):

9 0 md0 18465 0 _765758_ 0 1471467 0 _17892758_ 0 0 0 0 8 0 sda 127945 54619 _15162313_ 1237028 1342374 3413939 _41328777_ 35251952 0 9247532 36501996 8 16 sdb 123240 48371 _14849663_ 1225468 1342456 3413948 _41328777_ 35337212 0 9281520 36573484 

Там действительно больше пишет, чем читает, или я что-то упустил?

1
Проверял `/ sys / block / sdx / stat` тоже? Может быть полезно https://www.kernel.org/doc/Documentation/iostats.txt Xen2050 9 лет назад 0
/ sys / block / sdx / stat выдает то же самое. Я прочитал iostats.txt и текстовый файл procfs-diskstats. Я смотрю на поля, представляющие секторы чтения и записи секторов. В том же физическом устройстве, разделе и логическом устройстве записанные сектора выше, чем считанные сектора. Это кажется бессмысленным. Это происходит даже без использования системы. Файловые системы ext4 с 'relaytime'. Emilio Lazo 9 лет назад 0
Я пытаюсь использовать `noatime`, чтобы избежать лишних записей ... Xen2050 9 лет назад 0
Я перемонтировал их на лету с помощью noatime несколько часов назад, и прирост в секторах чтения / записи был в том же соотношении. Теперь я перезагружу и смонтирую все задействованные файловые системы с `noatime`, чтобы быть уверенным. Позже я опубликую результаты. Спасибо! Emilio Lazo 9 лет назад 0

2 ответа на вопрос

0
Neosimago

Это хорошее место для обзора:

http://www.linuxquestions.org/questions/suse-novell-60/interpreting-proc-diskstats-360350/

А для зеркала md0 RAID1 всегда будет больше записей, потому что ему нужно записать все данные дважды и прочитать один раз. Какое бы устройство ни считывало данные первыми :)

Это концепция использования зеркала для распространения данных в случае сбоя устройства.

ура!

Спасибо! но я прочитал это еще. Когда md0 - RAID1, записанные секторы одинаковы на обоих физических устройствах, но они больше, чем считанные сектора, сравниваемые на одном устройстве (физический, раздел, md или логический dm). С RAID5 ситуация аналогичная: устройства dm показывают больше записей, чем читает; их базовые устройства (например, md0) ведут себя таким же образом (гораздо больше операций записи), и снова их базовые устройства (например, sda2 и sdb2) также ведут себя таким же образом, и, конечно, sd . Я не рассматриваю что-то решающее или это ошибка ядра? Все задействованные файловые системы являются ext4 с релейным временем или noatime. Приветствия. Emilio Lazo 9 лет назад 0
0
Xen2050

Просто подумал, что ваш кэш чтения диска (в ОЗУ) может очень хорошо справляться с сохранением часто читаемых файлов в ОЗУ, оставляя только записи на диск для фактического использования диска.

Если у вас есть много оперативной памяти, и вы обычно не читаете много новых данных с жесткого диска, кэш оперативной памяти может заменить МНОГО потенциального чтения с диска.

И вышеупомянутый параметр монтирования noatimeможет также избежать лишних записей, если вы не используете « Mutt или другие приложения, которым нужно знать, был ли файл прочитан с момента его последнего изменения ».

Также с `noatime` мы имеем в основном то же самое. Действительно, с 8 ГБ я могу оценить каждый раз, как использование ОЗУ в качестве кэша чтения с диска действительно повышает производительность, поэтому я думаю, что это причина! Может быть отключен кэш чтения диска? Было бы полезно для меня принять новые меры и посмотреть, насколько увеличилось чтение статистики. Я просмотрел опции procfs без успеха. Я не хочу заполнять всю RAM файлом в tmpfs. Спасибо!! Emilio Lazo 9 лет назад 0
Я читал о том, как очистить кеш диска, связанный с записью 1-3 в `/ proc / sys / vm / drop_caches`, было [описано здесь] (https://www.kernel.org/doc/Documentation/sysctl/ vm.txt) и также имеет «vfs_cache_pressure», но это не похоже на «вкл / выкл» переключатель ... Я уверен, что поиск в Интернете будет плодотворным Xen2050 9 лет назад 0

Похожие вопросы