@@ -6,8 +6,12 @@ for development of safe Rust abstractions and to prove feasibility of Rust as an
66implementation language for high performance device drivers.
77
88The Linux Rust NVMe driver lives
9- [ here] ( https://github.com/metaspace/linux/tree/nvme ) . Please be aware that the
10- nvme branch is force pushed without notice. The Rust NVMe driver was originally
9+ [ here] ( https://github.com/metaspace/linux/tree/nvme ) . This branch is routinely
10+ rebased on upstream Linux releases. Please be aware that the ` nvme ` branch is
11+ force pushed without notice. The version based on the deprecated ` rust ` branch
12+ is available [ here] ( https://github.com/metaspace/linux/tree/nvme-rust ) .
13+
14+ The Rust NVMe driver was originally
1115authored by Wedson Almeida Filho and is now maintained by Andreas Hindborg
1216(Samsung).
1317
@@ -18,9 +22,29 @@ The driver is not currently suitable for general use.
1822 [ slides] ( https://lpc.events/event/16/contributions/1180/attachments/1017/1961/deck.pdf )
1923 and [ video] ( https://lpc.events/event/16/contributions/1180/attachments/1017/2249/go )
2024
21- # Performance
25+ # Performance September 2023
26+
27+ The driver was
28+ [ rebased] ( https://github.com/metaspace/linux/tree/7353a81d566510080f91099b1a2b31895c716c9d )
29+ on top of
30+ [ ` rust-next ` ] ( https://github.com/Rust-for-Linux/linux/commit/37152d4a7c6400a4250134e601eca8be1a2bbc16 )
31+ PR for 6.6 in September 2023.
32+
33+ ## Setup
34+
35+ - 12th Gen Intel(R) Core(TM) i5-12600
36+ - 32 GB DRAM
37+ - 1x INTEL MEMPEK1W016GA (PCIe 3.0 x2)
38+ - Debian Bullseye userspace
39+
40+ ## Results
41+
42+ ![ iops-512] ( ./nvme-512.svg )
43+ ![ iops-all] ( ./nvme-all.svg )
44+
45+ # Performance January 2023
2246
23- Performance evaluation as of January 2023.
47+ Performance evaluation as of January 2023.
2448
2549## Setup
2650
@@ -44,12 +68,12 @@ For 512 B block size, the C driver outperforms the Rust driver by up to 6%. In
4468this configuration the drive is not bandwidth limited, but the benchmark becomes
4569compute limited. The Rust driver has a higher overhead and thus performs worse.
4670
47- # Planned Work Items
71+ # Work Items
4872
4973 - Remove all unsafe code from the driver
5074 - Support device removal
5175 - Verify functionality by executing ` blktests ` and ` xfstests ` in CI
52- - Add sys-fs nodes to allow use of nvme-cli with Rust NVMe driver
76+ - Add sys-fs nodes to allow use of ` nvme-cli ` with Rust NVMe driver
5377 - Support more kernel configurations by deferring initialization to a task queue
5478 - Improve performance of Rust NVMe driver
5579
0 commit comments