Skip to content

Commit

Permalink
Merge pull request Rust-for-Linux#10 from metaspace/block-update
Browse files Browse the repository at this point in the history
Block update
  • Loading branch information
ojeda authored Nov 15, 2023
2 parents 8df0f0c + 66156f6 commit 0877820
Show file tree
Hide file tree
Showing 6 changed files with 10,156 additions and 4 deletions.
29 changes: 29 additions & 0 deletions src/NVMe-driver.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ for use in the Linux Kernel. The purpose of the driver is to provide a vehicle
for development of safe Rust abstractions and to prove feasibility of Rust as an
implementation language for high performance device drivers.


The Linux Rust NVMe driver lives
[here](https://github.com/metaspace/linux/tree/nvme). This branch is routinely
rebased on upstream Linux releases. Please be aware that the `nvme` branch is
Expand All @@ -22,6 +23,34 @@ 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)

# Performance November 2023 ([`nvme-6.6`](https://github.com/metaspace/linux/tree/nvme-6.6))

## Setup

- 12th Gen Intel(R) Core(TM) i5-12600
- 32 GB DRAM
- 1x INTEL MEMPEK1W016GA (PCIe 3.0 x2)
- Debian Bullseye userspace
- LTO results are enabled by a build system patch (a hack) that was not yet published.

## Results

- 30 samples
- Difference of means modeled with t-distribution
- P99 confidence intervals

![](rnvme/nvme-all-6.6.svg)

### Difference

![](rnvme/nvme-diff-6.6.svg)

### Difference Relative

Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`'

![](rnvme/nvme-diff-relative-6.6.svg)

# Performance September 2023

The driver was
Expand Down
27 changes: 23 additions & 4 deletions src/Null-Block-Driver.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ contained in the abstractions that wrap the C APIs.
Implemented features:

- `blk-mq` support
- Direct completion of IO
- Direct completion
- SoftIRQ completion
- Timer completion
- Read and write requests
- Optional memory backing

Expand All @@ -45,7 +47,6 @@ in this work:
- Block size configuration
- Multiple devices
- Dynamic device creation/destruction
- Soft-IRQ and timer mode
- Queue depth configuration
- Queue count configuration
- Discard operation support
Expand All @@ -61,11 +62,29 @@ in this work:

## Resources

- [Patches for 6.6](https://github.com/metaspace/linux/tree/null_blk-next-for-6.6)
- [Latest patches](https://github.com/metaspace/linux/tree/null_blk)
- [Original RFC Patches](https://github.com/metaspace/linux/tree/null_block-RFC)
- [Mailing List Post](https://lore.kernel.org/all/20230503090708.2524310-1-nmi@metaspace.dk/)

# Performance
# Performance September 2023 ([`null_blk-6.6`](https://github.com/metaspace/linux/tree/null_blk-6.6))

## Setup

- 12th Gen Intel(R) Core(TM) i5-12600
- 32 GB DRAM
- 1x INTEL MEMPEK1W016GA (PCIe 3.0 x2)
- Debian Bullseye userspace

## Results

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

![](rnull/null_blk-6.6.svg)

# Performance September 2023

## Setup

Expand Down
Loading

0 comments on commit 0877820

Please sign in to comment.