Jeśli uruchomię top -c
lub htop
dostanę procesy związane z ich zużyciem pamięci, ale nie chcę tego widzieć.
Czy istnieje wiersz poleceń, który pozwala zobaczyć zużycie pamięci RAM przez aplikację?
Na przykład chcę zobaczyć zużycie pamięci RAM przez serwer Apache (zamiast sprawdzania wszystkich uruchomionych procesów)
10
Odpowiedzi:
Istnieje bardzo dobre szczegółowe wyjaśnienie tutaj: https://blogs.kde.org/2005/09/15/measuring-memory-usage
Ale w gruncie rzeczy: musisz się naprawdę zagłębić i zrozumieć, jak skonfigurowana jest aplikacja.
Na przykład patrząc na mysql:
Całkowita wykorzystana pamięć wynosi około 25 MB (weź 27 MB RES i odejmij współdzielone (SHR))
Sprawdziłem to, sprawdzając całkowite użycie pamięci (free -m, + / buffers / cache) przed i po wydaniu „killall mysqld”. Po zabiciu wszystkich procesów mysqld zużycie pamięci spadło o 25 MB zgodnie z „free-m”.
Jeśli zauważysz, że każdy proces ma identyczne kolumny VIRT, RES i SHR, prawdopodobnie są to tylko wątki tego samego procesu. (Starsze biblioteki Linuksa obsługiwały wątki poprzez tworzenie wielu rzeczywistych procesów, które zasadniczo zajmowały tę samą pamięć)
Jeśli są różne, możesz być w stanie to oszacować, wykonując SUMĘ (RES - SHR). Ale to działa tylko wtedy, gdy procesy są w rzeczywistości oddzielnymi procesami, a nie tylko wątkami tego samego procesu. Pomocne jest także spojrzenie na PPID (identyfikator procesu rodzica). Jeśli wszyscy mają tego samego rodzica, prawdopodobnie są to tylko wątki (choć niekoniecznie).
Niestety w Linuksie nie ma naprawdę dobrego, łatwego sposobu na rozwiązanie tego problemu. Jedynym łatwym sposobem jest sprawdzenie „darmowy” bezpośrednio przed zakończeniem procesu i sprawdzenie go ponownie natychmiast po nim. spójrz na wiersz „- / + buffers / cache:” i zobacz, jak bardzo zmniejszyło się użycie pamięci, a to powie ci, ile zużyło.
źródło
Przy odrobinie pomocy
man ps
i tej wspaniałej odpowiedzi ...Na przykład:
Innymi słowy:
To może być prowadzony bez
-x
itail -1
:pokazuje tylko procent:
Podczas używania
top
możesz także nacisnąć, iaby zignorować procesy bezczynności / zombie, aby ułatwić czytanie:źródło
pmap
pokazuje wiele rzeczy na temat zasobów, których używa PID. Informacje są dostarczane na podstawie nazwy procesu i identyfikatora PID znalezionego przy jego użyciupidof
, więc główny proces pokazuje, czy jakąkolwiek nazwę podasz (myślę, nie wiem, czy odnosi się to do procesów nadrzędnych)