Um die Erforschung der Programmiersprache Rust für Linux-Speicherzwecke innerhalb des Kernels zu erleichtern, hat Samsung-Ingenieur Andreas Hindborg einen Null-Block-Treiber veröffentlicht, der in dieser speichersicheren Programmiersprache geschrieben ist.
Der Rust-Null-Block-Treiber soll dazu dienen, Rust-Bindungen für die Blockschicht des Kernels zu evaluieren, Rust mehr Linux-Speicherentwicklern zugänglich zu machen und ähnlichen Zwecken zu dienen, um Rust und Linux-Speichertreibern”auf die Sprünge zu helfen”.
Andreas Hindborg schrieb in der Ankündigung dieses neuen Rust-Treibers:
“Da der Null-Block-Treiber klein und einfach ist, ist er ein guter Ort, um die Linux-Kernel-Storage-Community vorzustellen an Rust. Dies wird dazu beitragen, die Community auf zukünftige Rust-Projekte vorzubereiten und einen besseren Wartungsprozess für diese Projekte zu ermöglichen.
Die in meiner vorherigen Nachricht präsentierten Statistiken zeigen, dass der C-Nullblock-Treiber eine erhebliche Menge an Speichersicherheitsproblemen hatte in der Vergangenheit. 41 % der Fixes, die für den C-Nullblocktreiber zusammengeführt wurden, sind Fixes für Speichersicherheitsprobleme. Dies macht den Nullblocktreiber zu einem guten Kandidaten für das Neuschreiben in Rust.
…
In dieser Tabelle jede Zelle zeigt die relative Leistung des Rust-Treibers zum C-Treiber mit dem Durchsatz des C-Treibers in Klammern: `rel_read rel_write (read_miops write_miops)` Beispiel: Der Rust-Treiber leistet 4,74 Prozent mehr als der C-Treiber für fio randread mit 2 Jobs bei 16 KiB Blockgröße.Über die 432 Benchmark-Konfigurationen liegt die relative Leistung des Rust-Treibers gegenüber dem C-Treiber (in Bezug auf IOPS) zwischen 6,8 und-11,8 Prozent, wobei die Lesevorgänge um durchschnittlich 0,2 Prozent besser sind. Für Schreibvorgänge beträgt die Spanne 16,8 bis-4,5 Prozent mit einem Durchschnitt von 0,9 Prozent besser.”
Der Rust-Null-Block-Treiber unterstützt bereits BLK-MQ Multi-Queue, direkte Vervollständigung von I/O, Lese-/Schreibanforderungen, optionale Speicherunterstützung usw. Es gibt jedoch noch andere Funktionen, die diesen Treiber mit dem vorhandenen C-basierten Nullblocktreiber vergleichbar machen, wie NUMA-Unterstützung, biobasierte Übermittlung, I/O-Scheduler-Konfiguration, Zoned Storage-Unterstützung und mehr.
Weitere Details zu diesem frühen Rust-Nullblock-Layer-Treiber zur weiteren Unterstützung der Rust-Programmiersprache für Linux-Speicher finden Sie unter diese Patch-Serie.