@@ -18,101 +18,101 @@ authored by Wedson Almeida Filho and is now maintained by Andreas Hindborg
18
18
19
19
The driver is not currently suitable for general use.
20
20
21
- # Resources
21
+ ## Resources
22
22
- LPC 2022
23
23
[ slides] ( https://lpc.events/event/16/contributions/1180/attachments/1017/1961/deck.pdf )
24
24
and [ video] ( https://lpc.events/event/16/contributions/1180/attachments/1017/2249/go )
25
25
26
- # 6.7 Rebase Performance ([ ` nvme-6.7 ` ] ( https://github.com/metaspace/linux/tree/nvme-6.7 ) )
26
+ ## 6.7 Rebase Performance ([ ` nvme-6.7 ` ] ( https://github.com/metaspace/linux/tree/nvme-6.7 ) )
27
27
28
- ## Setup
28
+ ### Setup
29
29
30
30
- 12th Gen Intel(R) Core(TM) i5-12600
31
31
- 32 GB DRAM
32
32
- 1x INTEL MEMPEK1W016GA (PCIe 3.0 x2)
33
33
- Debian Bullseye userspace
34
34
- LTO results are enabled by a build system patch (a hack) that was not yet published.
35
35
36
- ## Results
36
+ ### Results
37
37
38
38
- 30 samples
39
39
- Difference of means modeled with t-distribution
40
40
- P99 confidence intervals
41
41
42
42
![ ] ( rnvme/nvme-all-6.7.svg )
43
43
44
- ### Difference Relative
44
+ #### Difference Relative
45
45
46
46
Plot shows ` (mean_iops_r - mean_iops_c) / mean_iops_c ` '
47
47
48
48
![ ] ( rnvme/nvme-diff-relative-6.7.svg )
49
49
50
- # Performance November 2023 ([ ` nvme-6.6 ` ] ( https://github.com/metaspace/linux/tree/nvme-6.6 ) )
50
+ ## Performance November 2023 ([ ` nvme-6.6 ` ] ( https://github.com/metaspace/linux/tree/nvme-6.6 ) )
51
51
52
- ## Setup
52
+ ### Setup
53
53
54
54
- 12th Gen Intel(R) Core(TM) i5-12600
55
55
- 32 GB DRAM
56
56
- 1x INTEL MEMPEK1W016GA (PCIe 3.0 x2)
57
57
- Debian Bullseye userspace
58
58
- LTO results are enabled by a build system patch (a hack) that was not yet published.
59
59
60
- ## Results
60
+ ### Results
61
61
62
62
- 30 samples
63
63
- Difference of means modeled with t-distribution
64
64
- P99 confidence intervals
65
65
66
66
![ ] ( rnvme/nvme-all-6.6.svg )
67
67
68
- ### Difference
68
+ #### Difference
69
69
70
70
![ ] ( rnvme/nvme-diff-6.6.svg )
71
71
72
- ### Difference Relative
72
+ #### Difference Relative
73
73
74
74
Plot shows ` (mean_iops_r - mean_iops_c) / mean_iops_c ` '
75
75
76
76
![ ] ( rnvme/nvme-diff-relative-6.6.svg )
77
77
78
- # Performance September 2023
78
+ ## Performance September 2023
79
79
80
80
The driver was
81
81
[ rebased] ( https://github.com/metaspace/linux/tree/7353a81d566510080f91099b1a2b31895c716c9d )
82
82
on top of
83
83
[ ` rust-next ` ] ( https://github.com/Rust-for-Linux/linux/commit/37152d4a7c6400a4250134e601eca8be1a2bbc16 )
84
84
PR for 6.6 in September 2023.
85
85
86
- ## Setup
86
+ ### Setup
87
87
88
88
- 12th Gen Intel(R) Core(TM) i5-12600
89
89
- 32 GB DRAM
90
90
- 1x INTEL MEMPEK1W016GA (PCIe 3.0 x2)
91
91
- Debian Bullseye userspace
92
92
93
- ## Results
93
+ ### Results
94
94
95
95
![ iops-512] ( ./nvme-512.svg )
96
96
![ iops-all] ( ./nvme-all.svg )
97
97
98
- # Performance January 2023
98
+ ## Performance January 2023
99
99
100
100
Performance evaluation as of January 2023.
101
101
102
- ## Setup
102
+ ### Setup
103
103
104
104
- Dell PowerEdge R6525
105
105
- 1 CPU socket populated - EPYC 7313, 16 cores
106
106
- 128 GB DRAM
107
107
- 3x P5800x 16GT/s x4 7.88 GB/s (PCIe 4)
108
108
- Debian bullseye (linux 5.19.0+)
109
109
110
- ## Results
110
+ ### Results
111
111
112
112
![ iops] ( ./iops.svg )
113
113
![ relative] ( ./relative.svg )
114
114
115
- ## Analysis
115
+ ### Analysis
116
116
117
117
For 4 KiB block size, the Rust NVMe driver performs similar to the C driver. For
118
118
this configuration the target drive is bandwidth limited.
@@ -121,7 +121,7 @@ For 512 B block size, the C driver outperforms the Rust driver by up to 6%. In
121
121
this configuration the drive is not bandwidth limited, but the benchmark becomes
122
122
compute limited. The Rust driver has a higher overhead and thus performs worse.
123
123
124
- # Work Items
124
+ ## Work Items
125
125
126
126
- Remove all unsafe code from the driver
127
127
- Support device removal
@@ -130,7 +130,7 @@ compute limited. The Rust driver has a higher overhead and thus performs worse.
130
130
- Support more kernel configurations by deferring initialization to a task queue
131
131
- Improve performance of Rust NVMe driver
132
132
133
- # Contact
133
+ ## Contact
134
134
135
135
Please contact Andreas Hindborg through
136
136
[ Zulip] ( Contact.md#zulip-chat ) .
0 commit comments