Ініціатива щодо переробки інструментарію для гіпервізора Xen мовою Rust

Розробники платформи XCP-ng, що розвивається під крилом проекту Xen, опублікували план створення на мові Rust заміни різних компонентів програмного стека Xen. Безпосередньо гіпервізор Xen поки що переробляти не збираються, робота зосереджена в основному на переробці окремих компонентів інструментарію.

В даний час у платформі використовуються компоненти мовами C, Python, OCaml та Go, деякі з яких застаріли та створюють проблеми із супроводом. Зазначається, що застосування Rust не призведе до загального збільшення кількості задіяних мов, оскільки на Go реалізовано лише один компонент, який планується замінити насамперед.

Мова Rust обрана як поєднує високу продуктивність результуючого коду з можливостями для безпечної роботи з пам'яттю, що обходиться без застосування збирача сміття, придатний для розробки як низькорівневих, так і високорівневих компонентів, що надає додаткові можливості для скорочення потенційних помилок (перевірка запозичення змін ). Rust також більш поширений, ніж мова OCaml, що нині використовується в XAPI, що спростить залучення в проект нових розробників.

На першому етапі планується розробити заміну для кількох компонентів, щоб відпрацювати процеси та підготувати базу для заміни інших частин програмного стека. Зокрема, насамперед на Rust буде переписано інструментарій Linux guest tools, для якого зараз використовується мова Go, і фоновий процес для збору метрик, написаний на OCaml.

Необхідність переробки Linux guest tools (xe-guest-utilities) викликана проблемами з якістю коду та розвитком поза проектом Xen Project під контролем Cloud Software Group, що ускладнює формування пакетів та вплив спільноти на розробку. Новий варіант інструментарію (xen-guest-agent) планують створити повністю з нуля, зробивши простим наскільки це можливо, та відокремивши логіку агента від бібліотек. Фоновий процес для збору метрик (rrdd) вирішено переробити, оскільки він є компактним та відокремленим, що спрощує проведення експериментів щодо використання нової мови при розробці.

Наступного року, можливо, почнеться робота з розробки на Rust компоненту xenopsd-ng, який дозволить оптимізувати архітектуру програмного стека. Основна ідея в тому, щоб зосередити в одному компоненті роботу з низькорівневим API і організувати надання через нього всіх високорівневих API іншим компонентам стека.

Поточна архітектура стека Xen:

Ініціатива щодо переробки інструментарію для гіпервізора Xen мовою Rust

Пропонована архітектура стека Xen на базі xenopsd-ng:

Ініціатива щодо переробки інструментарію для гіпервізора Xen мовою Rust


Джерело: opennet.ru

Додати коментар або відгук