O Facebook introduziu o mecanismo TMO, que permite economizar 20-32% da memória nos servidores

Engenheiros do Facebook (banidos na Federação Russa) publicaram um relatório sobre a implementação no ano passado da tecnologia TMO (Transparent Memory Offloading), que permite economias significativas de RAM em servidores, deslocando dados secundários não necessários para o trabalho em unidades mais baratas, como NVMe Discos SSD. O Facebook estima que o uso do TMO pode economizar de 20 a 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 já estão incluídos no kernel do Linux.

No lado do kernel Linux, a tecnologia é suportada pelo subsistema PSI (Pressure Stall Information), disponível a partir da versão 4.20. O PSI já é utilizado em diversos manipuladores com pouca memória e permite analisar informações sobre o tempo de espera para obtenção de diversos recursos (CPU, memória, E/S). Com o PSI, os processadores do espaço do usuário podem avaliar com mais precisão os níveis de carga do sistema e os padrões de desaceleração, permitindo que anomalias sejam identificadas antecipadamente, antes que tenham um impacto perceptível no desempenho.

No espaço do usuário, o TMO é fornecido pelo componente Senpai, que, por meio do cgroup2, ajusta dinamicamente o limite de memória dos contêineres da aplicação com base nos dados recebidos do PSI. Senpai analisa os sinais de início de escassez de recursos via PSI, avalia a sensibilidade das aplicações à lentidão no acesso à memória e tenta determinar o tamanho mínimo de memória exigido pelo contêiner, no qual os dados necessários ao funcionamento permanecem na RAM, e o acompanhamento os dados armazenados no cache de arquivos ou não usados ​​​​diretamente no momento são forçados a sair para a partição swap.

O Facebook introduziu o mecanismo TMO, que permite economizar 20-32% da memória nos servidores

Assim, a essência do TMO é manter os processos em uma dieta rigorosa em termos de consumo de memória, forçando a troca de páginas de memória não utilizadas cujo despejo não afeta significativamente o desempenho (por exemplo, páginas com código usado apenas durante a inicialização, e páginas de uso único dados no cache do disco). Ao contrário da remoção de informações para a partição swap em resposta à pressão de memória, no TMO os dados são despejados com base na previsão proativa.

Um dos critérios para despejo é a ausência de acesso à página de memória por 5 minutos. Essas páginas são chamadas de páginas de memória fria e representam, em média, cerca de 35% da memória do aplicativo (dependendo do tipo de aplicativo, a faixa varia de 19% a 65%). A preempção leva em consideração a atividade associada a páginas de memória anônimas (memória alocada pelo aplicativo) e memória usada para cache de arquivos (alocada pelo kernel). Em algumas aplicações o principal consumo é a memória anônima, mas em outras o cache de arquivos também é importante. Para evitar desequilíbrios na remoção do cache, o TMO utiliza um novo algoritmo de paginação que remove páginas anônimas e páginas associadas ao cache de arquivos proporcionalmente.

Colocar páginas usadas com pouca frequência em uma memória mais lenta não tem um impacto significativo no desempenho, mas pode reduzir significativamente os custos de hardware. Os dados são descarregados em unidades SSD ou em uma área de troca compactada na RAM. Em termos de custo de armazenamento de um byte de dados, usar um SSD NVMe é até 10 vezes mais barato do que usar compactação em RAM.

O Facebook introduziu o mecanismo TMO, que permite economizar 20-32% da memória nos servidores


Fonte: opennet.ru

Adicionar um comentário