Dlaczego wartości% MEM na górze nie sumują się do całkowitej używanej pamięci?

18

Obecnie debuguję problemy z wydajnością mojego VPS i dlatego próbuję zrozumieć, który z procesów zużywa najwięcej pamięci. Czytając górę, oto co otrzymuję:

Mem:    366544k total,   321396k used,    45148k free,      380k buffers
Swap:  1048572k total,   592388k used,   456184k free,     7756k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                  
12339 ruby      20   0  844m  74m 2440 S    0 20.8   0:24.84 ruby                                                                                     
12363 ruby      20   0  844m  73m 1576 S    0 20.6   0:00.26 ruby                                                                                     
21117 ruby      20   0  171m  33m 1792 S    0  9.3   2:03.98 ruby                                                                                     
11846 ruby      20   0  858m  21m 1820 S    0  6.0   0:09.15 ruby                                                                                     
21277 ruby      20   0  219m  11m 1648 S    0  3.2   2:00.98 ruby                                                                                     
  792 root      20   0  266m  10m 1024 S    0  3.0   1:40.06 ruby                                                                                     
  532 mysql     20   0  234m 4760 1040 S    0  1.3   0:41.58 mysqld                                                                                   
  793 root      20   0  250m 4616  984 S    0  1.3   1:20.55 ruby                                                                                     
  586 root      20   0  156m 4532  848 S    0  1.2   6:17.10 god                                                                                      
12315 ruby      20   0  175m 2412 1900 S    0  0.7   0:07.55 ruby                                                                                     
 3844 root      20   0 44036 2132 1028 S    0  0.6   1:08.22 ruby                                                                                     
10939 ruby      20   0  179m 1884 1724 S    0  0.5   0:08.33 ruby                                                                                     
 4660 ruby      20   0  229m 1592 1440 S    0  0.4   2:55.46 ruby                                                                                     
 3879 nobody    20   0 37428  964  520 S    0  0.3   0:01.99 nginx 

Jak widać, moja pamięć jest używana w około 90% (co jest moim problemem), ale po dodaniu wartości% MEM, osiąga ona tylko około 50-60%. To samo, RES nie sumuje się do ~ 350 MB. Dlaczego? Czy źle rozumiem ich znaczenie?

Dzięki

ben
źródło
Myślę, że góra dostosowuje liczbę wyświetlanych wierszy z rozmiarem wyświetlacza, więc wszystkie procesy mogą być niewidoczne.
Samik

Odpowiedzi:

6

Próbuję zrozumieć, który z procesów zjada najwięcej pamięci.

To proste: rubin !

po dodaniu wartości% MEM, osiąga ona tylko około 50–60%

W rzeczywistości zsumowanie kolumn w pokazany sposób daje 69,2% .

  • Jak zauważył Samik, z pewnością nie obejmuje wszystkich procesów w twoim systemie - spróbuj wkleić dane wyjściowe, top -b -n 1aby uzyskać pełne dane wyjściowe w pliku i udostępnić je nam, abyśmy mogli Ci lepiej pomóc.

  • Jądro zajmuje również pewną ilość pamięci, a niektóre rodzaje VPS (np. Xen, KVM) rezerwują trochę pamięci podczas rozruchu do użytku wewnętrznego. Wklej też wyjście dmesg.

W celu uzyskania lepszych wskaźników i łatwości użytkowania zalecamy użycie htopZainstaluj htop zamiast top z włączoną opcją „Ukryj wątki użytkownika”:

wprowadź opis zdjęcia tutaj

Zobacz także memtop:

wprowadź opis zdjęcia tutaj

ish
źródło
Oto pełne najlepsze wyniki: paste.ubuntu.com/1055673 i dmesg: paste.ubuntu.com/1055674 Korzystanie z htop daje mi inne wyjście! Widzę trzy z 22,4% procesów MEM, w rzeczywistości wiele procesów jest zduplikowanych (również wiele razy mysqld). W każdym razie podoba mi się wyjście, o wiele czystsze ... Memtop też jest fajny, jestem w stanie lepiej zrozumieć, która z moich aplikacji ruby ​​zjada najwięcej pamięci;)
ben
0

toppolecenie linux pokazuje całą ramwykorzystaną pamięć, nie tylko dla ciebie, ale także dla systemu. linux cachesniektóre obszary z dysku twardego w celu wypowiedzenia komputera. zaleca się użycie dowolnego innego monitora mem.

Alberto Garea
źródło