Як я можу перерахувати найпопулярніші файли, що споживають IO?


11

Моє програмне забезпечення для управління документами робить багато IO, і я хотів би знати, до яких файлів найбільше доступ.

Чи є інструмент 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, прикладом на сторінці man є ТОЧНО, що мені потрібно, і що я описав у своєму запитанні. Дуже дякую!
Ніколя Раул

Правильно, але "iotop" не може ідентифікувати файли, лише блокувати пристрої. Тож це може допомогти вам визначити проблемний процес та / або проблемну файлову систему / пристрій, але не до яких файлів він має доступ. Можливо, вам доведеться складати шматки з різних інструментів.
Девід Шварц

Гум, цікаво, дякую! Зараз я граю з inotifywatch, і я перевірю, що я можу зробити.
Nicolas Raoul

0

Перш за все, для уточнення: Не існує такого поняття, як "файли, що споживають IO" . Файли - це пасивні об’єкти. Це програми, які запускають IO (як правило, шляхом читання / запису файлів), і вони мають доступ до файлів більш-менш часто. Тож пропускна здатність, яку ви згадуєте стосовно файлів, насправді мала б особливий сенс. Корисною інформацією щодо файлів може бути те, як часто до них звертаються та змінюються. Це можна контролювати, використовуючи notifywait -m /some/file/or/directory(від інструментів інотифікації ) або якусь більш складну систему, наприклад FAM або Gamin .


Я би описав цю "пропускну здатність" (інше слово може бути більш доречним, вибачте за мою англійську) як кількість байтів, які читаються / записуються з / у певний файл протягом однієї секунди (сума за кожен процес, до якого звертався до файлу протягом цього другий). Сподіваюся, це має більше сенсу. inotifywait, fam, gamin, на жаль, скаже мені лише "Файл X змінено / прочитано", що цікаво, але не те, що я шукаю.
Ніколя Рауль
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.