Jest to prosty problem, ale po raz pierwszy musiałem go naprawić: znalezienie, które konkretne pliki / i-węzły są celami największej liczby operacji we / wy. Chciałbym móc uzyskać ogólny przegląd systemu, ale jeśli muszę podać PID lub TID, nic mi nie jest.
Chciałbym przejść bez konieczności strace
uruchamiania programu, który się pojawi iotop
. Najlepiej, używając narzędzia w tym samym stylu, co narzędzie, iotop
które sortuje według pliku. Mogę użyć, lsof
aby zobaczyć, które pliki listonosz ma otwarty, ale nie wskazuje, który plik otrzymuje We / Wy ani ile.
Widziałem gdzie indziej, gdzie sugerowano użycie, auditd
ale wolałbym tego nie robić, ponieważ umieszczałoby to informacje w naszych plikach kontroli, których używamy do innych celów, i wydaje się, że to problem, który powinienem być w stanie zbadać w ten sposób.
Konkretny problem, jaki mam teraz, to zbyt szybkie zapełnianie migawek LVM. Od tego czasu rozwiązałem problem, ale chciałbym móc go rozwiązać w ten sposób, zamiast robić tylko ls
wszystkie otwarte deskryptory plików, /proc/<pid>/fd
aby zobaczyć, który z nich rośnie najszybciej.
źródło
fatrace
ale starsze, coś takiego jak skrypt, który napisałem, powinno zostały zaoferowane, ponieważ są bardziej użyteczne.Odpowiedzi:
Istnieje kilka aspektów tego pytania, które zostały częściowo rozwiązane za pomocą innych narzędzi, ale wydaje się, że nie ma jednego narzędzia zapewniającego wszystkie funkcje, których szukasz.
iotop
To narzędzie pokazuje, które procesy zużywają najwięcej I / O. Brakuje jednak opcji wyświetlania określonych nazw plików.
Domyślnie robi to, co
top
robi normalnie dla procesów rywalizujących o czas procesora, z wyjątkiem dyskowych operacji we / wy. Możesz go nakłonić, aby uzyskać widok 30 000 stóp za pomocą-a
przełącznika, tak aby z czasem pokazywał akumulację według procesu.i * narzędzia (inotify, iwatch itp.)
Narzędzia te zapewniają dostęp do zdarzeń dostępu do plików, jednak muszą być specjalnie ukierunkowane na określone katalogi lub pliki. Nie są więc tak pomocne, gdy próbują wyśledzić nieuczciwy dostęp do pliku przez nieznany proces podczas debugowania problemów z wydajnością.
Również
inotify
framework nie podaje żadnych szczegółów na temat plików, do których uzyskiwany jest dostęp. Tylko typ dostępu, więc żadne informacje o ilości danych przenoszonych tam iz powrotem nie są dostępne przy użyciu tych narzędzi.iostat
Pokazuje ogólną wydajność (odczyt i zapis) na podstawie dostępu do danego urządzenia (dysku twardego) lub partycji. Ale nie zapewnia wglądu w to, które pliki generują te dostępy.
blktrace
Ta opcja ma zbyt niski poziom. Brakuje wglądu w to, które pliki i / lub i-węzły są dostępne, tylko surowe numery bloków.
Fatrace
Jest to nowy dodatek do jądra Linuksa i mile widziany, więc jest dostępny tylko w nowszych dystrybucjach, takich jak Ubuntu 12.10. W moim systemie Fedora 14 brakowało go 8-).
Zapewnia taki sam dostęp, jak można uzyskać
inotify
bez konieczności kierowania do określonego katalogu i / lub plików.Powyższe pokazuje identyfikator procesu, który uzyskuje dostęp do pliku i do którego pliku ma dostęp, ale nie zapewnia ogólnego wykorzystania przepustowości, więc każdego dostępu nie można odróżnić od żadnego innego dostępu.
Co więc zrobić?
Ta
fatrace
opcja pokazuje najbardziej obiecujące dla KOŃCOWO dostarczenie narzędzia, które może pokazać zagregowane użycie dysku I / O na podstawie plików, do których uzyskiwany jest dostęp, zamiast procesów uzyskujących dostęp.Referencje
źródło
fatrace
i nie rozwinęła go zbyt wiele. Naprawdę doceniam sposób, w jaki dokładasz wszelkich starań, aby upewnić się, że ludzie rozumieją pełny obraz i żałuję, że nie mogę zrobić więcej niż tylko głosować i dać nagrodę.yum
ściągnąłem biblioteki python3 z jakiegoś powodu. Zrobiłemfile
to i wygląda na to, że jest to plik wykonywalny ELF.ldd
nie wyświetla żadnych linkówpython
i nie mastrings
. Wiesz, dlaczego miałeś problem z python3?iotop
iiostat
połączeń. Zrozumiałem też kwestię python, wygląda na to, że (przynajmniej na Fedorze 18) jestpython
skrypt „raport zużycia energii”, więcyum
właśnie reagowałem na fakt, żepython
jest to zależność RPM. Aby ta szczególna tajemnica została rozwiązana.Nie otrzymałem jeszcze odpowiedzi, ale napisałem ten skrypt (na końcu) i wydaje się, że robi to, co chcę. Nie testowałem tego na innych systemach i jest on specyficzny dla systemu Linux.
Zasadniczo po prostu zawija się
strace
przez 30 sekund, filtrując wywołania systemowe związane z plikami i stara się usunąć nazwę pliku. Liczy liczbę wystąpień tego pliku wstrace
i przedstawia użytkownikowi paginowane podsumowanie. Nie jest idealny, ale liczba wywołań systemowych do określonego pliku może mieć słabą korelację z wydajnością operacji we / wy.Nie przetestowałem go w pełni, ale jeśli nie działa po wyjęciu z pudełka, powinno dać ludziom miejsce, od którego można zacząć. Jeśli zostanie już rozwinięty, może być wskazane ponowne zapisanie go w języku wyższego poziomu, takim jak python .
Jeśli nie otrzymam odpowiedzi w ciągu tygodnia od mniej domowego podejścia (nawet jeśli jest to inne narzędzie, które liczy tylko operacje wejścia / wyjścia danego procesu), zaakceptuję to jako moją odpowiedź dla potomności.
Scenariusz:
źródło
Możesz użyć iwatch za pomocą iWatch
iWatch jest bardzo prosty w użyciu, załóżmy, że chcesz obejrzeć zmianę w systemie plików / etc, wystarczy uruchomić go w konsoli
i iwatch powie ci, jeśli coś się zmieni w tym katalogu. A jeśli chcesz otrzymywać powiadomienia pocztą e-mail:
W takim przypadku administrator otrzyma powiadomienie e-mailem (być może możesz użyć konta bramy sms, więc natychmiast zostaniesz zaalarmowany w dowolnym miejscu i czasie). A jeśli chcesz monitorować wiele katalogów różnic, możesz użyć pliku konfiguracyjnego. Ten plik konfiguracyjny jest plikiem XML z łatwą do zrozumienia strukturą.
źródło
inotify
to prawda? Wahałem się przed użyciem czegokolwiek opartego na tym,inotify
że musisz podać ścieżki (co jest zasadniczo tym, czego szukam) i martwiłem się, ile byłoby narzutu, gdybym tylko zrobił wszystko pod spodem/
Czy można filtrować według PID? Być może będę w stanie tolerować chwilowe spowolnienie, jeśli łatwo będzie wyodrębnić, który program to robi. Witryna nie ma również żadnych przykładowych danych wyjściowych poleceń.