WD Rustта NVMe драйверин иштеп чыгууда. FreeBSDде Rust менен эксперимент

На проходящей в эти дни конференции Linux Plumbers 2022 инженер из компании Western Digital выступил с докладом о разработке экспериментального драйвера для SSD-накопителей с интерфейсом NVM-Express (NVMe), написанного на языке Rust и работающего на уровне ядра Linux. Несмотря на то, что проект пока находится на раннем этапе развития, проведённое тестирование показало, что производительность NVMe-драйвера на языке Rust соответствует имеющемуся в ядре NVMe-драйверу, написанному на языке Си.

WD Rustта NVMe драйверин иштеп чыгууда. FreeBSDде Rust менен эксперимент
WD Rustта NVMe драйверин иштеп чыгууда. FreeBSDде Rust менен эксперимент

В докладе говорится, что текущий NVMe-драйвер на языке Си полностью устраивает разработчиков, но подсистема NVMe является хорошей площадкой для изучения целесообразности разработки драйверов на языке Rust, так как она достаточно простая, широко используется, предъявляет высокие требования к производительности, имеет проверенную эталонную реализацию для сравнения и поддерживает различные интерфейсы (dev, pci, dma, blk-mq, gendisk, sysfs).

Отмечается, что PCI NVMe драйвер на Rust уже предоставляет необходимую для работы функциональность, но пока не готов для широкого использования, так как требует отдельных доработок. Среди планов на будущее называется избавление кода от имеющихся unsafe-блоков, поддержка операций удаления устройства и выгрузки драйвера, поддержка интерфейса sysfs, реализация отложенной инициализации, создание драйвера для blk-mq и эксперименты с использованием асинхронной модели программирования для queue_rq.

Дополнительно можно отметить проводимые компанией NCC Group эксперименты по разработке драйверов на языке Rust для ядра FreeBSD. В качестве примера подробно разбирается простой echo-драйвер, возвращающий данные, записанные в файл /dev/rustmodule. На следующем этапе экспериментов NCC Group рассматривает возможность переработки на языке Rust базовых компонентов ядра для повышения безопасности сетевых и файловых операций.

При этом, несмотря на то, что показана возможность создания простых модулей на языке Rust, более плотная интеграция Rust в ядро FreeBSD потребует проведения дополнительной работы. Например, упоминается необходимость создания набора слоёв абстракции над подсистемами и структурами ядра, похожих на надстройки, подготовленные проектом Rust for Linux. В дальнейшем планируется провести похожие эксперименты с ядром Illumos и выделить общие абстракции на Rust, которые могли бы использоваться в написанных на Rust драйверах для Linux, BSD и Illumos.

По данным компаний Microsoft и Google около 70% уязвимостей в их программных продуктах вызваны небезопасной работой с памятью. Предполагается, что использование языка Rust позволит снизить риск появления уязвимостей, вызванных небезопасной работой с памятью, и исключить появление таких ошибок, как обращение к области памяти после её освобождения и выход за границы буфера.

Эстутумдун коопсуз иштөөсү Rust программасында компиляция убагында маалымдама текшерүү, объектке ээлик кылуу жана объекттин иштөө мөөнөтүн (ааламында) эсепке алуу, ошондой эле кодду аткаруу учурунда эстутумга кирүүнүн тууралыгын баалоо аркылуу камсыз кылынат. Rust ошондой эле бүтүн сандардын ашып кетишинен коргоону камсыздайт, өзгөрмөлөрдү колдонуудан мурун инициализациялоону талап кылат, стандарттык китепканада каталарды жакшыраак иштетет, демейки боюнча өзгөрүлгүс шилтемелер жана өзгөрмөлөр концепциясын колдонот жана логикалык каталарды азайтуу үчүн күчтүү статикалык терүүнү сунуштайт.

Source: opennet.ru

Комментарий кошуу