overcommit_memory e overcommit_ration

2

Aqui está minha configuração atual:

vm.overcommit_ratio = 50 (default)
vm.overcommit_memory = 2

e uso atual da memória:

[localhost~]$ free -g
             total       used       free     shared    buffers     cached
Mem:            47         46          0          0          0         45
-/+ buffers/cache:          1         45
Swap:           47          0         47

De acordo com a documentação o que eu entendi é:

vm.overcommit_memory = 2 não permitirá exceder a memória do que 50% da RAM (as vm.overcommit_ratio is 50) , mas ainda assim posso ver que o uso de memória atual é de 46 GB de 47 GB.

Eu entendi mal alguma coisa?

    
por gpdude_ 01.03.2017 / 16:30

1 resposta

1

As configurações de vm.overcommit_* controlam a alocação de memória do espaço do usuário. Eles não têm efeito na memória que o kernel pode alocar. Além disso, o valor que você está recebendo 50% é de memória física + troca. 47 + 47 = 94. Então o userspace pode alocar até 47gb.

Sua saída free mostra que você tem 1gb usado pelo userspace e 45gb usado pelo kernel para fazer o cache. O espaço do usuário de 1 gb está bem abaixo de 50% de 94 gb.

Correção adicional:

vm.overcommit_memory = 2 will not allow to overcommit memory than 50 % of RAM

Esta configuração não permite a supercomprometimento em todos . Combinado com vm.overcommit_ratio=50 , ele permitirá que o espaço do usuário confirme até 50% da memória total. "commit"!="overcommit"

    
por 02.03.2017 / 00:09