burette: add virtio-fs perf test with parallel I/O benchmarks#3450
Open
benhillis wants to merge 1 commit into
Open
burette: add virtio-fs perf test with parallel I/O benchmarks#3450benhillis wants to merge 1 commit into
benhillis wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
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 withnumjobs=4) while emittingfio_virtiofs_*metrics. - Wires the new test into the
buretteCLI (--test virtio-fs) and adds--virtiofs-file-size-mibto 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. |
damanm24
reviewed
May 11, 2026
de1556a to
199b973
Compare
damanm24
approved these changes
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>
199b973 to
c3259c0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
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
fio_virtiofs_seq_read_bwfio_virtiofs_seq_write_bwfio_virtiofs_rand_read_bwfio_virtiofs_rand_read_iopsfio_virtiofs_rand_write_bwfio_virtiofs_rand_write_iopsfio_virtiofs_rand_read_par4_bwfio_virtiofs_rand_read_par4_iopsfio_virtiofs_rand_write_par4_bwfio_virtiofs_rand_write_par4_iops