Как я могу перечислить лучшие файлы ввода-вывода?

11

Мое программное обеспечение для управления документами выполняет много операций ввода-вывода, и я хотел бы знать, к каким файлам он обращается чаще всего.

Существует ли инструмент Linux, который каждые несколько секунд выводил бы список самых популярных файлов, потребляющих ввод-вывод, например, iotop, но для файлов?

Это может выглядеть так:

$ thetool
THRPUT   R/W/SWP FILE
40MB/s   write   /usr/alfresco/repo/1283421/1324928.doc
12MB/s   read    /usr/alfresco/cache/3928dh29f8if
11MB/s   read    /tmp/239398hf2f024f472.tmp

Я посмотрел на человека страницах iotop, lsof, straceи они , кажется, не предлагают такую возможность.

Николас Рауль
источник
Вы можете написать постпроцессор, чтобы получить эту информацию от 'strace', но, насколько я знаю, такого инструмента не существует. (Такой инструмент будет пропускать операции, выполняемые через «mmap».)
Дэвид Шварц,

Ответы:

2

Я думаю, что ваш показатель «количество байтов» является неправильным. Рассмотрим два доступа. Один читает 10 МБ из файла. Другой читает каждый 512-й байт файла для первых 10 МБ. «Количество байтов» будет в 512 раз больше для первого доступа по сравнению со вторым. Тем не менее они оба будут оказывать одинаковую нагрузку на подсистему ввода-вывода.

Если вы можете принять «количество операций», которое примерно такое же хорошее или такое же плохое, как «количество байтов», то у вас есть что-то, что вы можете измерить. inotifywatchПрограмма делает это, и это, скорее всего , часть вашего дистрибутива inotify-toolsпакета.

Он сразу скажет вам, какие файлы составляют основную часть доступа, и, вероятно, позволит вам решить вашу реальную проблему.

Дэвид Шварц
источник
iotop использует MB / s в качестве метрики, iotop не так? +1 для вашего предложения inotifywatch, пример на странице руководства именно то, что мне нужно, и то, что я описал в своем вопросе. Большое спасибо!
Николас Рауль
Да, но «iotop» не может идентифицировать файлы, только блокировать устройства. Таким образом, это может помочь вам определить проблемный процесс и / или проблемную файловую систему / устройство, но не определить, к каким файлам он обращается. Возможно, вам придется собрать куски из разных инструментов.
Дэвид Шварц
Хм, интересно, спасибо! Сейчас я играю с inotifywatch и проверю, что я могу сделать.
Николас Рауль
0

Прежде всего, чтобы уточнить: не существует такого понятия, как «файлы ввода-вывода» . Файлы являются пассивными объектами. Это программы, которые запускают IO (обычно путем чтения / записи файлов), и они могут получить доступ к файлам более или менее часто. Таким образом, пропускная способность, которую вы упоминаете в отношении файлов, на самом деле не имеет особого смысла. Полезная информация о файлах может быть о том, как часто они доступны и изменены. Это можно контролировать с помощью notifywait -m /some/file/or/directory(из инструментов inotify ) или более сложной системы, такой как FAM или Gamin .

rozcietrzewiacz
источник
Я бы описал эту «пропускную способность» (другое слово может быть более подходящим, извините за мой английский) как количество байтов, которые считываются / записываются из / в определенный файл в течение одной секунды (сумма для каждого процесса, который обращался к файлу в течение этого второй). Я надеюсь, что это имеет больше смысла. inotifywait, fam, gamin, к сожалению, только скажите мне «Файл X был изменен / прочитан», что интересно, но не то, что я ищу.
Николас Рауль