Skip to content

Commit 55d0d64

Browse files
author
Andreas Hindborg
committed
rnvme: add benchmark results for v6.12, v6.13, v6.14-rc5
1 parent 6f683d4 commit 55d0d64

File tree

4 files changed

+14696
-6
lines changed

4 files changed

+14696
-6
lines changed

src/Null-Block-Driver.md

Lines changed: 96 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ candidate for rewriting in Rust.
2828
The driver is implemented entirely in safe Rust, with all unsafe code fully
2929
contained in the abstractions that wrap the C APIs.
3030

31+
Please note that the performance measurements on this page might be misleading
32+
due to the results not being normally distributed. [This
33+
analysis](https://metaspace.github.io/2024/12/02/problems-in-benchmark-land.html)
34+
has more details. We observe that issue is resovled for v6.14-rc5, but we are
35+
monitoring the situation going forward.
36+
3137
## Features
3238

3339
Implemented features:
@@ -38,17 +44,17 @@ Implemented features:
3844
- Timer completion
3945
- Read and write requests
4046
- Optional memory backing
41-
42-
Features available in the C `null_blk` driver that are currently not implemented
43-
in this work:
44-
4547
- Bio-based submission
4648
- NUMA support
4749
- Block size configuration
4850
- Multiple devices
4951
- Dynamic device creation/destruction
50-
- Queue depth configuration
5152
- Queue count configuration
53+
54+
Features available in the C `null_blk` driver that are currently not implemented
55+
in this work:
56+
57+
- Queue depth configuration
5258
- Discard operation support
5359
- Cache emulation
5460
- Bandwidth throttling
@@ -67,9 +73,93 @@ in this work:
6773
- [Mailing List Post](https://lore.kernel.org/all/20230503090708.2524310-1-nmi@metaspace.dk/)
6874
- [Subset merged in v6.11-rc1](https://lore.kernel.org/all/20240611114551.228679-1-nmi@metaspace.dk/)
6975

76+
## 6.14-rc5 Rebase ([`rnull-v6.14-rc5`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull-v6.14-rc5))
77+
78+
Changes from `rnull-v6.13`:
79+
80+
- Change reference counting scheme for `Request`.
81+
- Move `rnull` driver to separate directory.
82+
- Rename `RawWriter` to `BufferWriter` and move it.
83+
- Enable configuration of `rnull` via `configfs`.
84+
- Enable dynamic createion/destruction of devices via `configfs`.
85+
- Use `Owned` for rust managed `Page` objects.
86+
- Change segment iterator to prevent concurrent mutable access to pages.
87+
- Use `GFP_NOIO` flag for backing rnull pages.
88+
- Add `user_per_node_hctx` rnull config option.
89+
- Add NUMA home node rnull config option.
90+
- Add submit queue count rnull config option.
91+
- Fix a bug where unwritten bytes were not zeroed on read.
92+
- Properly handle IO requests that are not equal in size to one block.
93+
94+
### Performance
95+
96+
#### Setup
97+
98+
- AMD Ryzen 5 7600
99+
- 32 GB 4800 MT/s DDR5 on one channel
100+
- 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
101+
- NixOS 24.11
102+
103+
#### Results
104+
105+
- Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`
106+
- 40 samples for each configuration
107+
- Difference of means modeled with t-distribution
108+
- P95 confidence intervals
109+
110+
![](rnull/rnull-v6.14-rc5.svg)
111+
112+
## 6.13 Rebase ([`rnull-v6.13`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull-v6.13))
113+
114+
Changes from `rnull-v6.12`:
115+
116+
- None
117+
118+
### Performance
119+
120+
#### Setup
121+
122+
- AMD Ryzen 5 7600
123+
- 32 GB 4800 MT/s DDR5 on one channel
124+
- 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
125+
- NixOS 24.05
126+
127+
#### Results
128+
129+
- Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`
130+
- 40 samples for each configuration
131+
- Difference of means modeled with t-distribution
132+
- P95 confidence intervals
133+
134+
![](rnull/rnull-v6.13.svg)
135+
136+
## 6.12 Rebase ([`rnull-v6.12`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull-v6.12))
137+
138+
Changes from `rnull-v6.12-rc2`:
139+
140+
- None
141+
142+
### Performance
143+
144+
#### Setup
145+
146+
- AMD Ryzen 5 7600
147+
- 32 GB 4800 MT/s DDR5 on one channel
148+
- 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
149+
- NixOS 24.05
150+
151+
#### Results
152+
153+
- Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`
154+
- 40 samples for each configuration
155+
- Difference of means modeled with t-distribution
156+
- P95 confidence intervals
157+
158+
![](rnull/rnull-v6.12.svg)
159+
70160
## 6.12-rc2 Rebase ([`rnull-v6.12-rc2`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull-v6.12-rc2))
71161

72-
Changes from `rnull-v6.10`:
162+
Changes from `rnull-v6.11`:
73163

74164
- Make `QueueData` references pinned.
75165

0 commit comments

Comments
 (0)