Interesuje mnie narzędzie lub proces monitorowania IO dysku według pliku w CentOS.
W Win2008 narzędzie resmon pozwala na tego rodzaju drążenie, ale żadne z narzędzi Linuksa, które znalazłem, nie robi tego (iostat, iotop, dstat, nmon).
Moje zainteresowanie monitorowaniem wąskich gardeł we / wy na serwerach baz danych. W przypadku MSSQL znalazłem pouczającą diagnostykę, aby dowiedzieć się, które pliki / przestrzenie plików są najbardziej dotknięte.
Odpowiedzi:
SystemTap jest prawdopodobnie najlepszą opcją.
Oto jak wygląda wyjście z przykładu iotime.stp :
Wadą (oprócz krzywej uczenia się) jest to, że będziesz musiał zainstalować debugowanie jądra , co może nie być możliwe w systemie produkcyjnym. Można jednak skorzystać z instrumentacji krzyżowej, w której kompiluje się moduł w systemie programistycznym i uruchamia ten plik .ko w systemie produkcyjnym.
Lub jeśli jesteś niecierpliwy, spójrz na Rozdział 4. Przydatne skrypty SystemTap z przewodnika dla początkujących.
źródło
Skrypt SystemTap * :
Dane wyjściowe wyglądają następująco:
Lub jeśli zdecydujesz się wyświetlać tylko ścieżkę z punktu montowania:
Ograniczenia / błędy:
devname
jest"N/A"
devname
jest"N/A"
Wyniki dla programów Matthew Ife :
dla mmaptest private:
dla mmaptest udostępnionego:
dla diotestu (bezpośrednie I / O):
* Instrukcje szybkiej konfiguracji dla RHEL 6 lub równoważnego:
yum install systemtap
idebuginfo-install kernel
źródło
task_dentry_path
) :-) Nie mam pojęcia o tym I / O, ale mogę go przetestować, jeśli wydasz mi polecenie lub przykładowy program. Na przykład użyłem Pythona do przetestowania mmapa.dd iflag=direct oflag=direct
pokazuje się.Naprawdę chcesz do tego użyć
blktrace
. Zobacz Wizualizacja Linux IO za pomocą Seekwatchera i blktrace .Zobaczę, czy wkrótce mogę opublikować jeden z moich przykładów.
Edytować:
Nie wspominasz o dystrybucji Linuksa, ale być może jest to dobry przypadek skryptu dtrace w systemie Linux, a nawet System Tap , jeśli używasz systemu podobnego do RHEL.
źródło
Jedyne znane mi narzędzie, które może monitorować aktywność we / wy według plików, to
inotifywatch
. To częśćinotify-tools
pakietu. Niestety daje tylko liczbę operacji.źródło
użyj iotop, aby uzyskać PID procesów, które przyczyniają się do wysokiego IO
uruchom strace w stosunku do wygenerowanego PID, zobaczysz, które pliki są uzyskiwane przez dany proces
źródło
W końcu użyłem do tego Sysdig
źródło
csysdig
, naciśnij klawisz F2 i wybierzFiles
widok. Zobaczysz górę dostępnych plików według kolumny OPS (można to zmienić, naciskając F9).csysdig -v files
przechodzi bezpośrednio do widoku „Pliki”Twierdzę, że mogłeś zadać niewłaściwe pytanie. jeśli szukasz wąskich gardeł we / wy, równie ważne może być zobaczenie, co dzieje się na dysku. db są znane z robienia losowych operacji we / wy, co może znacznie zmniejszyć przepustowość, szczególnie jeśli masz tylko kilka wrzecion.
ciekawsze może być sprawdzenie, czy masz długi czas oczekiwania na samych dyskach. możesz to zrobić za pomocą polecenia collectl za pomocą polecenia „collectl -sD”, które wyświetli statystyki wydajności poszczególnych dysków. Czy - home, aby zmienić go w narzędzie podobne do najlepszych? Jeśli w grę wchodzi wiele dysków, uruchom ją za pomocą colmux: colmux -command "-sD", a pozwoli ci to sortować według wybranej kolumny, nawet w wielu systemach.
źródło
Możesz monitorować operacje wejścia / wyjścia według urządzenia blokowego (przez / proc / diskstats) i według procesu (rozliczanie io przez
/proc/$PID/io
lub stacje zadań ), ale nie znam sposobu, aby to zrobić dla pliku.źródło
Może być inotify rozwiąże problem.
Interfejs API inotify zapewnia mechanizm monitorowania zdarzeń w systemie plików. Inotify może służyć do monitorowania pojedynczych plików lub do monitorowania katalogów. Gdy katalog jest monitorowany, inotify zwróci zdarzenia dla samego katalogu i plików w nim zawartych.
Monitoruj aktywność systemu plików za pomocą inotify
inotify Reference
źródło
lsof
)Chociaż w odpowiedziach jest wiele dobrych informacji, zastanawiam się, czy to rzeczywiście dotyczy?
Jeśli mówisz o plikach o wielkości 10 gigabajtów, ciągle zapisywanych, to chyba że są to pliki dziennika lub podobne, które są stale dołączane (w takim przypadku monitoruj tylko rozmiary plików), najprawdopodobniej pliki są mapowane w mmap . W takim przypadku najlepszą odpowiedzią może być zaprzestanie poszukiwania większości rozwiązań. Pierwszą rzeczą, którą powinieneś następnie zapytać o inne proponowane rozwiązanie, jest „czy to działa z mmap”, ponieważ w większości tak nie jest. Jednak możesz być w stanie przekształcić problem w monitorowanie urządzenia blokowego zamiast monitorowania pliku.
Gdy program prosi o stronę z pliku mmap'd, odnosi się tylko do lokalizacji w pamięci wirtualnej. Ta strona może już nie być w pamięci. JEŚLI tak nie jest, generuje to błąd strony, który powoduje załadowanie strony z dysku, ale dzieje się tak w systemie pamięci wirtualnej, który nie jest łatwo powiązany z konkretnym procesem aplikacji lub z konkretnym plikiem. Podobnie, gdy twoja aplikacja aktualizuje stronę mmap, w zależności od flag, może to nie spowodować natychmiastowego zapisu na dysk, aw niektórych przypadkach może wcale nie przejść na dysk (choć prawdopodobnie te ostatnie nie są przypadkami, które Cię interesują) w).
Najlepsze, co mogę wymyślić dla plików mmap, jeśli jest to dla ciebie opłacalne, to umieszczenie każdego z interesujących plików na osobnym urządzeniu i wykorzystanie statystyk urządzenia do zebrania informacji o użyciu. Możesz do tego użyć partycji lvm. Wiązanie łączenia nie działa jednak, ponieważ nie tworzy nowego urządzenia blokowego.
Gdy masz pliki na osobnych urządzeniach blokowych, możesz uzyskać statystyki z / sys / block / * lub / proc / diskstats
Wprowadzenie tego na serwer produkcyjny może być zbyt destrukcyjne, ale być może możesz z niego skorzystać.
JEŻELI pliki nie są odwzorowane na mma, to tak, możesz wybrać jedno z innych rozwiązań tutaj.
źródło
Niedawno majstrowałem przy kolekcjonowaniu , wygląda na świetne narzędzie i dość proste w instalacji. Najciekawsze jest to, że możesz dowiedzieć się, który proces jest odpowiedzialny za wąskie gardła we / wy. Polecam przeczytanie Korzystanie z Collectl , może być przydatne.
źródło
Poleciłbym sprawdzić http://dag.wieers.com/home-made/dstat/ . To świetne narzędzie pozwala sprawdzić wiele statystyk.
źródło
Myślę, że iotop jest jednym z najlepszych narzędzi w Linuksie do identyfikowania wąskich gardeł w IO.
źródło
iotop
nie monitoruje pliku, działa na proces