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.

Categories: IT Info