Skip to content

Commit cc01ae2

Browse files
authored
Merge pull request #5 from metaspace/nvme
nvme: Add benchmark results and link to rebased driver
2 parents b5b7e27 + 9e2047d commit cc01ae2

File tree

3 files changed

+3344
-6
lines changed

3 files changed

+3344
-6
lines changed

src/NVMe-driver.md

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@ for development of safe Rust abstractions and to prove feasibility of Rust as an
66
implementation language for high performance device drivers.
77

88
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
1115
authored 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
4468
this configuration the drive is not bandwidth limited, but the benchmark becomes
4569
compute 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

Comments
 (0)