getrusage chamada do sistema: o que é “tamanho máximo do conjunto de residentes”

20

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?

    
por ren 05.02.2012 / 17:43

1 resposta

24

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).

    
por 05.02.2012 / 18:09