Skip to content

Commit 0877820

Browse files
authored
Merge pull request #10 from metaspace/block-update
Block update
2 parents 8df0f0c + 66156f6 commit 0877820

File tree

6 files changed

+10156
-4
lines changed

6 files changed

+10156
-4
lines changed

src/NVMe-driver.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ for use in the Linux Kernel. The purpose of the driver is to provide a vehicle
55
for development of safe Rust abstractions and to prove feasibility of Rust as an
66
implementation language for high performance device drivers.
77

8+
89
The Linux Rust NVMe driver lives
910
[here](https://github.com/metaspace/linux/tree/nvme). This branch is routinely
1011
rebased on upstream Linux releases. Please be aware that the `nvme` branch is
@@ -22,6 +23,34 @@ The driver is not currently suitable for general use.
2223
[slides](https://lpc.events/event/16/contributions/1180/attachments/1017/1961/deck.pdf)
2324
and [video](https://lpc.events/event/16/contributions/1180/attachments/1017/2249/go)
2425

26+
# Performance November 2023 ([`nvme-6.6`](https://github.com/metaspace/linux/tree/nvme-6.6))
27+
28+
## Setup
29+
30+
- 12th Gen Intel(R) Core(TM) i5-12600
31+
- 32 GB DRAM
32+
- 1x INTEL MEMPEK1W016GA (PCIe 3.0 x2)
33+
- Debian Bullseye userspace
34+
- LTO results are enabled by a build system patch (a hack) that was not yet published.
35+
36+
## Results
37+
38+
- 30 samples
39+
- Difference of means modeled with t-distribution
40+
- P99 confidence intervals
41+
42+
![](rnvme/nvme-all-6.6.svg)
43+
44+
### Difference
45+
46+
![](rnvme/nvme-diff-6.6.svg)
47+
48+
### Difference Relative
49+
50+
Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`'
51+
52+
![](rnvme/nvme-diff-relative-6.6.svg)
53+
2554
# Performance September 2023
2655

2756
The driver was

src/Null-Block-Driver.md

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ contained in the abstractions that wrap the C APIs.
3333
Implemented features:
3434

3535
- `blk-mq` support
36-
- Direct completion of IO
36+
- Direct completion
37+
- SoftIRQ completion
38+
- Timer completion
3739
- Read and write requests
3840
- Optional memory backing
3941

@@ -45,7 +47,6 @@ in this work:
4547
- Block size configuration
4648
- Multiple devices
4749
- Dynamic device creation/destruction
48-
- Soft-IRQ and timer mode
4950
- Queue depth configuration
5051
- Queue count configuration
5152
- Discard operation support
@@ -61,11 +62,29 @@ in this work:
6162

6263
## Resources
6364

64-
- [Patches for 6.6](https://github.com/metaspace/linux/tree/null_blk-next-for-6.6)
65+
- [Latest patches](https://github.com/metaspace/linux/tree/null_blk)
6566
- [Original RFC Patches](https://github.com/metaspace/linux/tree/null_block-RFC)
6667
- [Mailing List Post](https://lore.kernel.org/all/[email protected]/)
6768

68-
# Performance
69+
# Performance September 2023 ([`null_blk-6.6`](https://github.com/metaspace/linux/tree/null_blk-6.6))
70+
71+
## Setup
72+
73+
- 12th Gen Intel(R) Core(TM) i5-12600
74+
- 32 GB DRAM
75+
- 1x INTEL MEMPEK1W016GA (PCIe 3.0 x2)
76+
- Debian Bullseye userspace
77+
78+
## Results
79+
80+
- Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`
81+
- 40 samples
82+
- Difference of means modeled with t-distribution
83+
- P95 confidence intervals
84+
85+
![](rnull/null_blk-6.6.svg)
86+
87+
# Performance September 2023
6988

7089
## Setup
7190

0 commit comments

Comments
 (0)