Descarregamento transparente de memória: mais memória por uma fração do custo e da potência
Estamos testemunhando um enorme crescimento nas necessidades de memória de aplicações emergentes, como aprendizado de máquina, juntamente com a desaceleração do dimensionamento de dispositivos DRAM e grandes flutuações no custo da DRAM. Isso tornou a DRAM proibitivamente cara como única solução de capacidade de memória na escala da Meta.
Mas tecnologias alternativas, como unidades de estado sólido (SSDs) conectadas por NVMe, oferecem maior capacidade do que DRAM por uma fração do custo e da potência. A transferência transparente de memória mais fria para tecnologias de memória mais baratas por meio de técnicas de kernel ou hipervisor oferece uma abordagem promissora para reduzir o apetite por DRAM. O principal desafio, no entanto, envolve o desenvolvimento de uma solução robusta em escala de data center. Essa solução deve ser capaz de lidar com diversas cargas de trabalho e com a grande variação de desempenho de diferentes dispositivos de offload, como memória compactada, SSD e NVM.
Transparent Memory Offloading (TMO) é a solução da Meta para ambientes heterogêneos de data center. Ele introduz um novo mecanismo de kernel Linux que mede o trabalho perdido devido à escassez de recursos em CPU, memória e E/S em tempo real. Guiado por essas informações e sem qualquer conhecimento prévio da aplicação, o TMO ajusta automaticamente a quantidade de memória a ser descarregada para um dispositivo heterogêneo, como uma memória compactada ou um SSD. Isso é feito de acordo com as características de desempenho do dispositivo e a sensibilidade da aplicação a acessos mais lentos à memória. O TMO identifica holisticamente oportunidades de transferência não apenas dos contêineres de aplicativos, mas também dos contêineres secundários que fornecem funções no nível da infraestrutura.
O TMO está em produção há mais de um ano e economizou de 20% a 32% da memória total em milhões de servidores em nossa ampla frota de data centers. Fizemos o upstream com sucesso dos componentes do sistema operacional do TMO para o kernel Linux.
Nos últimos anos, uma infinidade de tecnologias de memória não DRAM mais baratas, como SSDs NVMe, foram implantadas com sucesso em nossos data centers ou estão a caminho. Além disso, tecnologias emergentes de barramento de memória não DDR, como Compute Express Link (CXL), fornecem semântica de acesso semelhante à memória e desempenho próximo ao DDR. A hierarquia de armazenamento de memória mostrada na Figura 1 ilustra como várias tecnologias se comparam. A confluência dessas tendências oferece novas oportunidades para hierarquização da memória que eram impossíveis no passado.
Com a classificação por níveis de memória, os dados acessados com menos frequência são migrados para uma memória mais lenta. O próprio aplicativo, uma biblioteca de espaço do usuário, o kernel ou o hipervisor podem conduzir o processo de migração. Nosso trabalho de TMO se concentra na migração ou troca orientada por kernel. Por que? Porque pode ser aplicado de forma transparente a muitos aplicativos sem exigir modificação do aplicativo. Apesar de sua simplicidade conceitual, a troca orientada por kernel para aplicativos de data center sensíveis à latência é um desafio em hiperescala. Construímos o TMO, uma solução transparente de descarregamento de memória para ambientes em contêineres.
O TMO consiste nos seguintes componentes:
O custo crescente da DRAM como uma fração do custo do servidor motivou nosso trabalho no TMO. A Figura 2 mostra o custo relativo de DRAM, memória compactada e armazenamento SSD. Estimamos o custo da DRAM compactada com base em uma taxa de compactação de 3x representativa da média de nossas cargas de trabalho de produção. Esperamos que o custo da DRAM cresça, atingindo 33% dos nossos gastos com infraestrutura. Embora não seja mostrado abaixo, o consumo de energia DRAM segue uma tendência semelhante, e esperamos atingir 38% da energia de nossa infraestrutura de servidor. Isso torna a DRAM compactada uma boa escolha para descarregamento de memória.
Além da DRAM compactada, também equipamos todos os nossos servidores de produção com SSDs NVMe de alta capacidade. No nível do sistema, os SSDs NVMe contribuem com menos de 3% do custo do servidor (cerca de 3x menos do que a memória compactada em nossa geração atual de servidores). Além disso, a Figura 2 mostra que, com isocapacidade para DRAM, o SSD permanece abaixo de 1% do custo do servidor ao longo das gerações – cerca de 10 vezes menor que a memória compactada em custo por byte! Essas tendências tornam os SSDs NVMe muito mais econômicos em comparação com a memória compactada.