Initiative zur Überarbeitung des Xen-Hypervisor-Toolkits in Rust

Die Entwickler der XCP-ng-Plattform, die im Rahmen des Xen-Projekts entwickelt wurde, haben einen Plan veröffentlicht, einen Ersatz für verschiedene Komponenten des Xen-Software-Stacks in der Sprache Rust zu schaffen. Eine Überarbeitung des Xen-Hypervisors selbst ist nicht geplant; die Arbeit konzentriert sich hauptsächlich auf die Überarbeitung einzelner Komponenten des Toolkits.

Die Plattform nutzt derzeit C-, Python-, OCaml- und Go-Komponenten, von denen einige veraltet sind und Wartungsprobleme mit sich bringen. Es wird darauf hingewiesen, dass die Verwendung von Rust insgesamt nicht zu einer Erhöhung der Anzahl der beteiligten Sprachen führen wird, da in Go nur eine Komponente implementiert ist, die zunächst ersetzt werden soll.

Rust wurde als Sprache ausgewählt, die leistungsstarken Code mit speichersicheren Funktionen kombiniert, keinen Garbage Collector erfordert, sich für die Entwicklung von Low-Level- und High-Level-Komponenten eignet und zusätzliche Funktionen zur Reduzierung potenzieller Fehler bereitstellt, wie z Checker ausleihen. ). Rust ist zudem weiter verbreitet als die derzeit in XAPI verwendete OCaml-Sprache, was es einfacher machen wird, neue Entwickler für das Projekt zu gewinnen.

In der ersten Phase werden Ersatzkomponenten für mehrere Komponenten entwickelt, um Prozesse zu testen und die Grundlage für den Austausch anderer Teile des Software-Stacks zu schaffen. Insbesondere werden zunächst die Linux-Gasttools, für die derzeit die Go-Sprache verwendet wird, und der in OCaml geschriebene Hintergrundprozess zum Sammeln von Metriken in Rust neu geschrieben.

Die Notwendigkeit, Linux-Gasttools (xe-guest-utilities) zu überarbeiten, wird durch Probleme mit der Codequalität und der Entwicklung außerhalb des Xen-Projekts unter der Kontrolle der Cloud Software Group verursacht, was das Paketieren von Paketen und den Einfluss der Community auf die Entwicklung erschwert. Sie planen, eine neue Version des Toolkits (xen-guest-agent) komplett von Grund auf zu erstellen, es so einfach wie möglich zu machen und die Agentenlogik von den Bibliotheken zu trennen. Es wurde beschlossen, den Hintergrundprozess zum Sammeln von Metriken (rrdd) zu überarbeiten, da er kompakt und separat ist, was Experimente zur Verwendung einer neuen Sprache während der Entwicklung vereinfacht.

Nächstes Jahr könnte mit der Entwicklung der xenopsd-ng-Komponente in Rust begonnen werden, die die Architektur des Software-Stacks optimieren wird. Die Hauptidee besteht darin, die Arbeit mit Low-Level-APIs in einer Komponente zu konzentrieren und über diese die Bereitstellung aller High-Level-APIs für andere Komponenten des Stacks zu organisieren.

Aktuelle Xen-Stack-Architektur:

Initiative zur Überarbeitung des Xen-Hypervisor-Toolkits in Rust

Vorgeschlagene Xen-Stack-Architektur basierend auf xenopsd-ng:

Initiative zur Überarbeitung des Xen-Hypervisor-Toolkits in Rust


Source: opennet.ru

Kommentar hinzufügen