Skip to content

Commit bb3f529

Browse files
authored
Merge pull request #28 from metaspace/rnull-v6.9
rnull: add benchmark results for v6.9 and v6.10-rc3
2 parents 13c3dc0 + b0c9b55 commit bb3f529

File tree

3 files changed

+10132
-0
lines changed

3 files changed

+10132
-0
lines changed

src/Null-Block-Driver.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,68 @@ in this work:
6666
- [Original RFC Patches](https://github.com/metaspace/linux/tree/null_block-RFC)
6767
- [Mailing List Post](https://lore.kernel.org/all/[email protected]/)
6868

69+
## 6.10-rc3 Rebase ([`rnull-v6.10-rc3`](https://github.com/metaspace/linux/tree/rnull-v6.10-rc3))
70+
71+
Changes from `rnull-v6.9`:
72+
73+
- Add `ForeignBorrowed`.
74+
- Move `GenDisk` to a builder pattern instead of typestate pattern.
75+
- Move block size validation from driver to abstractions.
76+
- Pin `NullBlkModuel`.
77+
- Refactor `Request::try_set_end`.
78+
- Rewrite atomic functions in terms of `core` library functions.
79+
- Fix a bug in timer completions where an offset was not calculated correctly.
80+
- Refactor `TagSet` initialization in terms of `core::mem::zeroed()` instead of `Opaque::try_ffi_init`
81+
82+
### Performance
83+
84+
#### Setup
85+
86+
- AMD Ryzen 5 7600
87+
- 32 GB 4800 MT/s DDR5 on one channel
88+
- 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
89+
- NixOS 24.05
90+
91+
#### Results
92+
93+
- Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`
94+
- 40 samples for each configuration
95+
- Difference of means modeled with t-distribution
96+
- P95 confidence intervals
97+
98+
![](rnull/rnull-v6.10-rc3.svg)
99+
100+
## 6.9 Rebase ([`rnull-v6.9`](https://github.com/metaspace/linux/tree/rnull-v6.9))
101+
102+
Changes from `rnull-v6.8`:
103+
104+
- Do not rely on C refcounting of `Request`
105+
- Use `ARef` to track `Request` lifetime
106+
- Use `Page` instead of `Folio` to track memory for memory backed mode
107+
- Use typestate pattern to track state of `GenDisk`
108+
- Panic when requests cannot be completed
109+
- Remove associated type `RequestDataInit` and use return position impl trait instead
110+
- Call `Request::start` implicitly
111+
- Split helper function C file
112+
113+
### Performance
114+
115+
#### Setup
116+
117+
- AMD Ryzen 5 7600
118+
- 32 GB 4800 MT/s DDR5 on one channel
119+
- 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
120+
- NixOS 24.05
121+
122+
#### Results
123+
124+
- Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`
125+
- 5 samples for each configuration
126+
- Difference of means modeled with t-distribution
127+
- P95 confidence intervals
128+
129+
![](rnull/rnull-v6.9.svg)
130+
69131
## 6.8 Rebase ([`rnull-v6.8`](https://github.com/metaspace/linux/tree/rnull-v6.8))
70132

71133
Changes from `rnull-v6.8-rc6`:

0 commit comments

Comments
 (0)