O novo método de gerenciamento de memória do Facebook

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

>>> Página do autor no GitHub


>>> Resultados dos primeiros testes

Fonte: linux.org.ru

Adicionar um comentário