O contêiner LXC mostra a quantidade total de RAM e a contagem de CPU do host

4

Estou usando os contêineres LXC há alguns anos e recentemente expandi os tipos de aplicativos executados em ambientes de contêiner.

Estou começando a limitar recursos no nível do contêiner agora com parâmetros de configuração como:

lxc.cgroup.cpuset.cpus                 = 16-23
lxc.cgroup.memory.limit_in_bytes       = 30720M
lxc.cgroup.memory.memsw.limit_in_bytes = 32768M

Estou trabalhando com um desenvolvedor que está usando uma ferramenta de "ajuste" ( pgtune ) para gerar uma configuração para um banco de dados Postgres que será executado dentro do ambiente LXC. Essa ferramenta é mais antiga e não é bem compatível com VM ou contêiner. Ele faz recomendações de dimensionamento com base na RAM visível para o sistema.

Foi quando percebi que ver toda a RAM do sistema host (96 GB) é visível para a instância do contêiner e poderia ser prejudicial em alguns casos.

Existe alguma solução para isso, ou é apenas um dado quando se usa o LXC?

    
por ewwhite 07.04.2015 / 15:56

2 respostas

7

Atualmente, o sistema de arquivos proc não tem "reconhecimento de contêineres" nos namespaces de montagem, portanto, as ferramentas que baseam suas lógicas sobre isso obterão valores relacionados ao host em vez de valores relacionados ao contêiner.

Mas um trabalho está em progresso, é chamado lxc-fs e poucos lançamentos são disponível aqui . Esta é uma solução alternativa do espaço do usuário que tornará possível uma montagem de ligação sobre /proc para que as coisas fiquem consistentes dentro de um contêiner.

    
por 08.04.2015 / 21:37
4

Parece não haver maneira de contornar isso. O LXC usa o cgroups para fazer sua limitação de RAM, e ferramentas que não possuem virtualização lêem estatísticas como /proc/meminfo , que não estão contidas dentro do LXC e geram a RAM total no sistema. Você também pode ver esse comportamento com free ou top quando executado dentro do contêiner.

Fonte: link

    
por 07.04.2015 / 16:23