A memória está inativa relacionada ao confirmado, mas não utilizada?

1

Em a documentação do procfs do Linux :

      Active: Memory that has been used more recently and usually not reclaimed unless
              absolutely necessary.
    Inactive: Memory which has been less recently used. It is more eligible to be
              reclaimed for other purposes
Committed_AS: The amount of memory presently allocated on the system. The committed 
              memory is a sum of all of the memory which has been allocated by 
              processes, even if it has not been "used" by them as of yet. (...)

Minha pergunta está relacionada à memória Commited_AS e à parte dela que é realmente usada / não utilizada. Meu entendimento é que a memória ativa é a parte da memória comprometida que é realmente usada. No entanto, não sei o que acontece com a memória inativa; inclui também a memória comprometida mas não usada, além da memória que não foi usada recentemente?

    
por liouk 18.06.2014 / 10:54

2 respostas

3

Memória inativa é a memória que um processo usou em algum momento e ainda está alocada, mas que não foi usada recentemente. É a memória com maior probabilidade de ser paginada para dar espaço aos novos blocos necessários.

A memória confirmada é o total de todo o espaço que foi nominalmente alocado aos processos. É o agregado de todos os processos do espaço de memória que eles têm disponível, incluindo ativos (in RAM e recentemente usados) inativos (na RAM e usados em algum momento, mas sujeitos a paginação porque seu uso não era recente) paginados (uma vez na RAM e usado, desde paginado para trocar) e nunca usado (espaço retornado por malloc () mas ainda não tocado)

    
por 04.10.2014 / 22:33
1

Veja man proc ; para citar diretamente:

A process which allocates 1GB of memory (using malloc(3) or similar), but touches only 300MB of that memory will show up as using only 300MB of memory even if it has the address space allocated for the entire 1GB. This 1GB is memory which has been "committed" to by the VM and can be used at any time by the allocating application.

Committed_AS refere-se à quantidade total de memória solicitada no sistema para alocação de memória dinâmica; Isso significaria que a memória inativa (que não está no heap) não é contada. É aqui que entra o poder da memória virtual; um processo "pensa" tem toda a memória que pediu, mas na realidade só tem o que precisa.

Isso também se encaixa diretamente na configuração de configuração overcommit_memory sysctl que pode ser usado para evitar o "excesso de comprometimento" da memória, para que o servidor não OOM se precisar de toda a memória "comprometida" de uma só vez.

    
por 19.06.2014 / 01:56