Medindo o Tempo de Comunicação na Nuvem
Descubra a importância do timing e latência da comunicação em serviços de nuvem.
― 7 min ler
Muitos serviços online dependem de tempo pra funcionar direitinho. Eles usam certos limites de tempo pra decidir se algo deu errado ou pra agilizar as coisas. Quando partes de um sistema precisam se comunicar, elas esperam que as mensagens cheguem rapidamente. Se uma mensagem demora, pode causar problemas, tipo o sistema achando que algo falhou, ou pode não funcionar tão bem quanto poderia. Isso é especialmente verdadeiro na Nuvem, onde muitos usuários compartilham Recursos, levando a um desempenho imprevisível.
Pra ajudar com isso, a gente desenvolveu uma ferramenta chamada Cloud Latency Tester (CLT). Essa ferramenta mede quanto tempo leva pra mensagens serem enviadas entre diferentes computadores na nuvem. Usando o CLT, os engenheiros conseguem definir melhor aqueles limites de tempo importantes com base em dados reais, ao invés de suposições.
Comunicação
Importância do Tempo deA confiabilidade dos serviços de nuvem é crucial pra muitas empresas e usuários. Recentemente, quedas de grandes provedores de nuvem causaram interrupções em vários serviços, ressaltando a importância do tempo de comunicação. Quando os sistemas são projetados pra serem tolerantes a falhas, eles geralmente criam várias cópias de dados e têm capacidade extra pra lidar com problemas. Porém, esses sistemas também dependem do tempo pra responder quando algo dá errado. Por exemplo, se uma parte do sistema falha, ela precisa ser detectada rapidamente pra mudar pra um backup. Essa detecção se baseia em limites de tempo que são definidos de acordo com os tempos de entrega de mensagens esperados.
Hoje em dia, muitos sistemas contam com expectativas de tempo bem apertadas pra comunicação. Alguns sistemas precisam terminar tarefas em milissegundos pra funcionar corretamente. Quando essas suposições de tempo são quebradas, pode levar a um desempenho menor, dificultando a detecção de falhas e causando atrasos.
Desafios em Ambientes de Nuvem
Ambientes de nuvem são compartilhados por muitos usuários, o que significa que o desempenho pode variar bastante. Isso geralmente é causado por algo chamado "síndrome do vizinho barulhento", onde a atividade de um usuário pode impactar negativamente a experiência de outro. Provedores de nuvem tentam gerenciar esse problema, mas até pequenas mudanças de desempenho na infraestrutura podem ter grandes impactos no desempenho do sistema.
Entender como o tempo de comunicação imprevisível pode influenciar um sistema é vital. Por exemplo, se um sistema espera que as mensagens cheguem em 10 milissegundos, mas há atrasos frequentes, ele vai ficar tentando se reconfigurar repetidamente, usando recursos de forma ineficiente. Sistemas que dependem da entrega pontual de mensagens podem sofrer oscilações no desempenho, resultando em desperdício de recursos e potencialmente criando um ciclo de falhas.
Medindo Latência com CLT
Pra estudar os atrasos de comunicação na nuvem, a gente introduziu o Cloud Latency Tester (CLT). Essa ferramenta pode ser instalada em várias máquinas virtuais (VMs) em diferentes ambientes de nuvem, permitindo medir a latência de ida e volta entre diferentes nós. Ela envia mensagens de tamanhos variados pra frente e pra trás e registra quanto tempo leva pra elas viajarem.
Usando o CLT, a gente coletou dados de três grandes provedores de nuvem: Amazon Web Services (AWS), Google Cloud Platform (GCP) e Microsoft Azure. A gente olhou especialmente quanto tempo as mensagens levavam pra viajar entre VMs na mesma zona de disponibilidade e em zonas diferentes.
Principais Descobertas sobre Latência
Variabilidade da Latência: Nossos dados mostraram que a latência pode variar bastante, mesmo dentro da mesma região. Por exemplo, o tempo que as mensagens levavam pra viajar dentro da mesma sub-rede podia ser bem diferente em comparação com comunicações entre sub-redes ou zonas de disponibilidade diferentes.
Padrões Cíclicos: Em algumas nuvens, a gente observou que as métricas de latência seguiam padrões previsíveis ao longo do tempo. Isso indica que períodos de pico ou ciclos de uso específicos poderiam impactar o desempenho.
Impacto da Configuração: Como as VMs estão posicionadas na nuvem afeta a latência. Se as VMs estão em diferentes data centers, mesmo dentro da mesma zona de disponibilidade, a comunicação pode ser mais lenta do que o esperado por causa da distância física.
Tamanho do Payload Importa: O tamanho das mensagens enviadas também afeta a latência. No geral, mensagens maiores levam mais tempo pra serem enviadas. Se uma mensagem ultrapassa a unidade máxima de transmissão (MTU), pode precisar ser dividida em vários pacotes, causando atrasos adicionais.
Comunicação de Quorum: Alguns sistemas usam um método chamado quorum, onde vários nós precisam responder antes de uma tarefa ser considerada completa. Isso ajuda a mascarar atrasos de nós lentos, melhorando a latência geral.
Impacto dos Vizinhos Barulhentos
Computação em nuvem envolve múltiplos usuários compartilhando os mesmos recursos físicos, como servidores. Idealmente, cada usuário deveria receber uma quantidade justa de recursos quando precisa. No entanto, a competição por recursos pode levar alguns usuários a impactar o desempenho de outros, especialmente em escalas de tempo menores. Esse problema, conhecido como síndrome do vizinho barulhento, pode causar atrasos significativos pra alguns aplicativos, especialmente em períodos de alta demanda.
Os provedores de nuvem adotaram várias medidas pra lidar com esse problema, incluindo isolamento de recursos e políticas de uso justo. No entanto, o desafio do vizinho barulhento persiste, especialmente em escalas de tempo pequenas, onde ajustes rápidos não são possíveis.
Entendendo a Latência em Sistemas de Nuvem
O tempo de comunicação em sistemas de nuvem envolve mais do que apenas atrasos de rede. Fatores como hardware do servidor, gerenciamento de software e sistemas operacionais podem contribuir pra latência. Por exemplo, a forma como uma máquina virtual lida com dados pode introduzir variações difíceis de prever.
Quando a gente analisou de perto a latência em diferentes nuvens, descobrimos que cada provedor tinha padrões únicos. A AWS apresentava um desempenho mais estável, enquanto a Azure mostrava flutuações notáveis. A GCP tendia a ter um desempenho intermediário entre os dois.
Resumindo os Resultados
Através dos nossos testes, a gente aprendeu que:
- Sistemas de nuvem frequentemente enfrentam picos enormes e inesperados na latência, às vezes excedendo níveis normais por grandes quantidades.
- Nem todos os nós se comportam igualmente; alguns podem mostrar um desempenho consistentemente melhor que outros.
- Supondo tempos baseados em Latências médias, pode levar a problemas de desempenho significativos se não forem regularmente validadas com medidas reais.
Conclusão
Nossos esforços com o CLT mostraram que os atrasos de comunicação na nuvem podem ser imprevisíveis e variar bastante. Essas descobertas são essenciais pra engenheiros e designers que trabalham em aplicações nativas da nuvem, já que eles precisam levar em conta esses possíveis atrasos ao definir suposições de tempo e arquiteturas de sistema.
Conforme os ambientes de nuvem se tornam mais complexos, entender e medir a latência de comunicação vai continuar sendo fundamental pra desenvolver e manter sistemas eficazes. Usando dados reais de ferramentas como o CLT, os desenvolvedores podem tomar decisões mais informadas, garantindo um desempenho e confiabilidade melhores em suas aplicações. O objetivo é estabelecer expectativas realistas com base em dados e não em suposições, abrindo caminho pra operações mais suaves na computação em nuvem.
Título: Cloudy Forecast: How Predictable is Communication Latency in the Cloud?
Resumo: Many systems and services rely on timing assumptions for performance and availability to perform critical aspects of their operation, such as various timeouts for failure detectors or optimizations to concurrency control mechanisms. Many such assumptions rely on the ability of different components to communicate on time -- a delay in communication may trigger the failure detector or cause the system to enter a less-optimized execution mode. Unfortunately, these timing assumptions are often set with little regard to actual communication guarantees of the underlying infrastructure -- in particular, the variability of communication delays between processes in different nodes/servers. The higher communication variability holds especially true for systems deployed in the public cloud since the cloud is a utility shared by many users and organizations, making it prone to higher performance variance due to noisy neighbor syndrome. In this work, we present Cloud Latency Tester (CLT), a simple tool that can help measure the variability of communication delays between nodes to help engineers set proper values for their timing assumptions. We also provide our observational analysis of running CLT in three major cloud providers and share the lessons we learned.
Autores: Owen Hilyard, Bocheng Cui, Marielle Webster, Abishek Bangalore Muralikrishna, Aleksey Charapko
Última atualização: 2023-09-22 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2309.13169
Fonte PDF: https://arxiv.org/pdf/2309.13169
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.