WD развива NVMe драјвер во Rust. Експериментирање со Rust на FreeBSD

На конференцијата Linux Plumbers 2022 што се одржува овие денови, инженер од Western Digital одржа презентација за развој на експериментален двигател за SSD-дискови со интерфејс NVM-Express (NVMe), напишан на јазикот Rust и работи на кернелот Linux ниво. И покрај фактот дека проектот е сè уште во рана фаза на развој, тестирањето покажа дека перформансите на двигателот NVMe на јазикот Rust одговараат на двигателот NVMe напишан на јазикот C достапен во кернелот.

WD развива NVMe драјвер во Rust. Експериментирање со Rust на FreeBSD
WD развива NVMe драјвер во Rust. Експериментирање со Rust на FreeBSD

Во извештајот се наведува дека тековниот NVMe драјвер во C е целосно задоволителен за програмерите, но потсистемот NVMe е добра платформа за истражување на изводливоста за развој на драјвери во Rust, бидејќи е прилично едноставен, широко користен, има високи барања за перформанси и има докажана референтна имплементација за споредба и поддржува различни интерфејси (dev, pci, dma, blk-mq, gendisk, sysfs).

Забележано е дека двигателот PCI NVMe за Rust веќе ја обезбедува функционалноста неопходна за работа, но сè уште не е подготвен за широка употреба, бидејќи бара индивидуални подобрувања. Идните планови вклучуваат ослободување од кодот од постоечките небезбедни блокови, поддршка на операциите за отстранување на уредот и растоварување на драјверот, поддршка на интерфејсот sysfs, имплементација на мрзлива иницијализација, создавање драјвер за blk-mq и експериментирање со користење на асинхрон програмски модел за queue_rq.

Дополнително, можеме да ги забележиме експериментите спроведени од NCC Group за развој на двигатели на јазикот Rust за кернелот FreeBSD. Како пример, детално испитуваме едноставен двигател за ехо што враќа податоци запишани во датотеката /dev/rustmodule. Во следната фаза на експериментирање, NCC Group ја разгледува можноста за преработка на основните компоненти на кернелот во јазикот Rust за да се подобри безбедноста на операциите на мрежата и датотеките.

Сепак, иако се покажа дека е можно да се создадат едноставни модули во јазикот Rust, за поцврста интеграција на Rust во кернелот на FreeBSD ќе биде потребна дополнителна работа. На пример, тие ја споменуваат потребата да се создадат збир на слоеви на апстракција преку потсистемите и структурите на јадрото, слични на додатоците подготвени од проектот Rust for Linux. Во иднина, планираме да спроведеме слични експерименти со кернелот Illumos и да идентификуваме вообичаени апстракции во Rust кои би можеле да се користат во драјвери напишани во Rust за Linux, BSD и Illumos.

Според Microsoft и Google, околу 70% од пропустите во нивните софтверски производи се предизвикани од небезбедно ракување со меморијата. Се очекува дека употребата на јазикот Rust ќе го намали ризикот од ранливости предизвикани од небезбедна работа со меморијата и ќе ја елиминира појавата на грешки како што се пристап до мемориската област откако ќе се ослободи и ќе го надмине баферот.

Безбедното ракување со меморијата е обезбедено во Rust во времето на компајлирање преку проверка на референци, следење на сопственоста на објектот и животниот век на објектот (обем), како и преку проценка на исправноста на пристапот до меморијата за време на извршувањето на кодот. Rust исто така обезбедува заштита од прелевање на цели броеви, бара задолжителна иницијализација на вредностите на променливите пред употреба, подобро се справува со грешките во стандардната библиотека, стандардно го применува концептот на непроменливи референци и променливи, нуди силно статичко пишување за да се минимизираат логичките грешки.

Извор: opennet.ru

Додадете коментар