VSZ & RSS e la memoria allocata


La manpage del comando ps riporta:

rss RSS resident set size, the non-swapped physical memory that a task has used (in kiloBytes). (alias rssize, rsz).
vsz VSZ virtual memory size of the process in KiB (1024-byte units). Device mappings are currently excluded; this is subject to change.

Sono sempre stato un tipo curioso, voglio capire cosa significa, ed ho voluto fare un esperimento😉
Usando la funzione malloc:
blocco=malloc(512*1024*1024);
Il comando ps mi resituisce:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
marco 10677 0.0 0.0 525748 352 pts/1 S+ 09:43 0:00 ./c1

Come potete notare la VSZ riporta i 512M che abbiamo richiesto con la malloc, ma RSS riporta solo pochi Kb… ora usando memset per 256M vediamo cosa accade:
memset(blocco, 255, 256*1024*1024);
questa volta l’output del ps sarà
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
marco 10657 10.0 12.6 525748 262496 pts/1 S+ 09:42 0:00 ./c1

RSS riporta i 256M richiesti dalla memset e VSZ sempre i 512M come prima.
Proviamo ad usare tutti i 512M allocati:
memset(blocco, 255, 512*1024*1024);
e vediamo sempre l’output del ps:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
marco 10657 12.3 25.2 525748 524644 pts/1 S+ 09:42 0:00 ./c1

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...