Cosa sono gli RSS e i VSZ nella gestione della memoria Linux? In un ambiente multithreaded come possono entrambi essere gestiti e tracciati?Che cos'è RSS e VSZ nella gestione della memoria Linux
risposta
Non sono gestiti, ma misurati e possibilmente limitati (vedere la chiamata di sistema getrlimit
, anche su getrlimit(2)).
RSS significa resident set size (la parte dello spazio di indirizzamento virtuale che si trova nella RAM).
è possibile interrogare il virtual address space di processo 1234 utilizzando proc(5) con cat /proc/1234/maps
e il suo stato (incluso il consumo di memoria) attraverso cat /proc/1234/status
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - [Dalla recensione] (/ recensione/post di bassa qualità/18966880) – Maak
Ho fornito un secondo collegamento. Uno di questi rimarrà valido –
RSS è Resident Set Size (memoria residente fisicamente - questo spazio è attualmente occupa nella memoria fisica della macchina), e VSZ è la dimensione della memoria virtuale (spazio di indirizzamento allocato - questo ha gli indirizzi allocati nella mappa della memoria del processo, ma al momento non c'è necessariamente una memoria vera e propria).
Si noti che in questi giorni di macchine virtuali comuni, la memoria fisica dal punto di vista della macchina potrebbe non essere realmente la memoria fisica effettiva.
Mente fornendo più informazioni di ciò che l'abbreviazione rappresenta? – Pithikos
RSS è la dimensione del set residente e viene utilizzata per mostrare la quantità di memoria allocata per quel processo e nella RAM. Non include la memoria che viene scambiata. Include la memoria dalle librerie condivise fintanto che le pagine di quelle librerie sono effettivamente in memoria. Comprende tutto lo stack e la memoria heap.
VSZ è la dimensione della memoria virtuale. Include tutta la memoria a cui il processo può accedere, inclusa la memoria che viene scambiata e la memoria che proviene da librerie condivise.
Quindi se il processo A ha un binario 500K ed è collegato a 2500K di librerie condivise, ha 200K di allocazioni stack/heap di cui 100K sono effettivamente in memoria (il resto viene scambiato) e ha solo caricato effettivamente 1000K di condivisioni biblioteche e 400K del proprio binario allora:
RSS: 400K + 1000K + 100K = 1500K
VSZ: 500K + 2500K + 200K = 3200K
Dal momento che parte della memoria è condivisa, molti processi possono usarlo, quindi se si sommano tutti i valori RSS si può facilmente finire con più spazio di quanto il tuo sistema ha.
C'è anche PSS (dimensione proporzionale). Questa è una misura più recente che tiene traccia della memoria condivisa come proporzione utilizzata dal processo corrente. Quindi, se ci sono stati due processi che utilizzano la stessa libreria condivisa da prima:
PSS: 400K + (1000K/2) + 100K = 400K + 500K + 100K = 1000K
thread Tutti condividono lo stesso spazio indirizzo, in modo che il RSS, VSZ e PSS per ogni thread è identico a tutti gli altri thread nel processo . Usa ps o top per visualizzare queste informazioni in linux/unix.
Non c'è modo più ad esso che questo, per saperne di più controllare i seguenti riferimenti:
- http://manpages.ubuntu.com/manpages/en/man1/ps.1.html
- https://web.archive.org/web/20120520221529/http://emilics.com/blog/article/mconsumption.html
Vedi anche:
Credo che l'RSS * includa la memoria da librerie collegate dinamicamente. Se ci sono 3 processi usando 'libxml2.so', la libreria condivisa verrà conteggiata in ciascuno dei loro RSS, quindi la somma del loro RSS sarà maggiore della memoria effettiva utilizzata. – nfm
Questo è corretto. Ho risolto la mia risposta, grazie per l'avviso. – jmh
Sono su ubuntu 16.04, e c'è un processo java con 1.2G RES e 4.5G VIRT visualizzati dal comando 'top'. Questo sistema non ha scambio, 'swapon --show' non restituisce nulla. Come lo spieghi? Se vsz è swap + librerie condivise, in questo caso, le librerie condivise sono superiori a 3,3 G? È possibile? Solo molto confuso ... –
Penso che sia già stato detto molto su RSS vs VSZ. Dal punto di vista di un amministratore/programmatore/utente, quando disegno/codice le applicazioni sono più preoccupato per l'RSZ, (memoria residente), come e quando continuate a tirare sempre più variabili (ammucchiate) vedrete aumentare questo valore. Prova un semplice programma per costruire l'allocazione dello spazio basata su malloc in loop e assicurati di riempire i dati in quello spazio malloc'd. RSS continua a salire. Per quanto riguarda VSZ, è più di una mappatura della memoria virtuale che fa Linux, e una delle sue caratteristiche principali derivate da concetti convenzionali del sistema operativo. La gestione di VSZ viene eseguita dalla gestione della memoria virtuale del kernel, per maggiori informazioni su VSZ, vedere la descrizione di Robert Love su mm_struct e vm_struct, che fanno parte della struttura di base task_struct nel kernel.
- 1. Come si approssima la memoria virtuale utilizzata (VSZ) usando un core dump e gdb su Linux?
- 2. NSTimer gestione della memoria
- 3. Objective-C Proprietà e gestione della memoria
- 4. iPhone gestione della memoria e rilascio
- 5. Gestione tabelle di pagine Linux e MMU
- 6. Gestione della memoria in perl
- 7. Corretta gestione della memoria vettoriale
- 8. C++: sulla gestione della memoria
- 9. Gestione della memoria ed eseguiSelectorInBackground:
- 10. Come caricare l'immagine Linux per appropriarsi della posizione nella memoria
- 11. R: chiarimenti sulla gestione della memoria
- 12. Ciclo di vita dell'oggetto in java e gestione della memoria?
- 13. Gestione della memoria per un'applicazione .NET (wpf)
- 14. Problemi di gestione della memoria Javascript?
- 15. Modelli comuni di gestione della memoria
- 16. gestione efficiente della memoria in R
- 17. Più storyboard in iOS + Gestione della memoria
- 18. Android - Gestione bitmap e memoria?
- 19. Ridurre la frammentazione della memoria con MALLOC_MMAP_THRESHOLD_ e MALLOC_MMAP_MAX_
- 20. Perché l'utilizzo della memoria è più della RAM fisica in Linux?
- 21. C++ Gestione della memoria Tecniche/pratiche
- 22. Garbage Collection vs gestione manuale della memoria
- 23. Storia di utilizzo della memoria Linux
- 24. Gestione memoria Directx 11
- 25. paradigmi di gestione della memoria C++
- 26. Gestione della memoria JVM e libro di raccolta dei rifiuti?
- 27. JavaScript nuova parola chiave e gestione della memoria
- 28. Modulo di inizializzazione dell'applicazione IIS e gestione della memoria
- 29. JNI oggetti creazione e la gestione della memoria
- 30. Gestione della memoria Qt per oggetti Qt
possibile duplicato di [Informazioni sui log di Linux oom-killer] (http://stackoverflow.com/questions/9199731/understanding-the-linux-oom-killers-logs) – msangel