Почему показатели /proc/diskstats внезапно стали невероятно низкими?

Почему показатели /proc/diskstats внезапно стали невероятно низкими?

У меня есть сервер Debian jessie с двумя SSD-накопителями Intel DC S3610 в RAID-10. Он достаточно загружен для ввода-вывода, и в течение последних нескольких недель я строил графики IOPS:

График дисковых транзакций ввода-вывода для sda

Как вы можете видеть, большую часть времени он успешно выполнял около 1 тыс. операций чтения в среднем, достигая пика около 5,5 тыс., пока в полночь по всемирному координированному времени в пятницу этот показатель внезапно не прекратился, и операции чтения не упали практически до нуля.

На самом деле я заметил это только задним числом, потому что дело в том, что сервер все еще работает так, как должен. То есть, я считаю, что сломался мониторинг, а не количество IOPS, которое может сделать настройка. Если бы фактический IOPS упал до отображаемого уровня, я бы это знал, потому что все остальное очень заметно сломалось бы.

При дальнейшем исследовании графики прочитанных/записанных килобайт также оказались сломанными в той же точке. Графики задержки запроса в порядке.

В попытке исключить конкретное графическое решение, используемое здесь (cacti и SNMP), я взглянул наiostat. Его выходные данные соответствуют тому, что отображается на графиках.

Насколько мне известноiostatполучает информацию от/proc/дискстатс. В соответствии сhttps://www.kernel.org/doc/Documentation/iostats.txtтам будет основной номер, дополнительный номер, имя устройства, а затем набор полей, из которых первое — это количество завершенных чтений. Итак:

$ for i in {1..10}; do awk '/sda / { print $4 }' /proc/diskstats; sleep 1; done
3752035479
3752035484
3752035484
3752035486
3752035486
3752035519
3752035594
3752035631
3752036016
3752036374

Просто невероятно, что за этот 10-секундный промежуток было выполнено столь малое количество считываний.

Но если/proc/дискстатслжет мне, тогда в чем может быть проблема и как я могу надеяться ее исправить?

Также интересен тот факт, что все изменения произошли ровно в полночь, что является скорее совпадением.

На сервере довольно много блочных устройств. 187 из них — это LVM LV, а еще 18 — обычные разделы и md-устройства.

Я регулярно добавлял больше LV, так что, возможно, в четверг я достиг какого-то предела, хотя я не добавлял их где-либо около полуночи, так что все равно странно, что что-то пошло не так, но сделало это именно в полночь.

я знаю это/proc/дискстатсможет произойти переполнение, но когда это происходит, числа обычно оказываются ошибочно большими.

Если присмотреться к графику повнимательнее, то можно увидеть, что в четверг он выглядит более резким, чем в предыдущую неделю (и недели). Увеличивая масштаб результатов только за этот период, мы видим:

График IOPS, sda, с упором на четверг

Эти пробелы в нулевых или близких к нулевым показаниях ненормальны, и я не верю, что они отражают реальность. Возможно, количество запросов превысило некий порог, поскольку я добавил больше нагрузки, так что это начало проявляться в четверг, а к пятнице большинство показаний теперь равны нулю?

Есть ли у кого-нибудь идеи относительно того, что здесь происходит?

Версия ядра 3.16.7-ckt11-1+deb8u3.

Связанный контент