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