Skip to content

burette: add virtio-fs perf test with parallel I/O benchmarks#3450

Open
benhillis wants to merge 1 commit into
microsoft:mainfrom
benhillis:user/benhill/burette-parallel-fio
Open

burette: add virtio-fs perf test with parallel I/O benchmarks#3450
benhillis wants to merge 1 commit into
microsoft:mainfrom
benhillis:user/benhill/burette-parallel-fio

Conversation

@benhillis
Copy link
Copy Markdown
Member

@benhillis benhillis commented May 11, 2026

Add a burette performance test for virtio-fs that measures sequential and random I/O throughput using fio with io_uring.

What it does

Runs fio against a virtio-fs mount with the following workloads:

  • Sequential read/write (128k blocks, single thread) — exercises large I/O and zero-copy paths
  • Random read/write (4k blocks, single thread) — measures baseline IOPS
  • Parallel random read/write (4k blocks, 4 jobs) — exercises multi-queue and concurrent I/O

Each workload uses io_uring with iodepth=32 and drops the page cache before each run to ensure we measure the FUSE path, not the guest page cache.

Metrics

Metric Unit Description
fio_virtiofs_seq_read_bw MiB/s Sequential read bandwidth
fio_virtiofs_seq_write_bw MiB/s Sequential write bandwidth
fio_virtiofs_rand_read_bw MiB/s Random read bandwidth
fio_virtiofs_rand_read_iops IOPS Random read IOPS
fio_virtiofs_rand_write_bw MiB/s Random write bandwidth
fio_virtiofs_rand_write_iops IOPS Random write IOPS
fio_virtiofs_rand_read_par4_bw MiB/s Parallel (4-job) random read bandwidth
fio_virtiofs_rand_read_par4_iops IOPS Parallel (4-job) random read IOPS
fio_virtiofs_rand_write_par4_bw MiB/s Parallel (4-job) random write bandwidth
fio_virtiofs_rand_write_par4_iops IOPS Parallel (4-job) random write IOPS

@benhillis benhillis requested a review from a team as a code owner May 11, 2026 15:47
Copilot AI review requested due to automatic review settings May 11, 2026 15:47
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new burette warm-mode performance benchmark that measures virtio-fs throughput/IOPS from inside a minimal Linux VM using fio (including a parallel random I/O workload intended to exercise multi-queue virtio-fs).

Changes:

  • Introduces VirtioFsTest (WarmPerfTest) that boots once, mounts a host-backed virtio-fs share, and runs fio sequential/random workloads (plus parallel random with numjobs=4) while emitting fio_virtiofs_* metrics.
  • Wires the new test into the burette CLI (--test virtio-fs) and adds --virtiofs-file-size-mib to control the file size used for the fio jobs.
  • Registers the new test module and includes its artifact registration in package.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
petri/burette/src/tests/virtio_fs.rs New virtio-fs fio perf test implementation + metric parsing.
petri/burette/src/tests/mod.rs Exposes the new virtio_fs test module.
petri/burette/src/main.rs Adds CLI plumbing for the new test and file-size flag; includes it in run/package flows.

Comment thread petri/burette/src/tests/virtio_fs.rs
Comment thread petri/burette/src/tests/virtio_fs.rs Outdated
Comment thread petri/burette/src/main.rs
Comment thread petri/burette/src/tests/virtio_fs.rs Outdated
@benhillis benhillis force-pushed the user/benhill/burette-parallel-fio branch from de1556a to 199b973 Compare May 11, 2026 16:23
@github-actions github-actions Bot added the Guide label May 11, 2026
Add a burette performance test for virtio-fs that measures sequential and
random I/O throughput using fio with io_uring. Includes both single-thread
and parallel (numjobs=4) random I/O tests to exercise multi-queue behavior.

Metrics collected:
- Sequential read/write bandwidth (128k blocks)
- Random read/write IOPS and bandwidth (4k blocks)
- Parallel random read/write IOPS and bandwidth (4k blocks, 4 jobs)

Also extracts common helpers (build_firmware, require_petritools_erofs)
into a shared module to reduce duplication across disk_io, network, and
virtio_fs tests. Adds sync before dropping page caches for more
deterministic results, and moves cache invalidation before the perf
recorder to avoid capturing non-fio activity in traces.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@benhillis benhillis force-pushed the user/benhill/burette-parallel-fio branch from 199b973 to c3259c0 Compare May 11, 2026 17:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants