Novo balanceador de carga de CPU do MIT

O sistema Shenango está sendo planejado para ser utilizado em data centers.

Novo balanceador de carga de CPU do MIT
/ фото Marco Verch CC BY

De acordo com um dos provedores, os data centers utilizam utilizam apenas 20-40% dos recursos computacionais disponíveis. Em altas cargas, esse número pode alcançar 60%. Essa distribuição de recursos leva à presença de chamados "servidores zumbis". São máquinas que ficam inativas a maior parte do tempo, consumindo eletricidade desnecessariamente. Atualmente, 30% dos servidores no mundo estão ociosos, consumindo eletricidade no valor de 30 bilhões de dólares por ano.

A luta contra o consumo ineficiente de recursos computacionais foi iniciada no MIT.

Uma equipe de engenheiros desenvolveu um sistema de balanceamento de carga para processadores chamado Shenango. Seu objetivo é monitorar o estado dos buffers de tarefas e redistribuir os processos "presa" (aqueles que não conseguem obter tempo de CPU) para máquinas livres.

Como funciona o Shenango

Shenango é uma biblioteca Linux escrita em C com bindings para Rust e C++. O código do projeto e os aplicativos de teste estão publicados no repositório no GitHub.

A base da solução é um algoritmo IOKernel, que é executado em um núcleo dedicado de um sistema multiprocessador. Ele gerencia as demandas de CPU usando o framework DPDK, que permite que aplicativos interajam diretamente com dispositivos de rede.

O IOKernel decide a quais núcleos atribuir uma tarefa específica. O algoritmo também determina quantos núcleos serão necessários. Para cada processo, são definidos núcleos principais (garantidos) e adicionais (expansíveis) — os últimos são acionados em caso de um aumento repentino no número de solicitações de CPU.

A fila de solicitações do IOKernel é organizada na forma de um buffer circular. A cada cinco microsegundos, o algoritmo verifica se todas as tarefas atribuídas ao núcleo foram concluídas. Para isso, ele compara a posição atual da "cabeça" do buffer com a posição anterior de seu "rabo". Se for constatado que o rabo já estava na fila na verificação anterior, o sistema sinaliza uma sobrecarga do buffer e atribui um núcleo adicional ao processo.

Na distribuição de carga, a prioridade é dada aos núcleos onde esse mesmo processo já foi executado antes e parcialmente ficou em cache, ou a quaisquer núcleos ociosos.

Novo balanceador de carga de CPU do MIT

O Shenango também utiliza a abordagem work stealingOs núcleos dedicados a um único aplicativo monitoram a carga de trabalho entre si. Se um núcleo termina sua lista de tarefas antes dos outros, ele "descarrega" parte do trabalho dos vizinhos.

Vantagens e desvantagens

De acordo com palavras engenheiros do MIT, o Shenango pode processar cinco milhões de requisições por segundo e manter um tempo de resposta médio de 37 microssegundos. Especialistas afirmam que, em alguns casos, a tecnologia pode aumentar a taxa de utilização dos processadores em data centers para 100%. Como resultado, os operadores de DC poderão economizar na compra e manutenção de servidores.

Potencial da solução observam e especialistas de outras universidades. Segundo um professor de um instituto coreano, o sistema do MIT ajudará a reduzir a latência em serviços web. Por exemplo, será útil para lojas online. Em dias de promoção, até mesmo um segundo de atraso na carga da página resulta em uma redução de 11% no número de visualizações do site. A distribuição eficiente da carga ajudará a atender mais clientes.

A tecnologia ainda apresenta desvantagens - não suporta sistemas NUMA- onde os chips estão conectados a diferentes módulos de memória e não se "comunicam" entre si. Nesse caso, o IOKernel pode regular o funcionamento de um grupo específico de processadores, mas não de todos os chips do servidor.

Novo balanceador de carga de CPU do MIT
/ фото Tim Reckmann CC BY

Tecnologias análogas

Entre outros sistemas de balanceamento de carga para processadores, destacamos o Arachne. Ele calcula quantos núcleos serão necessários para o aplicativo no momento de seu lançamento e distribui os processos de acordo com esse parâmetro. Segundo os autores, a latência máxima do aplicativo no Arachne é de cerca de 10 mil microssegundos.

A tecnologia é implementada como uma biblioteca C++ para Linux, e seu código-fonte está disponível em GitHub.

Outro balanceador de carga é o ZygOS. Assim como o Shenango, a tecnologia utiliza o método de roubo de trabalho para redistribuir os processos. De acordo com os autores do ZygOS, a latência média no funcionamento de aplicativos ao usar a ferramenta é de cerca de 150 microssegundos, e a máxima é de cerca de 450 microssegundos. O código do projeto também está disponível publicamente.

Como resultado, obtemos um serviço de "monitoramento como serviço", automatizado na linha de produção de integração contínua. O desenvolvedor ou testador precisa apenas definir a lista de métricas em um arquivo JSON, e tudo o mais acontece automaticamente. Obtemos um controle de qualidade transparente dos lançamentos: todas as notificações sobre desempenho, consumo de recursos ou regressões arquitetônicas.

Data centers modernos continuam a se expandir. Especialmente visível é a tendência de crescimento no mercado de data centers hyperscale: atualmente, existem no mundo existem 430 data centers hipermassivos, mas já nos próximos anos esse número pode aumentar em 30%. Por esse motivo, as tecnologias de balanceamento de carga nos processadores serão muito demandadas. Sistemas como o Shenango já estão sendo implementados por grandes corporações, e no futuro, a quantidade dessas ferramentas só irá aumentar.

Postagens do Primeiro blog sobre IaaS corporativo:

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster