Zazwyczaj zrzucam prosty skrypt do tego typu pracy.
Zapoznaj się z dokumentacją jądra dla systemu plików proc (Google 'linux proc.txt').
Pierwsza linia /proc/stat
(Sekcja 1.8 w proc.txt) da łączne statystyki użycia procesora (tj. Użytkownik, ładny, system, bezczynność, ...). Dla każdego procesu plik /proc/$PID/stat
(Tabela 1-4 w proc.txt) zawiera obie statystyki dotyczące użycia procesora oraz statystyki użycia pamięci (patrz rss).
Jeśli szukasz trochę informacji, znajdziesz tam wiele szczegółowych informacji o tych plikach oraz wskazówki do bibliotek/aplikacji/fragmentów kodu, które pomogą Ci uzyskać/uzyskać wartości, których potrzebujesz. Mając to na uwadze, skupię się na strategii wysokiego szczebla.
Dla statystyk procesora użyj ulubionego języka skryptowego, aby utworzyć plik wykonywalny, który pobiera zestaw identyfikatorów procesu do monitorowania. W ustalonym odstępie czasu (np. 1 sekunda) odpytuj/oblicz sumy skumulowane dla każdego procesu i systemu jako całości. Podczas każdego interwału sondowania, zapisz wszystkie wyniki w jednym wierszu na standardowe wyjście.
Dla statystyk pamięci, napisz podobny skrypt, ale po prostu zapisz użycie pamięci procesowej. Pamięć jest nieco łatwiejsza, ponieważ bezpośrednio uzyskujemy wartości chwilowe.
Uruchom ten skrypt na czas trwania testu, przekazując zestaw identyfikatorów procesów, które chcesz monitorować i przekierowując jego wyniki do pliku dziennika.
./logcpu $(pidof foo) $(pidof bar) > cpustats
./logmem $(pidof foo) $(pidof bar) > memstats
importować zawartość tych plików do arkusza kalkulacyjnego (w niektórych zastosowaniach jest to tak proste, jak kopiuj/wklej). W przypadku procesora są to wartości chwilowe, ale mają wartości skumulowane, więc aby uzyskać te wartości, trzeba wykonać kilka drobnych arkuszy kalkulacyjnych (jest to po prostu delta "t (x + 1) - t (x)"). Oczywiście, możesz napisać deltę na swoim rejestratorze procesora, ale poświęcisz nieco więcej czasu na pisanie skryptu.
Wreszcie użyj arkusza kalkulacyjnego, aby wygenerować ładną fabułę.
MMonit to koniecznością. Pojedynczy monit jest bezpłatny, klastra MMonit jest płatny. – erm3nda