WD o loʻo atiaʻe se avetaʻavale NVMe i Rust. Fa'ata'ita'i ile Rust ile FreeBSD

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

WD o loʻo atiaʻe se avetaʻavale NVMe i Rust. Fa'ata'ita'i ile Rust ile FreeBSD
WD o loʻo atiaʻe se avetaʻavale NVMe i Rust. Fa'ata'ita'i ile Rust ile FreeBSD

В докладе говорится, что текущий 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 позволит снизить риск появления уязвимостей, вызванных небезопасной работой с памятью, и исключить появление таких ошибок, как обращение к области памяти после её освобождения и выход за границы буфера.

O le fa'aogaina o le manatua-saogalemu o lo'o tu'uina atu i le Rust i le taimi fa'aopoopo e ala i le siakiina o fa'asinomaga, le siakiina o le mea e umia ma le mea faitino i le olaga atoa (lautele), fa'apea fo'i ma le iloiloga o le sa'o o le manatua avanoa i le taimi o le fa'atinoina o tulafono. E maua ai foi e le ele le puipuiga mai le tele o numera, e manaʻomia ai le faʻatagaina o le faʻatulagaina o tau fesuiaʻi aʻo leʻi faʻaaogaina, e sili atu ona lelei le faʻaogaina o mea sese i totonu o le faletusi masani, faʻaaogaina le manatu o faʻamatalaga e le mafai ona suia ma fesuiaiga e ala i le le mafai, ofoina atu le malosi o le taina e faʻaitiitia ai mea sese.

puna: opennet.ru

Faaopoopo i ai se faamatalaga