Kiedy rejestruję free
na 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 top
polecenie 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
Odpowiedzi:
Spowoduje to wyświetlenie 10 najlepszych procesów wykorzystujących najwięcej pamięci:
using top: po otwarciu top naciśnij
m
kró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.źródło
head
zamiast tego skryptu awk - daje on ten sam efekt i oszczędzasz sobie pisania wielu dziwnych znaków.Twój baran nie jest właściwie używany. Linux domyślnie tylko buforuje pliki na twoim dysku i umieszcza to, co buforuje w sekcji „używane” pamięci RAM.
Jeśli załadujesz aplikacje, które faktycznie używają tej pamięci RAM, będzie to do użycia.
Zobacz http://www.linuxatemyram.com/
źródło
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: Powyższe zakłada, że twoja kolumna pamięci jest pierwsza „ sort -k 1 -n -r ”
źródło
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
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
źródło
Do analizy interaktywnej można użyć
htop
, a następnie nacisnąć klawisz funkcyjny,F6
aby 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) lubM_SHARE
(rozmiar pamięci wirtualnej pamięć współdzielona). Pierwsze dwa to odpowiednie liczby .Zielone linie to nici. Hit (wielkie litery)
K
iH
aby je ukryć.źródło