Um novo controlador de memória Linux economiza até 42% de RAM

controlador

Roman Gushchin, um engenheiro da equipe Linux do Facebook, descobriu uma “falha grave” na maneira como o atual controlador de mem√≥ria funciona no kernel Linux. Segundo ele, o design atual do n√ļcleo causa baixo uso do Slab e a raz√£o por tr√°s disso √© que as p√°ginas do Slab s√£o usadas apenas por um grupo de mem√≥ria cgroup (grupo de controle).

Para quem não conhece, a distribuição Slab, no caso do kernel Linux, refere-se a um sistema de gerenciamento de memória que atribui memória a diferentes objetos no kernel. A distribuição Slab é um sistema eficaz de gerenciamento de memória que tem como principal tarefa criar o cache Slab. Um cache de laje é uma lista de lajes vinculadas, com cada laje representando uma série de objetos. Além disso, o cgroup, ou grupo de controle, é um recurso do kernel do Linux que organiza os processos de maneira hierárquica.

Qual é o defeito?

De acordo com Gushchin, ‚Äúse houver apenas algumas distribui√ß√Ķes de um determinado tamanho feitas por um cgroup ou se alguns objetos ativos (por exemplo, dentries) permanecerem ap√≥s a exclus√£o do cgroup, ou o cgroup contiver um aplicativo com um √ļnico aplicativo de thread √ļnico , que distribui alguns objetos do kernel e o faz a cada vez em uma nova CPU: em todos esses casos, o uso resultante do Slab √© muito baixo. ‚ÄĚ

Ele também acrescenta que, se a contabilidade da memória do kernel estiver desativada, o kernel poderá usar o espaço livre nas páginas Slab para distribuir os processos.

Gushchin diz que o controlador kmem foi originalmente introduzido como um recurso opcional, que precisava ser ativado separadamente para cada grupo de memória. Agora, o recurso está ativado por padrão, o que impede o uso do Slab.

O novo controlador de memória sugerido por Gushchin

A nova proposta de Gushchin aprimora o uso de memória distribuindo páginas Slab. Além disso, o desenvolvedor acrescenta que, em seu novo sistema, a contabilidade é realizada por objeto, em vez de por página.

Você pode ver o novo controlador de memória Gushchin sugerido aqui.

Se tudo der certo, o controlador de memória proposto será incluído no kernel do Linux em 2020.