Home Artigos técnicos Por que a capacidade de rede não é suficiente: Estratégias de cache para melhor streaming
Applications

Por que a capacidade de rede não é suficiente: Estratégias de cache para melhor streaming

About The Author

Outline

Para acompanhar o crescente volume de conteúdo de mídia, a Verizon Media, agora Edgio Media, Platform investiu na expansão de nossa pegada global de cache. Só em 2019, adicionamos mais de 25 Tbps de capacidade, sete POPs globais e perto de 900 conexões de última milha. Embora eficaz na melhoria do desempenho, a capacidade bruta não é suficiente, nem é um modelo de negócios sustentável para atender a crescente demanda global por conteúdo de streaming.

Para maximizar a disponibilidade de nossa capacidade de rede, investimos igualmente em tecnologias, processos e ferramentas que mantêm os custos operacionais e de infraestrutura sob controle. Nossa equipe de pesquisa continuamente empurra o limite das tecnologias de cache, aplicando e refinando processos para dar aos nossos operadores de rede controle granular sobre como, quando e onde o conteúdo é armazenado em cache.

Estratégias de Caching Modernas

O objetivo de qualquer estratégia de cache é manter o conteúdo mais popular no cache, removendo de forma rápida e eficiente o conteúdo menos popular. Ao longo dos anos, pesquisadores e desenvolvedores de software desenvolveram inúmeras estratégias destinadas a resolver o desafio do cache. Estes variam de relativamente simples a extremamente complexos. Algumas das estratégias mais populares incluem:

  • O menos usado recentemente (LRU)
  • Utilização menos frequente (LFU)
  • Primeira entrada, primeira saída (FIFO)

Seria conveniente se houvesse uma única estratégia de cache para governar todas as situações. No entanto, essa solução ainda não foi desenvolvida, e a eficácia de uma estratégia específica pode variar muito dependendo do tamanho do servidor e do disco, padrões de tráfego e outros fatores. Com base em testes extensivos, descobrimos que a LRU oferece o melhor compromisso entre a taxa de acerto e a E/S do disco, fornecendo 60% menos gravações do que a FIFO, mantendo altas taxas de acerto. Além disso, para os tamanhos de disco usados em nosso CDN, o LRU executa a par com políticas mais complexas, como o S4LRU (Quadruply-segmentado LRU). Você pode obter mais detalhes neste artigo que publicamos no ano passado na Conferência de Medição Passiva e Ativa (PAM) realizada em Puerto Varas, Chile.

Estratégia de Caching em Evolução com LRU Híbrida

Embora o LRU funcione muito bem para o nosso ambiente, estamos sempre à procura de formas de impulsionar a inovação e melhorar o desempenho do cliente. Isso levou a uma nova capacidade que recentemente adicionamos à nossa plataforma chamada LRU Híbrida. Chama-se híbrido porque adiciona uma camada de abstração em cima do LRU. Se não utilizarmos a funcionalidade híbrida, o sistema continua a funcionar normalmente, pelo que é muito fácil de compreender e ativar ou desativar.

O que estamos fazendo com a abordagem híbrida é ajustar o sistema LRU para nos dar mais controle sobre peças específicas de conteúdo. Por controle, queremos dizer ter a capacidade de armazenar explicitamente algum conteúdo por um período mais longo ou menor com base em configurações predefinidas.

Isso é importante devido às mudanças que ocorrem em todo o cenário de streaming de vídeo, particularmente o rápido crescimento na transmissão ao vivo. Nossa rede, por si só, já hospedou centenas de milhares de eventos ao vivo, muitos dos quais são entregues a milhões de espetadores simultâneos. Apesar da enorme popularidade de tais eventos, uma vez que um fluxo de eventos ao vivo é concluído, não é provável que ele seja retransmitido em qualquer volume significativo. Com a LRU híbrida, podemos especificar um período de cache mais curto, liberando valiosos recursos de cache para outras mídias e conteúdo.

Estamos experimentando com o bloqueio de determinados conteúdos e fornecendo uma garantia de melhor esforço de que ele permanecerá em nosso cache. Isso pode ser particularmente útil para transmissões de vídeo ao vivo com prazo de validade limitado, mas ainda pode estar em alta demanda por algumas horas após um evento ao vivo, que se torna uma peça normal de conteúdo de vídeo sob demanda. Essa funcionalidade também pode ser usada em condições em que um provedor de conteúdo explicitamente deseja bloquear algum conteúdo por um período específico de tempo para que ele não atinja seus servidores de origem.

LRU híbrida também nos permite armazenar alguns conteúdos por um longo período de tempo. Isso é útil se a origem estiver localizada em uma parte remota do mundo, por exemplo, o que pode levar a uma baixa qualidade de vida quando a CDN não tiver solicitado conteúdo em seu cache. Nesses casos, uma nova solicitação de cliente acionaria uma falha de cache que a origem precisará preencher, resultando potencialmente em buffer. Envelhecer esse conteúdo mais lento permanecerá no cache por mais tempo e reduzirá o número de preenchimentos de origens.

Parâmetros de utilização da LRU híbrida

LRU híbrida consiste em dois parâmetros ajustáveis que nos dão a capacidade de atrasar ou acelerar o despejo ou remoção de conteúdo específico de nossas caches:

  • Taxa de envelhecimento
  • Tempo para viver (TTL)
A taxa de envelhecimento define a taxa de aumento da pontuação de despejo ao longo do tempo. É uma função de escala que os operadores podem usar para tornar um conteúdo mais rápido ou mais lento. O valor padrão para a taxa de envelhecimento é 10, portanto, alterar esse valor para 200, por exemplo, acelerará o envelhecimento do arquivo de vídeo em 20 vezes (200/10 a 20). O valor também pode ser alterado para cinco para envelhecer um pedaço de conteúdo à metade da velocidade padrão.

O parâmetro Time to Live (TTL) reduz a idade de um item em um valor especificado. Ele funciona dando uma pontuação de despejo extremamente baixa a um item para a duração definida por essa variável. Isso força um item a permanecer no cache por uma duração especificada desde que foi acessado pela última vez. O padrão é 0 segundos, o que significa que não há preferência especial.

Os gráficos abaixo mostram como esses parâmetros ajustáveis funcionam para ajustar quanto tempo o conteúdo permanece no cache. Considerar esses parâmetros como botões ou mostradores que podem ser ajustados com precisão para corresponder às demandas de conteúdo é útil. Os gráficos mostram como os objetos envelhecem ao longo do tempo em caches do servidor enquanto esperam para serem acessados.

Primeiro, vamos olhar para a taxa de envelhecimento. Os objetos tradicionais LRU envelhecem na mesma taxa ao longo do tempo. Mas, à medida que vamos subindo o mostrador da taxa de envelhecimento, os itens envelhecem mais rapidamente ao longo do tempo. Da mesma forma, quando viramos o mostrador na direção oposta, os itens envelhecem mais lentamente do que LRU. Gire o botão o suficiente, e os itens de envelhecimento lento nunca excedem o “limite de despejo”, como mostra a figura um. Com esse controle, podemos remover itens mais cedo para liberar espaço ou manter os itens no disco por mais tempo, conforme necessário para reduzir as opções de origem ou por outras razões.

Em contraste com a taxa de envelhecimento, o TTL nos permite alterar a capacidade de cache de um item específico. Para a duração definida usando a função TTL, um item não envelhece enquanto está no disco, por isso é menos provável (mesmo muito improvável) ser despejado. Depois que o TTL expira, o item pode começar a envelhecer na forma tradicional de LRU ou com envelhecimento rápido ou envelhecimento lento (dependendo de como o operador o configura). Na figura abaixo, o TTL com envelhecimento lento manteve um item no disco até o ponto em que não excedeu o limite de despejo de cache. No lado oposto, o TTL garantiu que um fluxo de vídeo ao vivo fosse armazenado em cache por pelo menos a duração do evento, mas depois disso foi rapidamente removido do disco usando o envelhecimento rápido.

Na maioria dos casos, alterar o valor da taxa de envelhecimento é o método preferido para ajustar o tempo para quando o conteúdo é despejado do cache, porque ele pode facilmente se adaptar à quantidade de tráfego em um disco. O TTL, por outro lado, é mais agressivo e pode efetivamente bloquear uma parte de um disco até que o conteúdo seja lançado. No entanto, como esses exemplos ilustram, os dois controles podem ser usados juntos para alcançar de forma confiável o efeito desejado.

Estratégias de Caching prospetivas

Uma estratégia de cache ampla, como LRU, é como um grande martelo, tratando todo o conteúdo de forma igual, independentemente do tipo ou tamanho do arquivo. Se um arquivo não receber um hit dentro de um determinado tempo, ele será excluído do cache. Enquanto isso, outros arquivos (como transmissões/eventos de vídeo ao vivo de uma só vez) que são pouco prováveis de obter hits no futuro se sentam no cache, ocupando espaço. A LRU híbrida adiciona um nível de refinamento com a intenção de reduzir o espaço de armazenamento de cache desnecessário e melhorar a taxa de acerto do cache. É como usar um pequeno martelo ou chave de fenda para controlar com mais precisão quais arquivos devem permanecer no cache e quais devem ser removidos.

Atualmente, a LRU híbrida é experimental e requer que um operador ajuste os prazos de despejo para conteúdo. Olhando para o futuro, estamos pesquisando se perfis de solicitação e outros fatores podem ser aproveitados para fazer ajustes automaticamente. Os eventos ao vivo, por exemplo, têm muitos perfis diferentes – milhares de solicitações para os mesmos segmentos de arquivos que entram ao mesmo tempo – e então arquivos de vídeo sob demanda. Também estamos olhando para fazer ajustes com base no tamanho do arquivo – você quer manter arquivos grandes no disco para minimizar o tráfego de rede ou manter arquivos menores à mão para otimizar para uma taxa de acerto de cache?

Embora estejamos confiantes no desempenho e maturidade do nosso sistema de cache e estratégias, a necessidade de otimizar recursos finitos continua a ser um esforço importante e contínuo.