O que o sinalizador --memory-reservation faz na prática?

6

Docs dizem:

Under this configuration, when the container consumes memory more than 200M and less than 500M, the next system memory reclaim attempts to shrink container memory below 200M.

Mas o que isso realmente significa?

Digamos que eu tenha um contêiner executando o Solr e: docker run -m 1G --memory-reservation 768M solr

Qual o efeito que ele tem no processo do Solr dentro do container quando ele começa a usar 800M de memória? Nada?

É somente se / quando o uso de memória cair abaixo de 768M ... este indicador permite que o docker recupere a memória do contêiner solr? ... caso contrário, o contêiner continuaria a consumir qualquer uso de memória alta?

Como isso se relaciona com o agendamento de enxames? Se o enxame sempre aloca 1G para o contêiner devido a -m , então --memory-reservation não é útil nesse contexto?

    
por Anentropic 31.01.2016 / 15:30

1 resposta

4

a opção memory-reservation é um wrapper para a opção cgroup chamada memory.soft_limit_in_bytes . Você pode ler o manual (desatualizado) na seção 'Limites mínimos': link

Mais informações sobre o processo de recuperação estão aqui: link

Pelo que eu posso dizer, o seu processo do Solr pode usar 800MB e contanto que não haja contenção de outros cgroups, a memória não será recuperada. Pode manter a memória e usar até o limite máximo de 1GB. Se houver contenção, o kernel tentará recuperar a memória, mas de acordo com o soft limits is a best-effort feature.. no guarantees do documento.

    
por 22.02.2016 / 08:34

Tags