chiamata di sistema getrusage: qual è la "dimensione massima impostata per residenti"


23

man getrusage 2 dice

ru_maxrss (since Linux 2.6.32)
              This is the maximum resident set size used (in kilobytes). For RUSAGE_CHILDREN, this is the resident set size of the largest
              child, not the maximum resident set size of the process tree.

Cosa significa esattamente questo numero?


Solo una nota che ru_maxrssè in byte su macchine mac / BSD.
Isaac Turner,

1
Piccolo chiarimento: ru_maxssè in byte su macchine Mac OS X (Darwin), ma in kilobyte su macchine BSD e macchine Linux. Vedi stackoverflow.com/q/40773924/781723 e stackoverflow.com/q/12050913/781723 .
DW,

Risposte:


27

La dimensione del set residente di un processo è la quantità di memoria che appartiene ad esso ed è attualmente presente (residente) nella RAM (RAM reale, non scambiata o altrimenti non residente).

Ad esempio, se un processo alloca un pezzo di memoria (diciamo 100Mb) e lo utilizza attivamente (legge / scrive su di esso), la sua dimensione impostata residente sarà di circa 100 Mb (più overhead, il segmento di codice, ecc.). Se dopo il processo smette di usare (ma non rilascia) quella memoria per un po ', il sistema operativo potrebbe scegliere di scambiare blocchi di quella memoria per scambiare, per fare spazio ad altri processi (o cache). La dimensione del set residente diminuirà quindi della quantità scambiata dal kernel. Se il processo si riattiva e inizia a riutilizzare quella memoria, il kernel ricaricherebbe i dati dallo swap e la dimensione del set residente aumenterebbe di nuovo.

Il ru_maxrsscampo di struct rusageè "high water mark" per la dimensione del set residente. Indica il picco di utilizzo della RAM per questo processo (durante l'utilizzo RUSAGE_SELF).

È possibile limitare la dimensione del set di residenti di un processo per evitare che una singola applicazione "esaurisca" tutta la RAM del sistema e costringendo altre applicazioni a scambiarsi (o fallire completamente con condizioni di memoria insufficiente).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.