Simple Science

Hochmoderne Wissenschaft einfach erklärt

# Computerwissenschaften# Netzwerke und Internet-Architektur

Quark: Hochleistungsfähige sichere Container-Laufzeit

Quark verbessert die Container-Performance und hält dabei hohe Sicherheitsstandards.

― 7 min Lesedauer


Quark: Schnelle, sichereQuark: Schnelle, sichereContainerohne die Sicherheit zu opfern.Die Leistung von Containern steigern,
Inhaltsverzeichnis

Quark ist ein neues Tool, das dafür entwickelt wurde, Anwendung Container auf eine Weise zu betreiben, die sie sicher und schnell hält. In der Computerwelt nutzen wir Container oft, um Anwendungen in kleinere Teile zu zerlegen, die zusammenarbeiten können. Diese Methode, die oft Containerisierung genannt wird, ist besonders beliebt geworden, vor allem mit dem Aufstieg von Microservices und serverlosem Computing.

Traditionelle Methoden zur Ausführung dieser Container können jedoch eine langsamere Leistung mit sich bringen, aufgrund der Schichten von Technologien, die verwendet werden, um sie sicher zu halten. Quark will das ändern, indem es einen Weg bietet, diese Container effizienter auszuführen und gleichzeitig ihre Sicherheit zu wahren.

Was ist eine sichere Container-Laufzeit?

Eine sichere Container-Laufzeit ist Software, die hilft, Container in einer sicheren Umgebung zu erstellen und zu verwalten. Diese Laufzeiten fügen eine Schutzschicht hinzu, indem sie Container innerhalb von leichten virtuellen Maschinen (VMs) ausführen. Diese zusätzliche Schutzschicht hilft, potenzielle Risiken abzuwehren, wie Angriffe, die unbefugten Zugriff auf das Hauptbetriebssystem ermöglichen könnten. Beispiele für bestehende sichere Container-Laufzeiten sind Google gVisor und AWS Firecracker.

Obwohl diese geschützten Umgebungen notwendigen Schutz bieten, können sie Verzögerungen bei der Startzeit der Container und der Kommunikation zwischen ihnen verursachen. Quark geht diese Probleme an, indem es einen neuen Ansatz verfolgt.

Der Bedarf an hoher Leistung

Da Anwendungen komplexer werden, wird die Geschwindigkeit, mit der sie laufen, immer wichtiger. Wenn ein Benutzer eine Anfrage an einen Server sendet, ist es entscheidend, dass der Server schnell reagiert. Ist die Antwort zu langsam, kann das Nutzererlebnis leiden. Das gilt besonders für Anwendungen, die auf schnelle Netzwerkverbindungen und zügige Startzeiten angewiesen sind.

Das Hauptziel von Quark ist es, die Leistung in drei Schlüsselbereichen zu verbessern: Netzwerk, Startgeschwindigkeit und Systemaufrufe.

Netzwerkbedürfnisse

Für Anwendungen, die Microservices nutzen, ist die Kommunikation über Netzwerke entscheidend. Wenn viele kleine Dienste zusammenarbeiten, müssen sie Daten schnell senden und empfangen. Traditionelle sichere Laufzeiten können dabei Probleme haben, weil sie oft auf komplexe Netzwerkstacks angewiesen sind. Quark führt eine neue Netzwerk-Methode namens TCP Socket über RDMA (TSoR) ein, die darauf abzielt, diesen Prozess zu beschleunigen, indem Anwendungen schneller und effizienter Daten senden können.

Schneller Start

Ein weiterer Bereich, in dem Quark glänzt, ist die Startgeschwindigkeit. Wenn ein Container zum ersten Mal gestartet wird, kann es Zeit brauchen, um alles einzurichten. Diese Verzögerung wird als Cold-Start-Latenz bezeichnet. Quark führt eine Funktion namens Hibernation Mode ein, die diese Startzeit erheblich reduziert, indem wichtige Teile der Anwendung bereitgehalten werden, selbst wenn sie nicht aktiv genutzt werden.

Effiziente Systemaufrufe

Viele Anwendungen benötigen Systemaufrufe, um Aufgaben auszuführen, wie das Lesen von Daten von der Festplatte oder das Senden von Nachrichten über das Netzwerk. Traditionelle Methoden zur Handhabung dieser Aufrufe können Verzögerungen einführen, da sie das Wechseln zwischen verschiedenen Softwareschichten erfordern. Quark nutzt ein neues System namens QCall, das die Zeit zur Bearbeitung dieser Operationen reduziert.

Wie Quark funktioniert

Quark hat zwei Hauptkomponenten: einen benutzerdefinierten Gast-Kernel namens QKernel und einen Virtuellen Maschinen-Manager (VMM) namens QVisor. Zusammen schaffen sie eine sichere und effiziente Umgebung für die Ausführung von Containern.

QKernel

QKernel fungiert wie ein Betriebssystem-Kernel für Container. Er bietet alle notwendigen Funktionen, wie das Verwalten von Speicher und Prozessen, ähnlich wie es ein Standard-Betriebssystem-Kernel wie Linux tut. Allerdings ist QKernel speziell dafür ausgelegt, innerhalb der leichten Struktur von Quark zu arbeiten, was ihn schneller und effizienter macht.

QVisor

QVisor kümmert sich um das Management der virtuellen Maschinen, die die Container ausführen. Er hilft, Ressourcen zuzuweisen und voneinander zu isolieren, was für die Sicherheit entscheidend ist. Im Gegensatz zu traditionellen VMMs, die schwer und mit unnötigen Funktionen überladen sein können, ist QVisor leichtgewichtig und speziell für die Zusammenarbeit mit QKernel entwickelt, was gezielte Leistungsverbesserungen ermöglicht.

Wichtige Verbesserungen in Quark

Quark bringt mehrere wichtige Verbesserungen gegenüber traditionellen Container-Laufzeiten.

Netzwerk mit TSoR

Der TSoR-Mechanismus ermöglicht es, dass Daten schneller und effizienter über das Netzwerk fliessen als bei traditionellen Methoden. Das wird durch die Verwendung einer speziellen Technologie namens RDMA erreicht, die die Zeit minimiert, die für die Datenübertragung benötigt wird. Da TSoR bestehende Programmierschnittstellen nutzt, erfordert es keine Änderungen an der Art und Weise, wie Anwendungen Daten senden und empfangen, was die Einführung erleichtert.

Hibernate-Modus

Der Hibernate-Modus ist eine wichtige Innovation in Quark, die es Containern ermöglicht, sich in einem schwebenden Zustand zu befinden, wenn sie nicht verwendet werden. Er speichert wichtige Daten und gibt Speicher frei, was die Kosten für inaktive Speicher erheblich reduziert. Wenn eine Anfrage eingeht, kann der Container schnell aufwachen und reagieren, ohne die langen Pausen, die normalerweise mit traditionellen Startmethoden verbunden sind.

QCall für effiziente Syscalls

QCall verbessert die Handhabung von Systemaufrufen. Durch die Optimierung des Prozesses und die Reduzierung der Anzahl der Kontextwechsel zwischen verschiedenen Teilen des Systems macht Quark die Ausführung dieser Aufrufe schneller. Das ist entscheidend für Anwendungen, die häufige Interaktionen mit dem System benötigen, um reibungslos zu funktionieren.

Leistungsbewertung

Die Leistung von Quark wurde mithilfe realer Anwendungen evaluiert, um seine Effektivität bei der Verbesserung von Geschwindigkeit und Effizienz zu demonstrieren.

Tests mit Redis

Redis ist ein beliebter In-Memory-Datenspeicher, der von vielen Anwendungen genutzt wird. Bei Tests konnte Quark die Antwortzeiten um über 79% im Vergleich zu anderen Laufzeiten reduzieren. Diese bedeutende Verbesserung hebt die Vorteile von TSoR bei Netzwerkinteraktionen und QCall bei der Effizienz von Systemaufrufen hervor.

Node.js-Leistung

Quark zeigte schnellere Antwortzeiten in Verbindung mit Node.js-Servern. Die verbesserte Leistung war besonders auffällig beim Übertragen grösserer Dokumente. Zum Beispiel erzielte Quark beim Verschieben einer grossen Datei bessere Ergebnisse als konkurrierende Laufzeiten.

Etcd-Leistung

Etcd ist ein konsistenter und hochverfügbarer Key-Value-Speicher. Die Tests zeigten, dass die Durchsatzrate für verschiedene Operationen bei der Nutzung von Quark höher war als bei anderen Laufzeiten. Das bedeutet, dass Quark mehr Anfragen in kürzerer Zeit verarbeiten kann, was für Anwendungen, die auf schnelle Datenabfragen angewiesen sind, von Vorteil ist.

Netzwerkleistungsprüfung

Die Leistung von Quark erstreckt sich auch auf die Netzwerkfähigkeiten. Tests zeigten, dass der Durchsatz für Verbindungen, die mit Quark hergestellt wurden, besser war als bei traditionellen und anderen sicheren Laufzeiten. Der RDMA-basierte TSoR-Mechanismus bot erhöhte Geschwindigkeit und reduzierte Verzögerungen, was entscheidend für Umgebungen ist, in denen viele Anwendungen effizient kommunizieren müssen.

TCP-Verbindungsaufbau

Quark schnitt auch beim Aufbauen von TCP-Verbindungen hervorragend ab. Während traditionelle Systeme länger benötigen, um Verbindungen aufgrund zusätzlicher Kommunikationsschichten aufzubauen, ermöglichte Quarks Nutzung von vorab etablierten Verbindungen und RDMA-Technologie, dass es Verbindungen deutlich schneller aufbauen konnte.

Containerstart-Leistung

Bei der Messung, wie schnell Container in verschiedenen Modi starten, erwies sich Quark als effizient. Der Hibernate-Modus ermöglichte es Containern, auf Anfragen in einem Bruchteil der Zeit zu antworten, verglichen mit traditionellen Cold-Start-Methoden. Diese Reaktionsfähigkeit ist entscheidend in einer Welt, in der Nutzer sofortige Reaktionen von Anwendungen erwarten.

Inaktive Speichernutzung

In Bezug auf das Speichermanagement glänzt Quark, indem es Speicher spart, wenn Container nicht aktiv Anfragen verarbeiten. Durch das Deflating von Speicher, wenn er nicht genutzt wird, kann Quark einen kleineren Fussabdruck im Vergleich zu anderen Lösungen aufrechterhalten, die Container ständig aktiv halten.

Vergleich des Speicheraufwands

In Experimenten, die den Speicheraufwand von Quark mit anderen Laufzeiten verglichen, wurde festgestellt, dass Quark erheblich weniger Speicher verwendete, während es starke Sicherheitsmassnahmen aufrechterhielt. Das liegt daran, dass sowohl QKernel als auch QVisor so konzipiert sind, dass sie leichtgewichtig sind, wodurch die insgesamt benötigten Ressourcen für den Betrieb reduziert werden.

Fazit

Quark stellt einen bedeutenden Fortschritt im Bereich der sicheren Container-Laufzeiten dar. Durch den Fokus auf leichte Prinzipien und das gemeinsame Design seiner beiden Hauptkomponenten – QKernel und QVisor – erreicht Quark hohe Leistung, ohne die Sicherheit zu opfern. Die Innovationen in den Bereichen Netzwerk, Startgeschwindigkeit und Ausführung von Systemaufrufen machen es zu einer überzeugenden Wahl für Entwickler, die containerisierte Anwendungen effizient in modernen Computing-Umgebungen ausführen wollen.

Mit seiner Open-Source-Basis hat Quark das Potenzial, den Weg für zukünftige Entwicklungen im Cloud-Computing zu ebnen und eine Lösung zu bieten, die den wachsenden Anforderungen an Geschwindigkeit und Sicherheit bei der Anwendungsbereitstellung gerecht wird. Die fortlaufende Entwicklung der Technologie erfordert Lösungen, die nicht nur schützen, sondern auch das Nutzererlebnis verbessern, und Quark zielt genau darauf ab.

Originalquelle

Titel: Quark: A High-Performance Secure Container Runtime for Serverless Computing

Zusammenfassung: 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.

Autoren: Chenxingyu Zhao, Yulin Sun, Ying Xiong, Arvind Krishnamurthy

Letzte Aktualisierung: 2023-10-06 00:00:00

Sprache: English

Quell-URL: https://arxiv.org/abs/2309.12624

Quell-PDF: https://arxiv.org/pdf/2309.12624

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

Änderungen: Diese Zusammenfassung wurde mit Unterstützung von AI erstellt und kann Ungenauigkeiten enthalten. Genaue Informationen entnehmen Sie bitte den hier verlinkten Originaldokumenten.

Vielen Dank an arxiv für die Nutzung seiner Open-Access-Interoperabilität.

Mehr von den Autoren

Ähnliche Artikel