@@ -28,6 +28,12 @@ candidate for rewriting in Rust.
28
28
The driver is implemented entirely in safe Rust, with all unsafe code fully
29
29
contained in the abstractions that wrap the C APIs.
30
30
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
+
31
37
## Features
32
38
33
39
Implemented features:
@@ -38,17 +44,17 @@ Implemented features:
38
44
- Timer completion
39
45
- Read and write requests
40
46
- Optional memory backing
41
-
42
- Features available in the C ` null_blk ` driver that are currently not implemented
43
- in this work:
44
-
45
47
- Bio-based submission
46
48
- NUMA support
47
49
- Block size configuration
48
50
- Multiple devices
49
51
- Dynamic device creation/destruction
50
- - Queue depth configuration
51
52
- 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
52
58
- Discard operation support
53
59
- Cache emulation
54
60
- Bandwidth throttling
@@ -67,9 +73,93 @@ in this work:
67
73
- [ Mailing List Post
] ( https://lore.kernel.org/all/[email protected] / )
68
74
- [ Subset merged in v6.11-rc1
] ( https://lore.kernel.org/all/[email protected] / )
69
75
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
+
70
160
## 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 ) )
71
161
72
- Changes from ` rnull-v6.10 ` :
162
+ Changes from ` rnull-v6.11 ` :
73
163
74
164
- Make ` QueueData ` references pinned.
75
165
0 commit comments