@@ -28,6 +28,12 @@ candidate for rewriting in Rust.
2828The driver is implemented entirely in safe Rust, with all unsafe code fully
2929contained 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
3339Implemented 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