Quark: Runtime de Container Seguro e de Alto Desempenho
O Quark melhora o desempenho dos containers enquanto mantém altos padrões de segurança.
― 9 min ler
Índice
Quark é uma nova ferramenta criada pra rodar containers de aplicativos de um jeito que os mantém seguros e rápidos. No mundo da computação, a gente costuma usar containers pra dividir aplicativos em partes menores que conseguem trabalhar juntas. Esse método, que a galera chama de containerização, ficou bem popular, especialmente com a onda de microserviços e computação sem servidor.
Mas, os métodos tradicionais de rodar esses containers podem deixar a performance mais lenta por causa das camadas de tecnologia usadas pra mantê-los seguros. O objetivo do Quark é mudar isso, oferecendo uma forma de rodar esses containers de maneira mais eficiente, sem perder a segurança.
O que é um Ambiente Seguro para Containers?
Um ambiente seguro pra containers é um software que ajuda a criar e gerenciar containers em um ambiente seguro. Esses ambientes adicionam uma camada de proteção, rodando containers dentro de máquinas virtuais leves (VMs). Essa camada extra ajuda a proteger contra riscos, como ataques que podem dar acesso não autorizado ao sistema operacional principal. Exemplos de ambientes seguros que já existem são o Google gVisor e o AWS Firecracker.
Embora esses ambientes seguros ofereçam a proteção que a gente precisa, eles podem causar atrasos na rapidez com que os containers iniciam e se comunicam entre si. Quark endereça essas questões com uma nova abordagem.
A Necessidade de Alta Performance
À medida que os aplicativos ficam mais complexos, a velocidade com que eles rodam se torna cada vez mais importante. Quando um usuário manda uma requisição pra um servidor, é fundamental que o servidor responda rápido. Se a resposta demorar muito, a experiência do usuário vai pro saco. Isso é especialmente verdade pra aplicativos que dependem de conexões de rede rápidas e tempos de inicialização ágeis.
O objetivo principal do Quark é melhorar a performance em três áreas chave: redes, velocidade de inicialização e chamadas de sistema.
Necessidades de Rede
Pra aplicativos que usam microserviços, a comunicação pela rede é vital. Quando muitos serviços pequenos trabalham juntos, eles precisam enviar e receber dados rápido. Os runtimes seguros tradicionais podem ter dificuldade com isso porque costumam depender de pilhas de rede complexas. O Quark incorpora um novo método de rede chamado TCP Socket sobre RDMA (TSoR), que foi feito pra acelerar esse processo, permitindo que os aplicativos enviem dados de forma mais rápida e eficiente.
Inicialização Rápida
Outra área onde o Quark brilha é na velocidade de inicialização. Quando um container é iniciado pela primeira vez, pode demorar pra configurar tudo. Essa demora é conhecida como latência de cold-start. O Quark apresenta um recurso chamado Modo de Hibernação, que reduz significativamente esse tempo de inicialização, mantendo partes essenciais do aplicativo prontas pra usar, mesmo quando não estão ativamente em uso.
Chamadas de Sistema Eficientes
Muitos aplicativos precisam de chamadas de sistema pra realizar tarefas, como ler dados do disco ou enviar mensagens pela rede. Os métodos tradicionais de lidar com essas chamadas podem causar atrasos, pois exigem trocas entre diferentes camadas de software. O Quark usa um novo sistema chamado QCall, que diminui o tempo necessário pra lidar com essas operações.
Como o Quark Funciona
O Quark tem dois componentes principais: um kernel de convidado customizado chamado QKernel e um monitor de máquina virtual (VMM) chamado QVisor. Juntos, eles trabalham pra criar um ambiente seguro e eficiente pra rodar containers.
QKernel
O QKernel atua como um kernel de sistema operacional pros containers. Ele fornece todas as funções necessárias, como gerenciamento de memória e processos, parecido com o que um kernel de sistema operacional padrão como o Linux faz. Porém, o QKernel é feito especificamente pra trabalhar dentro da estrutura leve do Quark, tornando-o mais rápido e eficiente.
QVisor
O QVisor cuida da gestão das máquinas virtuais que rodam os containers. Ele ajuda a alocar recursos e a isolar uns dos outros, que é crucial pra segurança. Diferente dos VMMs tradicionais que podem ser pesados e cheios de recursos desnecessários, o QVisor é leve e feito especificamente pra trabalhar com o QKernel, permitindo melhorias focadas em performance.
Melhorias Chave no Quark
O Quark traz várias melhorias importantes em relação aos runtimes tradicionais de containers.
Redes com TSoR
O mecanismo TSoR permite que os dados fluam pela rede de forma mais rápida e eficiente do que os métodos tradicionais. Isso é feito usando uma tecnologia especial chamada RDMA que minimiza o tempo necessário pra transferir dados. Como o TSoR usa interfaces de programação existentes, não precisa que os aplicativos mudem a forma como enviam e recebem dados, facilitando a adoção.
Modo de Hibernação
O modo de hibernação é uma inovação chave no Quark que permite que os containers fiquem em um estado suspenso quando não estão em uso. Ele economiza dados essenciais enquanto libera memória, reduzindo significativamente os custos de memória inativa. Quando uma requisição chega, o container consegue acordar rapidamente e responder sem a longa pausa que normalmente acompanha os métodos de inicialização tradicionais.
QCall pra Syscalls Eficientes
O QCall melhora a forma como as chamadas de sistema são tratadas. Ao simplificar o processo e reduzir o número de trocas de contexto entre diferentes partes do sistema, o Quark torna a execução dessas chamadas mais rápida. Isso é crucial pra aplicativos que precisam interagir frequentemente com o sistema pra funcionar direitinho.
Avaliação de Performance
A performance do Quark foi avaliada usando aplicativos reais pra mostrar sua eficácia em melhorar velocidade e eficiência.
Testes com Redis
O Redis é um popular armazenamento de dados em memória usado por muitos aplicativos. Nos testes, o Quark reduziu os tempos de resposta em mais de 79% em comparação com outros runtimes. Essa melhoria significativa destaca os benefícios do TSoR nas interações de rede e do QCall na eficiência das chamadas de sistema.
Performance do Node.js
O Quark mostrou tempos de resposta mais rápidos quando usado com servidores Node.js. A melhoria na performance foi especialmente notável ao transferir documentos maiores. Por exemplo, ao mover um arquivo grande, o Quark alcançou resultados melhores do que runtimes concorrentes.
Performance do Etcd
O Etcd é um armazenamento de chave-valor consistente e altamente disponível. Os testes mostraram que ao usar o Quark, a capacidade de várias operações era maior do que a alcançada com outros runtimes. Isso significa que o Quark consegue lidar com mais requisições em menos tempo, o que é benéfico pra aplicativos que dependem de recuperação de dados rápida.
Testes de Performance de Rede
A performance do Quark também se estende às capacidades de rede. Os testes mostraram que a capacidade de conexões feitas com o Quark foi melhor do que a de runtimes tradicionais e outros runtimes seguros. O mecanismo TSoR baseado em RDMA ofereceu maior velocidade e reduziu atrasos, que é crítico em ambientes onde muitos aplicativos precisam se comunicar entre si de forma eficiente.
Configuração de Conexão TCP
O Quark também se saiu excepcionalmente bem na hora de estabelecer conexões TCP. Enquanto sistemas tradicionais podem demorar mais pra configurar conexões por causa das camadas adicionais de comunicação, o uso do Quark de conexões pré-estabelecidas e tecnologia RDMA permitiu que ele configurasse conexões de forma significativamente mais rápida.
Performance de Inicialização de Containers
Ao medir quão rapidamente os containers iniciam em diferentes modos, o Quark provou ser eficiente. O modo de hibernação permitiu que os containers respondessem a requisições em uma fração do tempo em comparação com os métodos tradicionais de cold-start. Essa responsividade é essencial em um mundo onde os usuários esperam reações quase instantâneas dos aplicativos.
Uso de Memória Inativa
Em termos de gerenciamento de memória, o Quark brilha ao economizar memória quando os containers não estão processando requisições ativamente. Ao desinflar a memória quando não está em uso, o Quark consegue manter uma pegada menor em comparação com outras soluções que mantêm os containers constantemente ativos.
Comparação de Sobrecarga de Memória
Em experimentos comparando a sobrecarga de memória do Quark com outros runtimes, foi descoberto que o Quark usou significativamente menos memória enquanto mantinha medidas de segurança robustas. Isso acontece porque tanto o QKernel quanto o QVisor foram projetados pra serem leves, reduzindo os recursos totais necessários pra operar.
Conclusão
O Quark representa um avanço significativo no âmbito dos runtimes seguros de containers. Ao focar em princípios leves e co-desenvolvendo seus dois principais componentes-QKernel e QVisor-o Quark atinge alta performance sem comprometer a segurança. As inovações em rede, velocidade de inicialização e execução de chamadas de sistema fazem dele uma escolha atraente pra desenvolvedores que buscam rodar aplicativos containerizados de forma eficiente em ambientes de computação modernos.
Com sua base de código aberto, o Quark tem potencial pra liderar o caminho pra futuros desenvolvimentos em computação em nuvem, oferecendo uma solução que atende às crescentes demandas por velocidade e segurança na implantação de aplicativos. A evolução contínua da tecnologia exige soluções que não apenas protejam, mas também melhorem a experiência do usuário, e o Quark pretende fazer exatamente isso.
Título: Quark: A High-Performance Secure Container Runtime for Serverless Computing
Resumo: Secure container runtimes serve as the foundational layer for creating and running containers, which is the bedrock of emerging computing paradigms like microservices and serverless computing. Although existing secure container runtimes indeed enhance security via running containers over a guest kernel and a Virtual Machine Monitor (VMM or Hypervisor), they incur performance penalties in critical areas such as networking, container startup, and I/O system calls. In our practice of operating microservices and serverless computing, we build a high-performance secure container runtime named Quark. Unlike existing solutions that rely on traditional VM technologies by importing Linux for the guest kernel and QEMU for the VMM, we take a different approach to building Quark from the ground up, paving the way for extreme customization to unlock high performance. Our development centers on co-designing a custom guest kernel and a VMM for secure containers. To this end, we build a lightweight guest OS kernel named QKernel and a specialized VMM named QVisor. The QKernel-QVisor codesign allows us to deliver three key advancements: high-performance RDMA-based container networking, fast container startup mode, and efficient mechanisms for executing I/O syscalls. In our practice with real-world apps like Redis, Quark cuts down P95 latency by 79.3% and increases throughput by 2.43x compared to Kata. Moreover, Quark container startup achieves 96.5% lower latency than the cold-start mode while saving 81.3% memory cost to the keep-warm mode. Quark is open-source with an industry-standard codebase in Rust.
Autores: Chenxingyu Zhao, Yulin Sun, Ying Xiong, Arvind Krishnamurthy
Última atualização: 2023-10-06 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2309.12624
Fonte PDF: https://arxiv.org/pdf/2309.12624
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.