Jak sprawdzić, który proces zużywa najwięcej pamięci


33

Kiedy rejestruję freena jednym z serwerów Prod, pokazuje 70% używanej pamięci:

             total       used       free     shared    buffers     cached
Mem:     164923172  141171860   23751312          0    4555616   20648048
-/+ buffers/cache:  115968196   48954976
Swap:      8388600          0    8388600

Ale nie znalazłem, który proces korzysta z pamięci, wypróbowałem toppolecenie i pokazuje proces wykorzystujący pamięć tylko 1,1 i 5,4%

Jak znaleźć proces, który korzysta z pamięci?

Poniżej znajdują się wyniki najlepszych poleceń:

15085 couchbas  25   0 2784m 2.4g  40m S 183.7  1.5 299597:00 beam.smp
28248 tibco     18   0  124m 100m 3440 S 20.9  0.1   2721:45 tibemsd
15334 couchbas  15   0 9114m 8.6g 3288 S  9.0  5.4  12996:28 memcached
15335 couchbas  18   0  6024  600  468 S  2.0  0.0   1704:54 sigar_port
15319 couchbas  15   0  775m 2516  944 S  0.7  0.0 269:13.41 i386-linux-godu
12167 tibco     16   0 11284 1464  784 R  0.3  0.0   0:00.04 top
12701 root      15   0  451m 427m 2140 S  0.3  0.3  18:25.02 controller
13163 root      11  -5     0    0    0 S  0.3  0.0 289:58.58 vxglm_thread


Dzięki za szybką odpowiedź. Czy jest jakiś sposób, aby sprawdzić, co wszystkie otwarte pliki i który plik zjada pamięć?

1
Spróbuj posortować górne wyjście - podczas uruchamiania naciśnij Shift + m
Eenoku,

Odpowiedzi:


50

Spowoduje to wyświetlenie 10 najlepszych procesów wykorzystujących najwięcej pamięci:

ps aux --sort=-%mem | awk 'NR<=10{print $0}'

using top: po otwarciu top naciśnij mkrótko proces na podstawie zużycia pamięci.

Ale to nie rozwiąże twojego problemu, w Linuksie wszystko jest albo plikiem, albo procesem. więc pliki, które otworzyłeś, również pożrą pamięć. więc to nie pomoże.

lsof da ci wszystkie otwarte pliki o rozmiarze pliku lub przesunięciu pliku w bajtach.


5
Możesz użyć headzamiast tego skryptu awk - daje on ten sam efekt i oszczędzasz sobie pisania wielu dziwnych znaków.
styropian lot


6

Możesz potokować ps i sortować, aby uzyskać proces wykorzystujący najwięcej pamięci. Umożliwi to również określenie innych szczegółów procesu, które chcesz z nim zobaczyć:

ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -n -r | less

PS: Powyższe zakłada, że ​​twoja kolumna pamięci jest pierwsza „ sort -k 1 -n -r


3

Możesz użyć polecenia slabtop, aby zobaczyć, jakie obiekty slab są używane przez jądro.
Możesz także sprawdzić dane wyjściowe / proc / meminfo

Poszukaj tych 2 wierszy na wyjściu

Slab:              68136 kB
SReclaimable:      21208 kB 

Powyższy przykład pokazuje 68 MB pamięci podręcznej płyty używanej przez jądro, a 21 MB można odzyskać. Aby odzyskać, możesz użyć techniki opisanej tutaj https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/Performance_Tuning_Guide/#s-memory-tunables

echo 2 > /proc/sys/vm/drop_caches  

1

Do analizy interaktywnej można użyć htop, a następnie nacisnąć klawisz funkcyjny, F6aby wybrać kolejność sortowania, np. PERCENT_CPU(Użycie pamięci w procentach), M_RESIDENT(rozmiar pamięci rezydentnej, używana pamięć rzeczywista), M_SIZE(rozmiar pamięci wirtualnej) lub M_SHARE(rozmiar pamięci wirtualnej pamięć współdzielona). Pierwsze dwa to odpowiednie liczby .

Zielone linie to nici. Hit (wielkie litery) Ki Haby je ukryć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.