Questa domanda è trattata qui in dettaglio.
Come si misura l'utilizzo della memoria di un'applicazione o processo in Linux?
Dall'articolo del blog Comprensione dell'utilizzo della memoria su Linux , ps
non è uno strumento preciso da utilizzare per questo scopo.
Perché
ps
è "sbagliato"A seconda di come lo si osserva,
ps
non viene riportato l'utilizzo della memoria reale dei processi. Quello che sta realmente facendo è mostrare quanta memoria reale occuperebbe ogni processo se fosse l'unico processo in esecuzione . Naturalmente, una tipica macchina Linux ha diverse decine di processi in esecuzione in un dato momento, il che significa che i numeri VSZ e RSS riportati daps
sono quasi sicuramente sbagliati .
ps
non mostra nemmeno questo: mostra i numeri di memoria virtuale e residente, dove virtuale è la massima quantità di memoria che il processo potrebbe teoricamente usarlo se fosse l'unico processo (mai così), utilizzato ogni singola pagina allocata (non succede mai) e non ha mappato o non mappato alcuna pagina (improbabile). Mentre residente mostra quanta memoria virtuale è mappata al fisico in questo momento. In genere, virt > usage > res
tuttavia, su un sistema a 64 bit virt ~= res*10
è una gamma molto ampia.