To pytanie jest szczegółowo omówione tutaj .
Jak mierzysz wykorzystanie pamięci przez aplikację lub proces w systemie Linux?
Z artykułu blogu Zrozumienia wykorzystania pamięci w systemie Linux , ps
nie jest dokładnym narzędziem do wykorzystania dla tej intencji.
Dlaczego
ps
„źle”W zależności od tego, jak na to patrzysz,
ps
nie zgłasza rzeczywistego wykorzystania pamięci przez procesy. W rzeczywistości pokazuje, ile prawdziwej pamięci zajmie każdy proces, gdyby był jedynym uruchomionym procesem . Oczywiście w typowej maszynie z Linuksem w danym momencie działa kilkadziesiąt procesów, co oznacza, że zgłoszone numery VSZ i RSSps
są prawie zdecydowanie błędne .
ps
nawet tego nie pokazuje - pokazuje numery pamięci wirtualnej i rezydentnej, gdzie wirtualna to maksymalna ilość pamięci, którą proces teoretycznie mógłby z niej skorzystać, był to jedyny proces (nigdy nie), używany na każdej przydzielonej stronie (nigdy się nie zdarza) i nie mapował ani nie mapował żadnych stron (mało prawdopodobne). Podczas gdy rezydent pokazuje, ile pamięci wirtualnej jest obecnie zamapowane na fizyczną. Zazwyczaj virt > usage > res
jednak w systemie 64-bitowym virt ~= res*10
jest to bardzo szeroki zakres.