Per aiutare a facilitare l’esplorazione del linguaggio di programmazione Rust per l’archiviazione di Linux all’interno del kernel, l’ingegnere Samsung Andreas Hindborg ha pubblicato un null block driver scritto in questo linguaggio di programmazione sicuro per la memoria.
Il null block driver di Rust serve per valutare i binding di Rust per il livello di blocco del kernel, esporre Rust a più sviluppatori di storage Linux e servire a scopi simili per aiutare a”scalciare le gomme”attorno a Rust e ai driver di storage Linux.
Andreas Hindborg ha scritto nell’annuncio di questo nuovo driver Rust:
“Essendo piccolo e semplice, il driver null block è un buon posto per presentare la community di storage del kernel Linux a Rust. Questo aiuterà a preparare la comunità per futuri progetti Rust e faciliterà un migliore processo di manutenzione per questi progetti.
Le statistiche presentate nel mio messaggio precedente mostrano che il driver del blocco C null ha avuto una quantità significativa di problemi relativi alla sicurezza della memoria in passato. Il 41% delle correzioni unite per il driver a blocchi null C sono correzioni per problemi di sicurezza della memoria. Questo rende il driver a blocchi null un buon candidato per la riscrittura in Rust.
…
In questa tabella ogni cella mostra le prestazioni relative del driver Rust rispetto al driver C con il throughput del driver C tra parentesi:”rel_read rel_write (read_miops write_miops)”. Es: il driver Rust ha prestazioni migliori del 4,74% rispetto al driver C per fiorandread con 2 lavori con una dimensione del blocco di 16 KiB.Oltre i 432 configurazioni di riferimento, le prestazioni relative del driver Rust rispetto al driver C (in termini di IOPS) sono comprese tra il 6,8 e il-11,8 percento con una media dello 0,2 percento migliore per le letture. Per le scritture l’intervallo va dal 16,8 al-4,5 percento con una media dello 0,9 percento migliore.”
Il driver null block di Rust supporta già la coda multipla BLK-MQ, il completamento diretto di I/O, richieste di lettura/scrittura, supporto di memoria opzionale e altro ancora.Ci sono ancora altre funzionalità per rendere questo driver paragonabile al driver di blocco null basato su C esistente come il supporto NUMA, l’invio basato su bio, la configurazione dello scheduler I/O, supporto per l’archiviazione in zone e altro ancora.
Ulteriori dettagli su questo primo driver a livello di blocco nullo di Rust per aiutare ulteriormente il linguaggio di programmazione Rust per l’archiviazione Linux possono essere trovati tramite questa serie di patch.