Skip to content

Commit 96f1430

Browse files
authored
Merge pull request #30 from metaspace/block-update-september
Block update september
2 parents 973a77d + ebb18c5 commit 96f1430

12 files changed

+18320
-9
lines changed

src/NVMe-driver.md

Lines changed: 79 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ implementation language for high performance device drivers.
77

88

99
The Linux Rust NVMe driver lives
10-
[here](https://github.com/metaspace/linux/tree/rnvme). This branch is routinely
11-
rebased on upstream Linux releases. Please be aware that the `nvme` branch is
12-
force pushed without notice. The version based on the deprecated `rust` branch
13-
is available [here](https://github.com/metaspace/linux/tree/nvme-rust).
10+
[here](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnvme).
11+
This branch is routinely rebased on upstream Linux releases. Please be aware
12+
that the `nvme` branch is force pushed without notice. The version based on the
13+
deprecated `rust` branch is available
14+
[here](https://github.com/metaspace/linux/tree/nvme-rust).
1415

1516
The Rust NVMe driver was originally
1617
authored by Wedson Almeida Filho and is now maintained by Andreas Hindborg
@@ -23,6 +24,76 @@ The driver is not currently suitable for general use.
2324
[slides](https://lpc.events/event/16/contributions/1180/attachments/1017/1961/deck.pdf)
2425
and [video](https://lpc.events/event/16/contributions/1180/attachments/1017/2249/go)
2526

27+
## 6.11-rc2 Rebase Performance ([`rnvme-v6.11-rc2`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnvme-v6.11-rc2))
28+
29+
### Setup
30+
31+
- AMD Ryzen 5 7600
32+
- 32 GB 4800 MT/s DDR5 on one channel
33+
- 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
34+
- NixOS 24.05
35+
36+
### Results
37+
38+
- 40 samples
39+
- Difference of means modeled with t-distribution
40+
- P95 confidence intervals
41+
42+
![](rnvme/nvme-v6.11-rc2-absolute.svg)
43+
44+
![](rnvme/nvme-v6.11-rc2-relative.svg)
45+
46+
The graph shows
47+
<math>
48+
<mfrac>
49+
<mrow>
50+
<mi>R</mi>
51+
<mo>-</mo>
52+
<mi>C</mi>
53+
</mrow>
54+
<mrow>
55+
<mi>C</mi>
56+
</mrow>
57+
</mfrac>
58+
</math>
59+
where C is IO/s for the C driver and R is IO/s for the Rust driver. Thus, negative
60+
means the C driver is faster while positive means the Rust driver is faster.
61+
62+
## 6.10 Rebase Performance ([`rnvme-v6.10`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnvme-v6.10))
63+
64+
### Setup
65+
66+
- AMD Ryzen 5 7600
67+
- 32 GB 4800 MT/s DDR5 on one channel
68+
- 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
69+
- NixOS 24.05
70+
71+
### Results
72+
73+
- 40 samples
74+
- Difference of means modeled with t-distribution
75+
- P95 confidence intervals
76+
77+
![](rnvme/nvme-v6.10-absolute.svg)
78+
79+
![](rnvme/nvme-v6.10-relative.svg)
80+
81+
The graph shows
82+
<math>
83+
<mfrac>
84+
<mrow>
85+
<mi>R</mi>
86+
<mo>-</mo>
87+
<mi>C</mi>
88+
</mrow>
89+
<mrow>
90+
<mi>C</mi>
91+
</mrow>
92+
</mfrac>
93+
</math>
94+
where C is IO/s for the C driver and R is IO/s for the Rust driver. Thus, negative
95+
means the C driver is faster while positive means the Rust driver is faster.
96+
2697
## 6.10-rc5 Rebase Performance ([`rnvme-v6.10-rc5`](https://github.com/metaspace/linux/tree/rnvme-v6.10-rc5))
2798

2899
### Setup
@@ -197,8 +268,8 @@ PR for 6.6 in September 2023.
197268

198269
### Results
199270

200-
![iops-512](./nvme-512.svg)
201-
![iops-all](./nvme-all.svg)
271+
![iops-512](./rnvme/nvme-512-sep23.svg)
272+
![iops-all](./rnvme/nvme-all-sep23.svg)
202273

203274
## Performance January 2023
204275

@@ -214,8 +285,8 @@ Performance evaluation as of January 2023.
214285

215286
### Results
216287

217-
![iops](./iops.svg)
218-
![relative](./relative.svg)
288+
![iops](./rnvme/iops-jan23.svg)
289+
![relative](./rnvme/relative-jan23.svg)
219290

220291
### Analysis
221292

src/Null-Block-Driver.md

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,59 @@ in this work:
6262

6363
## Resources
6464

65-
- [Latest patches](https://github.com/metaspace/linux/tree/rnull)
65+
- [Latest patches](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull)
6666
- [Original RFC Patches](https://github.com/metaspace/linux/tree/null_block-RFC)
6767
- [Mailing List Post](https://lore.kernel.org/all/[email protected]/)
68+
- [Subset merged in v6.11-rc1](https://lore.kernel.org/all/[email protected]/)
69+
70+
## 6.11-rc2 Rebase ([`rnull-v6.11-rc2`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull-v6.11-rc2))
71+
72+
Changes from `rnull-v6.10`:
73+
74+
- Base abstractions merged upstream 🥳
75+
- Use atomic queue limits C API for setting queue limits.
76+
77+
### Performance
78+
79+
#### Setup
80+
81+
- AMD Ryzen 5 7600
82+
- 32 GB 4800 MT/s DDR5 on one channel
83+
- 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
84+
- NixOS 24.05
85+
86+
#### Results
87+
88+
- Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`
89+
- 40 samples for each configuration
90+
- Difference of means modeled with t-distribution
91+
- P95 confidence intervals
92+
93+
![](rnull/rnull-v6.11-rc2.svg)
94+
95+
## 6.10 Rebase ([`rnull-v6.10`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull-v6.10))
96+
97+
Changes from `rnull-v6.10-rc3`:
98+
99+
- None
100+
101+
### Performance
102+
103+
#### Setup
104+
105+
- AMD Ryzen 5 7600
106+
- 32 GB 4800 MT/s DDR5 on one channel
107+
- 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
108+
- NixOS 24.05
109+
110+
#### Results
111+
112+
- Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`
113+
- 40 samples for each configuration
114+
- Difference of means modeled with t-distribution
115+
- P95 confidence intervals
116+
117+
![](rnull/rnull-v6.10.svg)
68118

69119
## 6.10-rc3 Rebase ([`rnull-v6.10-rc3`](https://github.com/metaspace/linux/tree/rnull-v6.10-rc3))
70120

0 commit comments

Comments
 (0)