Przejrzałem ten artykuł , który wyjaśnia różne metody sprawdzania zużycia pamięci RAM. Nie mogę jednak pogodzić różnych metod i nie wiem, która z nich jest poprawna.
Podczas pierwszego logowania pojawia się następujący ekran:
System information as of Sun Apr 28 21:46:58 UTC 2013
System load: 0.0 Processes: 76
Usage of /: 15.6% of 7.87GB Users logged in: 1
Memory usage: 41% IP address for eth0:
Swap usage: 0%
To sugeruje mi, że używam 41% mojej pamięci RAM, co wydaje się dość wysokie, ponieważ serwer niewiele robi. Czy ta liczba odnosi się do czegoś poza pamięcią RAM?
Następnie wypróbowuję free -m
metodę:
ubuntu@ip-:~$ free -m
total used free shared buffers cached
Mem: 590 513 76 0 67 315
-/+ buffers/cache: 130 459
Swap: 0 0 0
Zgodnie z objaśniającą grafiką w artykule oznacza to, że mam 130 MB zużytej pamięci RAM i 459 MB wolnej pamięci RAM, co sugeruje, że używam około 22% mojej pamięci RAM.
Następnie uruchamiam top
:
top - 22:14:48 up 195 days, 21:30, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 77 total, 1 running, 76 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.3%us, 0.3%sy, 0.0%ni, 97.7%id, 0.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 604376k total, 525692k used, 78684k free, 69124k buffers
Swap: 0k total, 0k used, 0k free, 322740k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 24332 1864 976 S 0.0 0.3 0:08.75 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
Jest to najbardziej mylące, ponieważ podsumowanie pokazuje, że używam 525MG o łącznej wartości 604M, a jednak kiedy używa się interaktywnego polecenia „m” do sortowania według najwyższej pamięci, najwyższy proces zajmuje tylko 0,3% pamięci ???
Wreszcie ps
polecenie wydaje się również wykazywać bardzo małe zużycie pamięci:
root@ip-:/home/ubuntu# ps -o command,rss
COMMAND RSS
ps -o command,rss 788
sudo su root 1764
su root 1404
bash 2132
Chciałbym, aby ktoś poprawił wszelkie nieporozumienia, które wywołują te pozorne konflikty.
Dzięki!
EDYCJA dla Rahula
Ouput z cat /proc/meminfo
:
MemTotal: 604376 kB
MemFree: 157564 kB
Buffers: 49640 kB
Cached: 231376 kB
SwapCached: 0 kB
Active: 290040 kB
Inactive: 97772 kB
Active(anon): 107672 kB
Inactive(anon): 4844 kB
Active(file): 182368 kB
Inactive(file): 92928 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 52 kB
Writeback: 0 kB
AnonPages: 106836 kB
Mapped: 22920 kB
Shmem: 5712 kB
Slab: 42032 kB
SReclaimable: 34016 kB
SUnreclaim: 8016 kB
KernelStack: 688 kB
PageTables: 3584 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 302188 kB
Committed_AS: 242768 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7152 kB
VmallocChunk: 34359729008 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 637952 kB
DirectMap2M: 0 kB
cat /proc/meminfo
ps ax -o rss | awk '{ sum+=$1} END {print sum}'
właśnie teraz i 153156.Odpowiedzi:
Musisz tylko zrozumieć Memory Concept
Zgodnie z danymi wyjściowymi / proc / meminfo, musisz tylko zauważyć poniższe rzeczy:
Bufory : - Bufor to coś, co nie zostało jeszcze „zapisane” na dysk. Reprezentuje ile pamięci RAM jest przeznaczone na blok dysku pamięci podręcznej. „Buforowane” jest podobne do „Buforów”, tylko tym razem buforuje strony z odczytu plików
Pamięć podręczna : pamięć podręczna to coś, co zostało „odczytane” z dysku i zapisane do późniejszego wykorzystania. Zasadniczo obszar pamięci podręcznej można traktować jako kolejną „wolną” pamięć RAM, ponieważ będzie ona stopniowo zmniejszana, jeśli aplikacja będzie wymagać więcej pamięci.
Wystarczy zrozumieć, że zarówno „bufory”, jak i „buforowane” reprezentują rozmiar pamięci podręcznej systemu. Dynamicznie rosną lub kurczą się zgodnie z wewnętrznym mechanizmem jądra systemu Linux.
na Webhostingu usuwają pamięć podręczną, używając poniższego cmd: (najczęściej skonfigurowane w cron):
Cytuj link
EDYCJA dla jeszcze jednego wymagania, tj. Na użycie pamięci użytkownika
Sprawdź powyższy skrypt i daj mi znać, czy pokazuje się poprawnie, czy nie.
źródło
free -m
nie zapewnia sposobu przeglądania pamięci używanej przez użytkownika, jaki jest dokładny sposób ustalenia, ile rzeczywistej pamięci RAM zużywa dany użytkownik? Pojawia się to na przykład podczas monitorowania zużycia pamięci przez serwer współdzielony.Dobra odpowiedź @RahulPatil.
Kolejny punkt do rozważenia na temat ps lub top jest następujący
Przez ibm / developerworks / linux_memory
Ponieważ twoje pytanie dotyczy bezgłowego serwera - nie jestem pewien, ile faktycznie będzie miało podwójne zgłoszenie top lub ps.
źródło
Obawiam się, że możemy przeoczyć to, co oczywiste, ponieważ dla większości z nas jest to „oczywiście”.
Jonah, wybacz mi, jeśli się mylę, ale twoje pytania brzmią tak, jakbyś nie zdawał sobie sprawy, że wszystkie te wartości, w szczególności użycie procesora, zwykle różnią się znacznie z sekundy na sekundę.
Zużycie procesora może wzrosnąć z pojedynczych cyfr do 100% natychmiast po rozpoczęciu nowego procesu, ale szybko (miejmy nadzieję) wróci do zakresu poniżej 50%.
Zużycie pamięci zmienia się wolniej, ale tam Linux próbuje użyć pamięci, która nie jest aktywnie używana, uruchamiając procesy „buforowania” dostępu do dysku. Na przykład próbuje przewidzieć, co będzie musiało zostać odczytane z dysku, na przykład resztę dużego pliku po odczytaniu części, i wstępnie załadować go do pamięci podręcznej. Niektóre wartości wykorzystania pamięci obejmują zarówno pamięć używaną przez procesy, jak i pamięć używaną do buforowania. W systemie, który działał przez jakiś czas, dwa połączone prawdopodobnie będą wynosić 80-90% lub więcej.
Weź również pod uwagę, że proces uruchamiany w celu pokazania użycia, na przykład
top
, również wykorzystuje procesor i pamięć. Jeśli napisałeś skrypt z pętlą do ciągłego raportowania użycia procesora, prawie na pewno zawsze pokazywałby 100%, ponieważ samo zgłoszenie użycia (bez pewnychsleep
opóźnień) zużywa cały procesor.źródło