2011-07-08 21 views
16

Chcę użyć/proc, aby znaleźć użycie zasobów określonego procesu co sekundę. Zasoby obejmują Cputime, wykorzystanie dysku i wykorzystanie sieci. Spojrzałem na/proc/pid/stat, ale nie jestem pewien, czy otrzymuję wymagane dane. Chcę korzystać z wszystkich 3 zasobów i chcę je monitorować w każdej sekundzie.Uzyskiwanie zasobów procesowych w systemie Linux (procesor, dysk, sieć)

+1

Chcę informacje dla wszystkich 3 zasobów (procesora, dysku i sieci) – sethu

+0

/proc/pid/stat podaje mi czas procesora, ale jestem w stanie zebrać tylko całkowitą statystyki sieci i dysku całej maszyny, a nie konkretny proces – sethu

+0

Nie myśl, że istnieje sposób na zbieranie statystyk dysku i sieci w zależności od procesu - głównie od tego, jak ruch dysku i sieci jest wykonywany jako praca jądra. Na przykład czytanie i zapisywanie na dysk odbywa się za pomocą buforów jądra, a zatem wiele procesów może uzyskać dostęp do tego samego bufora, zanim zostanie faktycznie przepłukany na dysk. To samo dla odczytu, wiele procesów może odczytać ten sam plik, tylko pierwszy spowoduje faktyczny dostęp do dysku, a drugi tylko wskaźnik do bufora jądra. – Soren

Odpowiedz

0

Nie myśl, że istnieje sposób na uzyskanie informacji o dysku i sieci dla każdego procesu.

Najlepsze co możesz mieć to globalny dysk i sieć oraz czas procesora na proces.

Wszystko udokumentowane w man proc

+0

Możesz śledzić niektóre informacje IO (patrz przykładowe narzędzie 'iotop'), ale nie jest ono dostępne we wszystkich jądrach. – duskwuff

+0

Iotop potrzebuje nowszej wersji jądra. Widziałem iotop for io i nethog dla statystyk sieciowych, ale muszę przekompilować do tego nowszą wersję jądra. Miałem to w ostateczności. – sethu

4

Niektóre nowsze jądra mają /proc/<pid_of_process>/io pliku. Tutaj są statystyki IO. Nie jest to udokumentowane w procedurze man, ale możesz spróbować samodzielnie odczytać liczby.

Mam nadzieję, że to pomaga. Alex.

+0

Używam centów 5.6 i jest to dość stare jądro. Nie znajduję tam statystyk io !! – sethu

1

getrusage() realizuje procesor, pamięć i dysk itp

man 2 getrusage

nie wiem o sieci.

0

Najlepszym sposobem podejścia do problemów, jak to jest patrzeć kod źródłowy narzędzi, które wykonują podobną monitorowanie i raportowanie. Chociaż nie ma gwarancji, że używają/proc bezpośrednio, będą one prowadzić do skutecznego sposobu rozwiązania problemu. W twoim przypadku przychodzą na myśl top (1), iotop (8) i nethogs (8).

0

Możesz użyć SAR

-x statystyki raportu dla danego procesu.

Zobacz to więcej szczegółów: http://www.linuxcommand.org/man_pages/sar1.html

Przykład: sar -r -u -b 1 -X PID | grep -v Średnia | grep -v Linux

+0

Ta technika wymaga ponownego uruchomienia systemu, a root musi włączyć systemowe gromadzenie statystyk. –

+0

Z opcją '-x' lub' -X', widzę tylko statystyki dla 'minflt/s majflt/s% użytkownika% systemu nswap/s CPU', a nie statystyki dysku lub sieci. Np. Jeśli podam również opcję '-n DEV', aby zobaczyć statystyki sieci, sar podaje osobne linie z oddzielnymi nagłówkami. Testowałem to na RHEL 5.7. – haridsv

0

Spojrzenia do kasy.

Ma dysk procesora i sieć wszystko na jednym ekranie. To nie jest proces, ale to lepsze niż patrzenie na 3 oddzielne narzędzia.