TMO, um mecanismo do Facebook que economiza RAM nos servidores

Os engenheiros do Facebook divulgaram, através de um relatório, a introdução de tecnologia TMO (Transparent Memory Offloading) no ano passado, que permite economizar significativamente a RAM nos servidores movendo dados secundários que não são necessários para funcionar em unidades mais baratas, como SSDs NVMe.

Facebook estima que a TMO economize entre 20% e 32% de RAM em cada servidor. A solução foi projetada para uso em infraestruturas onde os aplicativos são executados em contêineres isolados. Os componentes do lado do kernel do TMO eles já estão incluídos no kernel do Linux.

No lado do kernel Linux, a operação de tecnologia é fornecido pelo subsistema PSI (Pressure Stall Information), fornecido a partir da versão 4.20.

PSI já usado em vários drivers sem memória e permite analisar informações sobre o tempo de espera para obter vários recursos (CPU, memória, E/S). Com o PSI, os processadores de espaço do usuário podem avaliar com mais precisão os padrões de carga e lentidão do sistema, permitindo que as anomalias sejam detectadas antes que tenham um impacto perceptível no desempenho.

No espaço do usuário, o componente Senpai executa o TMO, que ajusta dinamicamente o limite de memória para contêineres de aplicativos via cgroup2 com base nos dados recebidos do PSI.

Senpai analisa os sinais do início da escassez de recursos via PSI, avalia a sensibilidade dos aplicativos ao acesso lento à memória e tenta determinar o tamanho mínimo de memória necessário para um contêiner, no qual os dados necessários para o trabalho permanecem na RAM e os dados relacionados que estavam no cache de arquivos ou não são usados ​​diretamente no momento são forçados a sair para a partição de troca.

Transparent Memory Offload (TMO) é a solução da Meta para ambientes heterogêneos de data center. Ele apresenta um novo mecanismo de kernel do Linux que mede o trabalho perdido devido à escassez de recursos na CPU, memória e E/S em tempo real. Guiado por essas informações e sem nenhum conhecimento prévio do aplicativo, o TMO ajusta automaticamente a quantidade de memória a ser descarregada para um dispositivo heterogêneo, como uma memória compactada ou SSD. Ele faz isso com base nas características de desempenho do dispositivo e na sensibilidade do aplicativo a acessos mais lentos à memória.

Portanto, a essência do TMO é manter os processos em uma "dieta rigorosa" em termos de consumo de memória, forçando as páginas de memória não utilizadas a serem movidas para a partição de troca, cuja remoção não afeta visivelmente o desempenho (por exemplo, páginas com código usado apenas durante a inicialização e dados únicos armazenados em cache no disco) . Ao contrário da liberação de dados para a partição de troca em resposta à pouca memória, o TMO libera os dados com base na previsão preditiva.

A ausência de acesso a uma página de memória em 5 minutos é utilizada como um dos critérios de preferência. Essas páginas são chamadas de páginas frias e, em média, representam cerca de 35% da memória do aplicativo (dependendo do tipo de aplicativo, há uma variação de 19% a 65%).

A preferência leva em consideração a atividade associada a páginas anônimas de memória (memória alocada pelo aplicativo) e memória usada para cache de arquivos (alocada pelo kernel). Em algumas aplicações a memória anônima é o principal consumo, mas em outras o cache de arquivos também é muito importante.

Para evitar desequilíbrio ao liberar memória para o cache, o TMO usa um novo algoritmo de paginação que libera páginas anônimas e páginas associadas ao cache de arquivo proporcionalmente.

O envio de páginas usadas com pouca frequência para uma memória mais lenta não tem um grande impacto no desempenho, mas pode reduzir significativamente os custos de hardware. Os dados são enviados para SSDs ou espaço de troca compactado na RAM. Ao custo de armazenar um byte de dados, usar SSDs NVMe é até 10 vezes mais barato do que usar compactação na RAM.

Por fim, se você tiver interesse em saber mais sobre o assunto, pode consultar os detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Elian dito

    isso pode ser usado em computadores normais com aplicativos normais?