@@ -6,8 +6,12 @@ for development of safe Rust abstractions and to prove feasibility of Rust as an
6
6
implementation language for high performance device drivers.
7
7
8
8
The 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
11
15
authored by Wedson Almeida Filho and is now maintained by Andreas Hindborg
12
16
(Samsung).
13
17
@@ -18,9 +22,29 @@ The driver is not currently suitable for general use.
18
22
[ slides] ( https://lpc.events/event/16/contributions/1180/attachments/1017/1961/deck.pdf )
19
23
and [ video] ( https://lpc.events/event/16/contributions/1180/attachments/1017/2249/go )
20
24
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
22
46
23
- Performance evaluation as of January 2023.
47
+ Performance evaluation as of January 2023.
24
48
25
49
## Setup
26
50
@@ -44,12 +68,12 @@ For 512 B block size, the C driver outperforms the Rust driver by up to 6%. In
44
68
this configuration the drive is not bandwidth limited, but the benchmark becomes
45
69
compute limited. The Rust driver has a higher overhead and thus performs worse.
46
70
47
- # Planned Work Items
71
+ # Work Items
48
72
49
73
- Remove all unsafe code from the driver
50
74
- Support device removal
51
75
- 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
53
77
- Support more kernel configurations by deferring initialization to a task queue
54
78
- Improve performance of Rust NVMe driver
55
79
0 commit comments