Jak mogę wyświetlić listę najczęściej używanych plików we / wy?

11

Moje oprogramowanie do zarządzania dokumentami wykonuje wiele operacji we / wy i chciałbym wiedzieć, do których plików ma największy dostęp.

Czy istnieje narzędzie dla systemu Linux, które co kilka sekund wyświetlałoby mi listę najczęściej używanych plików we / wy, takich jak iotop, ale dla plików?

Może to wyglądać następująco:

$ 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

Spojrzałem na łamach człowiekiem iotop, lsof, stracei nie wydają się oferować taką funkcję.

Nicolas Raoul
źródło
Możesz napisać postprocesor, aby uzyskać te informacje z „strace”, ale o ile wiem, takie narzędzie nie istnieje. (Takie narzędzie pominęłoby operacje, które miały miejsce za pośrednictwem „mmap”.)
David Schwartz

Odpowiedzi:

2

Myślę, że twoja metryka „liczba bajtów” jest niewłaściwa. Rozważ dwa wejścia. Jeden odczytuje 10 MB z pliku. Drugi czyta co 512. bajt pliku przez pierwsze 10 MB. „Liczba bajtów” będzie 512 razy wyższa dla pierwszego dostępu w porównaniu do drugiego. Obaj jednak dokładnie obciążą podsystem we / wy.

Jeśli możesz zaakceptować „liczbę operacji”, która jest prawie tak dobra lub tak zła jak „liczba bajtów”, masz coś, co możesz zmierzyć. inotifywatchProgram robi to, i to prawdopodobnie część swojej dystrybucji w inotify-toolsopakowaniu.

Natychmiast powie ci, które pliki stanowią większość dostępów, i prawdopodobnie pozwoli ci rozwiązać rzeczywisty problem.

David Schwartz
źródło
iotop używa MB / s jako metryki, czy iotop się myli? +1 za sugestię inotifywatch, przykład na stronie podręcznika jest DOKŁADNIE tym, czego potrzebuję i tym, co opisałem w moim pytaniu. Wielkie dzięki!
Nicolas Raoul,
Racja, ale „iotop” nie może zidentyfikować plików, tylko blokuje urządzenia. Może więc pomóc w zidentyfikowaniu problemu i / lub problematycznego systemu plików / urządzenia, ale nie w przypadku plików, do których on ma dostęp. Może być konieczne złożenie elementów z różnych narzędzi.
David Schwartz
Hum, ciekawe, dzięki! Teraz gram z inotifywatch i sprawdzę, co mogę zrobić.
Nicolas Raoul,
0

Przede wszystkim, aby wyjaśnić: nie ma czegoś takiego jak „pliki konsumujące IO” . Pliki są obiektami pasywnymi. Są to programy, które wyzwalają operacje wejścia / wyjścia (zwykle poprzez odczyt / zapis plików) i mogą uzyskiwać dostęp do plików częściej lub rzadziej. Więc przepustowość wspomnieć w odniesieniu do plików, które faktycznie nie mają większego sensu. Przydatną informacją dotyczącą plików może być to, jak często są one otwierane i modyfikowane. Można to monitorować za pomocą notifywait -m /some/file/or/directory(z narzędzi inotify ) lub bardziej złożonego systemu, takiego jak FAM lub Gamin .

rozcietrzewiacz
źródło
Opisałbym tę „przepustowość” (inne słowo może być bardziej odpowiednie, przepraszam za mój angielski) jako ilość bajtów, które są odczytywane / zapisywane z / do określonego pliku w ciągu jednej sekundy (suma dla każdego procesu, który uzyskał dostęp do pliku podczas tego druga). Mam nadzieję, że to ma sens. inotifywait, fam, gamin niestety mówią tylko „Plik X został zmodyfikowany / odczytany”, co jest interesujące, ale nie to, czego szukam.
Nicolas Raoul,