Simple Science

Ciencia de vanguardia explicada de forma sencilla

# Informática# Redes y arquitectura de Internet

Quark: Runtime de contenedor seguro y de alto rendimiento

Quark mejora el rendimiento de los contenedores mientras mantiene altos estándares de seguridad.

― 9 minilectura


Quark: ContenedoresQuark: ContenedoresRápidos y Segurosseguridad.contenedores sin sacrificar laElevando el rendimiento de los
Tabla de contenidos

Quark es una nueva herramienta diseñada para ejecutar contenedores de aplicaciones de una manera que los mantenga seguros y rápidos. En el mundo de la computación, a menudo usamos contenedores para descomponer aplicaciones en partes más pequeñas que pueden trabajar juntas. Este método, a menudo llamado contenedorización, se ha vuelto muy popular, especialmente con el auge de cosas como microservicios y computación sin servidor.

Sin embargo, los métodos tradicionales para ejecutar estos contenedores pueden introducir un rendimiento más lento debido a las capas de tecnología utilizadas para mantenerlos seguros. Quark tiene como objetivo cambiar eso al ofrecer una forma de ejecutar estos contenedores de manera más eficiente sin dejar de mantener su seguridad.

¿Qué es un entorno de ejecución de contenedor seguro?

Un entorno de ejecución de contenedor seguro es un software que ayuda a crear y gestionar contenedores en un entorno seguro. Estos entornos añaden una capa de protección al ejecutar contenedores dentro de máquinas virtuales (VMs) ligeras. Esta capa adicional de protección ayuda a resguardar contra riesgos potenciales, como ataques que podrían dar acceso no autorizado al sistema operativo principal. Ejemplos de entornos de ejecución de contenedores seguros existentes incluyen Google gVisor y AWS Firecracker.

Aunque estos entornos seguros proporcionan la protección necesaria, pueden causar retrasos en la rapidez con la que los contenedores se inician y se comunican entre sí. Quark aborda estos problemas adoptando un nuevo enfoque.

La necesidad de alto rendimiento

A medida que las aplicaciones se vuelven más complejas, la velocidad a la que se ejecutan se vuelve cada vez más importante. Por ejemplo, cuando un usuario envía una solicitud a un servidor, es esencial que el servidor responda rápido. Si la respuesta es demasiado lenta, los usuarios pueden tener una mala experiencia. Esto es especialmente cierto para aplicaciones que dependen de conexiones de red rápidas y tiempos de inicio rápidos.

El objetivo principal de Quark es mejorar el rendimiento en tres áreas clave: redes, velocidad de inicio y llamadas al sistema.

Necesidades de red

Para aplicaciones que utilizan microservicios, la comunicación a través de redes es vital. Cuando muchos servicios pequeños trabajan juntos, necesitan enviar y recibir datos rápidamente. Los entornos de ejecución seguros tradicionales pueden tener problemas con esto porque a menudo dependen de pilas de red complejas. Quark incorpora un nuevo método de red llamado TSoR (TCP Socket over RDMA), que está diseñado para acelerar este proceso permitiendo que las aplicaciones envíen datos más rápida y eficientemente.

Inicio rápido

Otra área en la que Quark destaca es en la velocidad de inicio. Cuando un contenedor se inicia por primera vez, puede tardar en configurar todo. Este retraso se conoce como latencia de inicio en frío. Quark introduce una función llamada modo de hibernación, que reduce significativamente este tiempo de inicio manteniendo partes esenciales de la aplicación listas para usar, incluso cuando no están en uso.

Llamadas al sistema eficientes

Muchas aplicaciones requieren llamadas al sistema para realizar tareas, como leer datos del disco o enviar mensajes a través de la red. Los métodos tradicionales para manejar estas llamadas pueden introducir retrasos porque requieren cambiar entre diferentes capas de software. Quark utiliza un nuevo sistema llamado QCall, que reduce el tiempo necesario para manejar estas operaciones.

Cómo funciona Quark

Quark tiene dos componentes principales: un kernel de invitado personalizado llamado QKernel y un monitor de máquina virtual (VMM) llamado QVisor. Juntos, trabajan para crear un entorno seguro y eficiente para ejecutar contenedores.

QKernel

QKernel actúa como un kernel del sistema operativo para contenedores. Proporciona todas las funciones necesarias, como gestionar la memoria y los procesos, similar a lo que hace un kernel estándar de sistema operativo como Linux. Sin embargo, QKernel está diseñado específicamente para funcionar dentro de la estructura ligera de Quark, haciéndolo más rápido y eficiente.

QVisor

QVisor se encarga de gestionar las máquinas virtuales que ejecutan los contenedores. Ayuda a asignar recursos y a aislarlos unos de otros, lo cual es clave para la seguridad. A diferencia de los VMM tradicionales que pueden ser pesados y estar llenos de características innecesarias, QVisor es ligero y específicamente diseñado para trabajar con QKernel, lo que permite mejoras dirigidas en el rendimiento.

Mejoras clave en Quark

Quark introduce varias mejoras importantes sobre los entornos de ejecución de contenedores tradicionales.

Redes con TSoR

El mecanismo TSoR permite que los datos fluyan por la red más rápido y de manera más eficiente que los métodos tradicionales. Esto se logra utilizando una tecnología especial llamada RDMA que minimiza el tiempo que toma transferir datos. Como TSoR utiliza interfaces de programación existentes, no requiere que las aplicaciones cambien la forma en que envían y reciben datos, lo que facilita su adopción.

Modo de hibernación

El modo de hibernación es una innovación clave en Quark que permite que los contenedores existan en un estado suspendido cuando no están en uso. Guarda datos esenciales mientras libera memoria, lo que reduce significativamente los costos de memoria inactiva. Cuando llega una solicitud, el contenedor puede despertarse rápidamente y responder sin la pausa prolongada que típicamente acompaña a los métodos de inicio tradicionales.

QCall para llamadas al sistema eficientes

QCall mejora la forma en que se manejan las llamadas al sistema. Al optimizar el proceso y reducir el número de cambios de contexto entre diferentes partes del sistema, Quark hace que la ejecución de estas llamadas sea más rápida. Esto es crucial para aplicaciones que requieren interacciones frecuentes con el sistema para funcionar sin problemas.

Evaluación de rendimiento

El rendimiento de Quark se ha evaluado utilizando aplicaciones reales para demostrar su efectividad en la mejora de velocidad y eficiencia.

Pruebas con Redis

Redis es un popular almacén de datos en memoria utilizado por muchas aplicaciones. Al ser probado, Quark redujo los tiempos de respuesta en más del 79% en comparación con otros entornos de ejecución. Esta mejora significativa resalta los beneficios de TSoR en interacciones de red y QCall en la eficiencia de llamadas al sistema.

Rendimiento de Node.js

Quark demostró tiempos de respuesta más rápidos al ser utilizado con servidores Node.js. La mejora en el rendimiento fue especialmente notable al transferir documentos más grandes. Por ejemplo, al mover un archivo grande, Quark logró mejores resultados que los entornos de ejecución competidores.

Rendimiento de Etcd

Etcd es un almacén de clave-valor consistente y altamente disponible. Las pruebas mostraron que al usar Quark, el rendimiento para varias operaciones fue mayor que el alcanzado con otros entornos de ejecución. Esto significa que Quark puede manejar más solicitudes en menos tiempo, lo cual es beneficioso para aplicaciones que dependen de una recuperación rápida de datos.

Pruebas de rendimiento de red

El rendimiento de Quark también se extiende a las capacidades de red. Las pruebas mostraron que el rendimiento para las conexiones realizadas con Quark fue mejor que tanto los entornos tradicionales como los otros entornos seguros. El mecanismo TSoR basado en RDMA ofreció mayor velocidad y redujo los retrasos, lo cual es crítico en entornos donde muchas aplicaciones necesitan comunicarse entre sí eficientemente.

Configuración de conexión TCP

Quark también se desempeñó excepcionalmente bien en establecer conexiones TCP. Mientras que los sistemas tradicionales pueden tardar más en establecer conexiones debido a capas adicionales de comunicación, el uso de conexiones preestablecidas y tecnología RDMA por parte de Quark le permitió configurar conexiones significativamente más rápido.

Rendimiento de inicio de contenedor

Al medir cuán rápido inician los contenedores en diferentes modos, Quark demostró ser eficiente. El modo de hibernación permitió a los contenedores responder a las solicitudes en una fracción del tiempo en comparación con los métodos tradicionales de inicio en frío. Esta capacidad de respuesta es esencial en un mundo donde los usuarios esperan reacciones casi instantáneas de las aplicaciones.

Uso de memoria inactiva

En términos de gestión de memoria, Quark sobresale al ahorrar memoria cuando los contenedores no están procesando activamente solicitudes. Al desinflar la memoria cuando no está en uso, Quark puede mantener una huella más pequeña en comparación con otras soluciones que mantienen los contenedores constantemente activos.

Comparación de sobrecarga de memoria

En experimentos comparando la sobrecarga de memoria de Quark contra otros entornos de ejecución, se encontró que Quark usó significativamente menos memoria mientras mantenía fuertes medidas de seguridad. Esto se debe a que tanto QKernel como QVisor han sido diseñados para ser ligeros, reduciendo los recursos generales requeridos para operar.

Conclusión

Quark representa un avance significativo en el ámbito de los entornos de ejecución de contenedores seguros. Al centrarse en principios ligeros y co-diseñar sus dos componentes principales-QKernel y QVisor-Quark logra un alto rendimiento sin sacrificar la seguridad. Las innovaciones en redes, velocidad de inicio y ejecución de llamadas al sistema lo hacen una opción atractiva para los desarrolladores que buscan ejecutar aplicaciones en contenedores de manera eficiente en entornos de computación modernos.

Con su base de código abierto, Quark tiene el potencial de liderar el camino para futuros desarrollos en la computación en la nube, ofreciendo una solución que satisface las crecientes demandas de velocidad y seguridad en el despliegue de aplicaciones. La evolución continua de la tecnología requiere soluciones que no solo protejan, sino que también mejoren la experiencia del usuario, y Quark aspira a hacer precisamente eso.

Fuente original

Título: Quark: A High-Performance Secure Container Runtime for Serverless Computing

Resumen: 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 actualización: 2023-10-06 00:00:00

Idioma: English

Fuente URL: https://arxiv.org/abs/2309.12624

Fuente PDF: https://arxiv.org/pdf/2309.12624

Licencia: https://creativecommons.org/licenses/by/4.0/

Cambios: Este resumen se ha elaborado con la ayuda de AI y puede contener imprecisiones. Para obtener información precisa, consulte los documentos originales enlazados aquí.

Gracias a arxiv por el uso de su interoperabilidad de acceso abierto.

Más de autores

Artículos similares