man getrusage 2
diz
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.
Então, o que esse número significa exatamente?
ru_maxrss
em bytes em máquinas Mac / BSD.ru_maxss
está em bytes nas máquinas Mac OS X (Darwin), mas em kilobytes nas máquinas BSD e Linux. Consulte stackoverflow.com/q/40773924/781723 e stackoverflow.com/q/12050913/781723 .Respostas:
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 destruct rusage
é a "marca d'água alta" para o tamanho do conjunto residente. Indica o pico de uso da RAM para esse processo (ao usarRUSAGE_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).
fonte