Как можно контролировать поток ввода-вывода в определенном каталоге или файле Linux для чтения / записи байт?

У меня проблема с мониторингом потока ввода-вывода в определенном каталоге: количество прочитанных и записанных байтов в течение указанного периода.

Я пытаюсь использовать iostat , inotifywait и inotifywatch , но, к сожалению, они измеряют только активность по каталогу (открывать, закрывать, изменять и т. Д.), Они не дают информации о байтах, считанных и написанных.

2 Solutions collect form web for “Как можно контролировать поток ввода-вывода в определенном каталоге или файле Linux для чтения / записи байт?”

Опция заключается в использовании системы audit . Что-то вроде:

 sudo auditctl -a exit,always -F dir=/the/directory -p rw 

Затем проанализируйте audit.log для системных вызовов ввода / вывода.

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

Если вы знаете, какой процесс будет обращаться к файлу / директории, и вы уверены, что этот процесс выполняет только несколько или никаких других операций ввода-вывода, вы можете проанализировать /proc/PID/io и определить количество прочитанных / записанных байтов, посмотрев на rchar / wchar (любой ввод-вывод) или read_bytes / write_bytes (дисковый ввод-вывод) или даже syscr / syscw (число системных вызовов read () / write ()).

Если вы не знаете, какой процесс будет обращаться к файлу / директории (но вы уверены, что эти процессы выполняют только несколько или вообще не используют другой ввод-вывод) вам нужно посмотреть местоположение с помощью функции inotify , определить PID и затем выполнить механизм описанных в предыдущем абзаце.

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

Все эти решения не соответствуют одному байту, но могут дать вам хорошую оценку.

  • почему iozone не генерирует выходной файл?
  • Мониторинг температуры / IO привода NVMe
  • Как узнать недавно обновленные файлы
  • Очень низкая производительность диска на Samba
  • Dirty in / proc / meminfo для dd
  • `unbuffer` или` stdbuf` для удаления буферизации stdout?
  • Целый конвейерный киоск при промывке USB-накопителя
  • Текущая дисковая нагрузка
  • Сохраняются ли файлы на диске последовательно?
  • Разве «сломан» заменить существующий файл без fsync ()?
  • Как iotop вычисляет относительную активность ввода-вывода?
  • Linux и Unix - лучшая ОС в мире.