Bienvenido a Quark Container.
Este repositorio es el hogar del código de Quark Containers.
Quark Container es un tiempo de ejecución de contenedor seguro de alto rendimiento con las siguientes características:
Los segmentos de rendimiento son performance.pdf. Los pasos detallados de la prueba y el resultado están aquí
Quark Container adopta la arquitectura clásica de máquina virtual Linux como se muestra a continuación. Incluye un HyperVisor llamado QVisor y un kernel invitado llamado QKernel. A diferencia del diseño común de máquina virtual Linux, en el que la imagen del sistema operativo estándar, como Linux/Windows, se puede ejecutar en Qemu. QVisor y QKernel están estrechamente acoplados. QVisor solo es compatible con QKernel.
El diseño de alto nivel de Quark Container es el siguiente. Maneja la solicitud de aplicación de contenedor con los siguientes pasos.
Quark Container admite la transferencia del tráfico TCP de la aplicación contenedora con una conexión RDMA, es decir, TSoR. TSoR es un proveedor de red de contenedores en el clúster K8S y la aplicación de contenedor basada en TCP existente puede transferir datos a través de RDMA sin NINGUNA modificación. A medida que TSoR descarga la carga de trabajo de la pila del protocolo TCP/IP a RDMA NIC. Puede lograr un mayor rendimiento y una baja latencia con menos espacio de CPU. El resultado de la prueba TSOR es el resultado de la prueba comparativa de Redis con la comparación entre Quark + TSoR y RunC + franela. TSoR muestra una mejora del rendimiento cinco veces mayor que la franela. La arquitectura TSoR es la siguiente. La introducción está aquí.
Quark admite principalmente X86-64. El soporte de aarch64 es preliminar y se encuentra en desarrollo activo. Otra arquitectura estará disponible en el futuro.
Quark está desarrollado con lenguaje Rust. La compilación necesita instalar Rust todas las noches. Utilice la versión buena y actual conocida nightly-2023-12-11-x86_64-unknown-linux-gnu
(reemplace x86_64
con aarch64
para la compilación aarch64)
rustup toolchain install nightly-2023-12-11-x86_64-unknown-linux-gnu
rustup default nightly-2023-12-11-x86_64-unknown-linux-gnu
Agregue el componente Rust-src a la cadena de herramientas actual:
rustup component add rust-src
E instale "cargo-xbuild" para la compilación cruzada de qkernel
cargo install cargo-xbuild
Instalar la biblioteca libcap
sudo apt-get install libcap-dev
Además, algunas bibliotecas adicionales para compilar el módulo RDMA:
sudo apt-get install build-essential cmake gcc libudev-dev libnl-3-dev
libnl-route-3-dev ninja-build pkg-config valgrind python3-dev cython3
python3-docutils pandoc libclang-dev
Y también algunas bibliotecas adicionales para compilar el módulo GPU:
(Tenga en cuenta que puede ejecutar los siguientes comandos incluso en una máquina que no sea nvidia para poder compilar el módulo GPU).
sudo apt-get install libelf-dev nvidia-driver-535
git clone [email protected]:QuarkContainer/Quark.git
cd Quark
make
make install
make cuda_all
make install
make install
. "quark" contiene código QVisor y también implementa la interfaz OCI.sudo mkdir /var/log/quark
sudo systemctl restart docker
La aplicación de muestra de Hello-World Docker se puede ejecutar de la siguiente manera:
sudo systemctl restart docker
sudo systemctl restart docker.service
docker run --rm --runtime=quark hello-world
El archivo de configuración de Quark Container está en /etc/quark/config.json. El detalle de configuración está por determinar...
El registro de depuración de Quark Container se coloca en /var/log/quark/quark.log. Podría habilitarse o deshabilitarse mediante "DebugLevel" de /etc/quark/config.json. Hay 5 valores posibles de "DebugLevel" como se muestra a continuación.
Off,
Error,
Warn,
Info,
Debug,
Trace,
Cuando el registro está habilitado, por ejemplo, Depurar. Después de ejecutar una imagen de la ventana acoplable con Quark Container, los registros se generarán en /var/log/quark/quark.log. Consulte la wiki para obtener más consejos de depuración.
Consulte este enlace para configurar k8 utilizando el contenedor de quark y la compatibilidad con RDMA.
Quark ahora tiene soporte preliminar para aarch64 (aún en desarrollo activo).
Notas sobre arquitecturas arm64 más nuevas :
Las arquitecturas arm64 más nuevas agregan el bit PAN (Privilege Access Never) en el pstate, lo que evita que el kernel (el1) acceda a la memoria del usuario (el0). El soporte total es WIP. Como solución temporal, simplemente borramos el PAN en el qkernel. Para hacer esto, debe aplicar manualmente este parche.
~quark/[email protected]
. Para suscribirse a la lista, envíe un correo electrónico vacío a ~quark/[email protected]
Para obtener más información sobre el uso de la lista de correo, consulte Etiqueta de la lista de correo.