O tamanho do conjunto residente de um processo é a quantidade de memória que pertence a ele e está presente (residente) na RAM (RAM real, não trocada ou não residente).
Por exemplo, se um processo aloca um pedaço de memória (digamos 100Mb) e o usa ativamente (lê / grava nele), o tamanho do conjunto residente será de cerca de 100Mb (mais a sobrecarga, o segmento de código etc.). Se após o processo parar de usar (mas não liberar) essa memória por um tempo, o sistema operacional poderá optar por trocar trechos dessa memória por troca, para abrir espaço para outros processos (ou cache). O tamanho do conjunto de residentes diminuiria pela quantidade que o kernel trocasse. Se o processo acordar e começar a reutilizar essa memória, o kernel recarregará os dados do swap e o tamanho do conjunto residente aumentará novamente.
O ru_maxrss
campo de struct rusage
é a "marca d'água alta" para o tamanho do conjunto residente. Indica o pico de uso da RAM para esse processo (ao usar RUSAGE_SELF
).
Você pode limitar o tamanho do conjunto de residentes de um processo para evitar que um único aplicativo "consuma" toda a RAM do sistema e forçar outros aplicativos a trocar (ou falhar totalmente com condições de falta de memória).
ru_maxrss
em bytes em máquinas Mac / BSD.