Skip to content

Commit

Permalink
Merge pull request #30 from metaspace/block-update-september
Browse files Browse the repository at this point in the history
Block update september
  • Loading branch information
ojeda authored Sep 4, 2024
2 parents 973a77d + ebb18c5 commit 96f1430
Show file tree
Hide file tree
Showing 12 changed files with 18,320 additions and 9 deletions.
87 changes: 79 additions & 8 deletions src/NVMe-driver.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ implementation language for high performance device drivers.


The Linux Rust NVMe driver lives
[here](https://github.com/metaspace/linux/tree/rnvme). This branch is routinely
rebased on upstream Linux releases. Please be aware that the `nvme` branch is
force pushed without notice. The version based on the deprecated `rust` branch
is available [here](https://github.com/metaspace/linux/tree/nvme-rust).
[here](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnvme).
This branch is routinely rebased on upstream Linux releases. Please be aware
that the `nvme` branch is force pushed without notice. The version based on the
deprecated `rust` branch is available
[here](https://github.com/metaspace/linux/tree/nvme-rust).

The Rust NVMe driver was originally
authored by Wedson Almeida Filho and is now maintained by Andreas Hindborg
Expand All @@ -23,6 +24,76 @@ The driver is not currently suitable for general use.
[slides](https://lpc.events/event/16/contributions/1180/attachments/1017/1961/deck.pdf)
and [video](https://lpc.events/event/16/contributions/1180/attachments/1017/2249/go)

## 6.11-rc2 Rebase Performance ([`rnvme-v6.11-rc2`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnvme-v6.11-rc2))

### Setup

- AMD Ryzen 5 7600
- 32 GB 4800 MT/s DDR5 on one channel
- 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
- NixOS 24.05

### Results

- 40 samples
- Difference of means modeled with t-distribution
- P95 confidence intervals

![](rnvme/nvme-v6.11-rc2-absolute.svg)

![](rnvme/nvme-v6.11-rc2-relative.svg)

The graph shows
<math>
<mfrac>
<mrow>
<mi>R</mi>
<mo>-</mo>
<mi>C</mi>
</mrow>
<mrow>
<mi>C</mi>
</mrow>
</mfrac>
</math>
where C is IO/s for the C driver and R is IO/s for the Rust driver. Thus, negative
means the C driver is faster while positive means the Rust driver is faster.

## 6.10 Rebase Performance ([`rnvme-v6.10`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnvme-v6.10))

### Setup

- AMD Ryzen 5 7600
- 32 GB 4800 MT/s DDR5 on one channel
- 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
- NixOS 24.05

### Results

- 40 samples
- Difference of means modeled with t-distribution
- P95 confidence intervals

![](rnvme/nvme-v6.10-absolute.svg)

![](rnvme/nvme-v6.10-relative.svg)

The graph shows
<math>
<mfrac>
<mrow>
<mi>R</mi>
<mo>-</mo>
<mi>C</mi>
</mrow>
<mrow>
<mi>C</mi>
</mrow>
</mfrac>
</math>
where C is IO/s for the C driver and R is IO/s for the Rust driver. Thus, negative
means the C driver is faster while positive means the Rust driver is faster.

## 6.10-rc5 Rebase Performance ([`rnvme-v6.10-rc5`](https://github.com/metaspace/linux/tree/rnvme-v6.10-rc5))

### Setup
Expand Down Expand Up @@ -197,8 +268,8 @@ PR for 6.6 in September 2023.

### Results

![iops-512](./nvme-512.svg)
![iops-all](./nvme-all.svg)
![iops-512](./rnvme/nvme-512-sep23.svg)
![iops-all](./rnvme/nvme-all-sep23.svg)

## Performance January 2023

Expand All @@ -214,8 +285,8 @@ Performance evaluation as of January 2023.

### Results

![iops](./iops.svg)
![relative](./relative.svg)
![iops](./rnvme/iops-jan23.svg)
![relative](./rnvme/relative-jan23.svg)

### Analysis

Expand Down
52 changes: 51 additions & 1 deletion src/Null-Block-Driver.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,59 @@ in this work:

## Resources

- [Latest patches](https://github.com/metaspace/linux/tree/rnull)
- [Latest patches](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull)
- [Original RFC Patches](https://github.com/metaspace/linux/tree/null_block-RFC)
- [Mailing List Post](https://lore.kernel.org/all/[email protected]/)
- [Subset merged in v6.11-rc1](https://lore.kernel.org/all/[email protected]/)

## 6.11-rc2 Rebase ([`rnull-v6.11-rc2`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull-v6.11-rc2))

Changes from `rnull-v6.10`:

- Base abstractions merged upstream 🥳
- Use atomic queue limits C API for setting queue limits.

### Performance

#### Setup

- AMD Ryzen 5 7600
- 32 GB 4800 MT/s DDR5 on one channel
- 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
- NixOS 24.05

#### Results

- Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`
- 40 samples for each configuration
- Difference of means modeled with t-distribution
- P95 confidence intervals

![](rnull/rnull-v6.11-rc2.svg)

## 6.10 Rebase ([`rnull-v6.10`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull-v6.10))

Changes from `rnull-v6.10-rc3`:

- None

### Performance

#### Setup

- AMD Ryzen 5 7600
- 32 GB 4800 MT/s DDR5 on one channel
- 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
- NixOS 24.05

#### Results

- Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`
- 40 samples for each configuration
- Difference of means modeled with t-distribution
- P95 confidence intervals

![](rnull/rnull-v6.10.svg)

## 6.10-rc3 Rebase ([`rnull-v6.10-rc3`](https://github.com/metaspace/linux/tree/rnull-v6.10-rc3))

Expand Down
Loading

0 comments on commit 96f1430

Please sign in to comment.