Um novo sistema dos pesquisadores do MIT melhora a eficiência das operações de alta velocidade em data centers, atribuindo melhor o processamento de dados sensíveis ao tempo entre os núcleos da CPU e garantindo que o hardware seja executado de forma produtiva. Crédito:Massachusetts Institute of Technology
Os data centers de hoje consomem e desperdiçam uma boa quantidade de energia respondendo às solicitações dos usuários o mais rápido possível, com apenas alguns microssegundos de atraso. Um novo sistema dos pesquisadores do MIT melhora a eficiência das operações de alta velocidade, atribuindo melhor o processamento de dados sensíveis ao tempo nos núcleos da unidade central de processamento (CPU) e garantindo que o hardware seja executado de forma produtiva.
Os data centers operam como redes distribuídas, com vários aplicativos da web e móveis implementados em um único servidor. Quando os usuários enviam solicitações para um aplicativo, bits de dados armazenados são extraídos de centenas ou milhares de serviços em tantos servidores. Antes de enviar uma resposta, o aplicativo deve aguardar o serviço mais lento para processar os dados. Esse tempo de atraso é conhecido como latência de cauda.
Os métodos atuais para reduzir as latências de cauda deixam toneladas de núcleos de CPU em um servidor abertos para lidar rapidamente com as solicitações de entrada. Mas isso significa que os núcleos ficam ociosos na maior parte do tempo, enquanto os servidores continuam usando energia apenas para permanecer ligados. Os data centers podem conter centenas de milhares de servidores, portanto, mesmo pequenas melhorias na eficiência de cada servidor podem economizar milhões de dólares.
Alternativamente, alguns sistemas realocam núcleos em aplicativos com base na carga de trabalho. Mas isso ocorre ao longo de milissegundos - cerca de um milésimo da velocidade desejada para as solicitações aceleradas de hoje. Esperar muito também pode prejudicar o desempenho de um aplicativo, porque qualquer informação que não seja processada antes de um tempo determinado não é enviada ao usuário.
Em um artigo apresentado na conferência de Implementação e Projeto de Sistemas em Rede USENIX na próxima semana, os pesquisadores desenvolveram um sistema de alocação de núcleo mais rápido, chamado Shenango, que reduz as latências de cauda, ao mesmo tempo em que alcançam alta eficiência. Primeiro, um novo algoritmo detecta quais aplicativos estão lutando para processar dados. Então, um componente de software aloca núcleos ociosos para lidar com a carga de trabalho do aplicativo.
“Em data centers, há uma troca entre eficiência e latência, e você realmente precisa realocar núcleos em uma granularidade muito mais fina do que a cada milissegundo, "diz a primeira autora Amy Ousterhout, um Ph.D. Aluno do Laboratório de Ciência da Computação e Inteligência Artificial (CSAIL). O Shenango permite que os servidores "gerenciem operações que ocorrem em escalas de tempo realmente curtas e o façam com eficiência".
As economias de energia e custos variam de acordo com o data center, dependendo do tamanho e das cargas de trabalho. Mas o objetivo geral é melhorar a utilização da CPU do data center, para que cada núcleo seja bem utilizado. As melhores taxas de utilização da CPU hoje estão em cerca de 60 por cento, mas os pesquisadores dizem que seu sistema pode potencialmente aumentar esse número para 100 por cento.
"A utilização do data center hoje é bastante baixa, "diz o co-autor Adam Belay, professor assistente de engenharia elétrica e ciência da computação e pesquisador do CSAIL. "Este é um problema muito sério [que não pode] ser resolvido em um único lugar no data center. Mas este sistema é uma peça crítica para aumentar ainda mais a utilização."
Juntando-se a Ousterhout e Belay no papel estão Hari Balakrishnan, o Professor Titular da Fujitsu no Departamento de Engenharia Elétrica e Ciência da Computação, e CSAIL Ph.D. alunos Jonathan Behrens e Joshua Fried.
Eficiente detecção de congestionamento
Em um data center do mundo real, Shenango - algoritmo e software - seria executado em cada servidor em um data center. Todos os servidores seriam capazes de se comunicar uns com os outros.
A primeira inovação do sistema é um novo algoritmo de detecção de congestionamento. A cada cinco microssegundos, o algoritmo verifica os pacotes de dados enfileirados para processamento para cada aplicativo. Se um pacote ainda está esperando pela última observação, o algoritmo observa que há um atraso de pelo menos 5 microssegundos. Ele também verifica se há algum processo de computação, tópicos chamados, estão esperando para serem executados. Se então, o sistema considera que um aplicativo "congestionado".
Parece bastante simples. Mas a estrutura da fila é importante para alcançar a detecção de congestionamento em escala de microssegundos. O pensamento tradicional significava que o software verificava o carimbo de data / hora de cada pacote de dados enfileirado, o que levaria muito tempo.
Os pesquisadores implementam as filas em estruturas eficientes conhecidas como "buffers de anel". Essas estruturas podem ser visualizadas como fendas diferentes ao redor de um anel. O primeiro pacote de dados inserido vai para um slot inicial. Conforme novos dados chegam, eles são colocados em slots subsequentes ao redor do anel. Usualmente, essas estruturas são usadas para processamento de dados first-in-first-out, puxando dados do slot inicial e trabalhando em direção ao slot final.
O sistema dos pesquisadores, Contudo, apenas armazena pacotes de dados brevemente nas estruturas, até que um aplicativo possa processá-los. Enquanto isso, os pacotes armazenados podem ser usados para verificações de congestionamento. O algoritmo precisa apenas comparar dois pontos na fila - a localização do primeiro pacote e onde o último pacote estava cinco microssegundos atrás - para determinar se os pacotes estão encontrando um atraso.
"Você pode olhar para esses dois pontos, e acompanhar seu progresso a cada cinco microssegundos, para ver quantos dados foram processados, "Fried diz. Como as estruturas são simples, "você só precisa fazer isso uma vez por núcleo. Se você está olhando para 24 núcleos, você faz 24 verificações em cinco microssegundos, que escala bem. "
Alocação inteligente
A segunda inovação é chamada de IOKernel, o hub de software central que direciona os pacotes de dados para os aplicativos apropriados. O IOKernel também usa o algoritmo de detecção de congestionamento para alocar rapidamente núcleos para aplicativos congestionados em ordens de magnitude mais rapidamente do que as abordagens tradicionais.
Por exemplo, o IOKernel pode ver um pacote de dados de entrada para um determinado aplicativo que requer velocidades de processamento de microssegundos. Se o aplicativo estiver congestionado devido à falta de núcleos, o IOKernel dedica imediatamente um núcleo ocioso ao aplicativo. Se ele também vir outro aplicativo executando núcleos com dados menos urgentes, ele pegará alguns desses núcleos e os realocará para o aplicativo congestionado. Os próprios aplicativos também ajudam:se um aplicativo não estiver processando dados, ele alerta o IOKernel que seus núcleos podem ser realocados. Os dados processados voltam ao IOKernel para enviar a resposta.
"O IOKernel está se concentrando em quais aplicativos precisam de núcleos que não os têm, "Behrens diz." É tentar descobrir quem está sobrecarregado e precisa de mais núcleos, e dá a eles núcleos o mais rápido possível, para que não fiquem para trás e tenham latências enormes. "
A comunicação estreita entre o IOKernel, algoritmo, aplicativos, e o hardware do servidor é "único em data centers" e permite que o Shenango funcione perfeitamente, Belay diz:"O sistema tem visibilidade global do que está acontecendo em cada servidor. Ele vê o hardware que fornece os pacotes, o que está sendo executado em cada núcleo, e o quão ocupado cada um dos aplicativos está. E faz isso na escala de microssegundos. "
Próximo, os pesquisadores estão refinando o Shenango para implementação de data center no mundo real. Para fazer isso, eles estão garantindo que o software pode lidar com uma taxa de transferência de dados muito alta e tem os recursos de segurança apropriados.