Um dos membros da equipe de desenvolvimento de redes sociais Facebook, Roman Gushchin, propôs na lista de discussão de desenvolvedores um conjunto de Correções do kernel Linuxvisando melhorar o gerenciamento de memória através da implementação de um novo controlador de gerenciamento de memória - laje (controlador de memória de laje).
distribuição de lajes é um mecanismo de gerenciamento de memória projetado para alocar memória com mais eficiência e eliminar fragmentação significativa. A base deste algoritmo é armazenar memória alocada contendo um objeto de um determinado tipo e reutilizar essa memória na próxima vez que for alocada para um objeto do mesmo tipo. Esta técnica foi introduzida pela primeira vez no SunOS por Jeff Bonwick e agora é amplamente utilizada nos kernels de muitos sistemas operacionais Unix, incluindo FreeBSD e Linux.
O novo controlador é baseado na movimentação da contabilidade do bloco do nível da página de memória para o nível do objeto do kernel, o que torna possível compartilhar uma página do bloco em diferentes cgroups, em vez de alocar um cache separado para cada cgroup.
Com base nos resultados do teste, conclui-se que o método de gerenciamento de memória proposto permite aumentar eficiência usando laje até 45%, e também reduzirá o consumo geral de memória do kernel do sistema operacional. Além disso, ao reduzir o número de páginas alocadas para o bloco, a fragmentação da memória como um todo é reduzida, o que não pode deixar de afetar o desempenho do sistema.
O novo controlador foi testado em servidores de produção do Facebook por vários meses e, até agora, esse teste pode ser considerado bem-sucedido: sem perda de desempenho e sem aumento no número de erros, foi notada uma clara diminuição no consumo de memória - em alguns servidores de até 1 GB. Este número é bastante subjetivo, por exemplo, testes anteriores mostraram resultados ligeiramente inferiores:
- 650-700 MB no front-end da web
- 750-800 MB no servidor com cache de banco de dados
- 700 MB no servidor DNS
>>> Resultados dos primeiros testes
Fonte: linux.org.ru