Inicjatywa modernizacji narzędzi dla hyperwizora Xen w języku Rust

Deweloperzy platformy XCP-ng, rozwijanej pod egidą projektu Xen, opublikowali plan utworzenia w języku Rust zamienników różnych komponentów stosu oprogramowania Xen. Na razie nie planują przerabiać samego hyperwizora Xen; prace skupiają się głównie na przebudowie poszczególnych komponentów narzędzi.

W chwili obecnej w platformie używane są komponenty w językach C, Python, OCaml i Go, z których niektóre są przestarzałe i stwarzają problemy ze wsparciem. Zauważono, że zastosowanie Rust nie prowadzi do ogólnego zwiększenia liczby używanych języków, ponieważ w Go zrealizowany jest tylko jeden komponent, który planuje się zastąpić w pierwszej kolejności.

Język Rust został wybrany, ponieważ łączy wysoką wydajność wynikowego kodu z możliwościami bezpiecznej obsługi pamięci, nie wymagając jednocześnie zastosowania zbieracza śmieci; nadaje się do tworzenia zarówno komponentów niskopoziomowych, jak i wysokopoziomowych, oferując dodatkowe możliwości w zakresie zmniejszenia potencjalnych błędów, takie jak sprawdzanie pożyczania zmiennych (borrow checker). Rust jest również bardziej rozpowszechniony niż obecnie używany w XAPI język OCaml, co ułatwi przyciąganie nowych programistów do projektu.

W pierwszym etapie przewidziano opracowanie zamiany dla kilku komponentów, aby przetestować procesy i przygotować podstawy do zamiany innych części stosu oprogramowania. Szczególnie w pierwszej kolejności w Rust zostanie przepisany zestaw narzędzi Linux guest tools, dla którego obecnie używany jest język Go, oraz proces w tle do zbierania metryk, napisany w OCaml.

Konieczność przeróbki Linux guest tools (xe-guest-utilities) wynika z problemów z jakością kodu oraz rozwoju poza projektem Xen Project pod kontrolą Cloud Software Group, co utrudnia tworzenie pakietów i wpływ społeczności na rozwój. Nową wersję narzędzi (xen-guest-agent) planuje się stworzyć całkowicie od zera, czyniąc ją tak prostą, jak to możliwe, i oddzielając logikę agenta od bibliotek. Proces w tle do zbierania metrik (rrdd) postanowiono przerobić, ponieważ jest on kompaktowy i odrębny, co ułatwia przeprowadzanie eksperymentów z użyciem nowego języka w rozwoju.

W przyszłym roku możliwe jest rozpoczęcie prac nad rozwinięciem komponentu xenopsd-ng w języku Rust, który pozwoli na optymalizację architektury stosu oprogramowania. Główna idea polega na skoncentrowaniu w jednym komponencie pracy z niskopoziomowym API i zorganizowaniu dostarczania przez niego wszystkich wysoko poziomowych API dla pozostałych komponentów stosu.

Aktualna architektura stosu Xen:

Inicjatywa modernizacji narzędzi dla hyperwizora Xen w języku Rust

Proponowana architektura stosu Xen oparta na xenopsd-ng:

Inicjatywa modernizacji narzędzi dla hyperwizora Xen w języku Rust


Źródło: opennet.ru
Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster