On 1/19/2026 12:16 PM, Stefan Hajnoczi wrote:
On Tue, Jan 13, 2026 at 11:48:21AM -0600, Jaehoon Kim wrote:
We evaluated the patches on an s390x host with a single guest using 16
virtio block devices backed by FCP multipath devices in a separate-disk
setup, with the I/O scheduler set to 'none' in both host and guest.
The fio workload included sequential and random read/write with varying
numbers of jobs (1,4,8,16) and io_depth of 8. The tests were conducted
with single and dual iothreads, using the newly introduced poll-weight
parameter to measure their impact on CPU cost and throughput.
Compared to the baseline, across four FIO workload patterns (sequential
R/W, random R/W), and averaged over FIO job counts of 1, 4, 8, and 16,
throughput decreased slightly (-3% to -8% for one iothread, -2% to -5%
for two iothreads), while CPU usage on the s390x host dropped
significantly (-10% to -25% and -7% to -12%, respectively).
Hi Jaehoon,
I would like to run the same fio benchmarks on a local NVMe drive (<10us
request latency) to see how that type of hardware configuration is
affected. Are the scripts and fio job files available somewhere?
Thanks,
Stefan
Thank you for your reply.
The fio scripts are not available in a location you can access, but there is
nothing particularly special in the settings.
I’m sharing below the methodology and test setup used by our performance team.
Guest Setup
----------------------
- 12 vCPUs, 4 GiB memory
- 16 virtio disks based on the FCP multipath devices in the host
FIO test parameters
-----------------------
- FIO Version: fio-3.33
- Filesize: 2G
- Blocksize: 8K / 128K
- Direct I/O: 1
- FIO I/O Engine: libaio
- NUMJOB List: 1, 4, 8, 16
- IODEPTH: 8
- Runtime (s): 150
Two FIO samples for random read
--------------------------------
fio --direct=1 --name=test --numjobs=16
--filename=base.0.0:base.1.0:base.2.0:base.3.0:base.4.0:base.5.0:base.6.0:base.7.0:base.8.0:base.9.0:base.10.0:base.11.0:base.12.0:base.13.0:base.14.0:base.15.0
--size=32G --time_based --runtime=4m --readwrite=randread --ioengine=libaio
--iodepth=8 --bs=8k
fio --direct=1 --name=test --numjobs=4
--filename=subw1/base.0.0:subw4/base.3.0:subw8/base.7.0:subw12/base.11.0:subw16/base.15.0
--size=8G --time_based --runtime=4m --readwrite=randread --ioengine=libaio
--iodepth=8 --bs=8k
additional notes
----------------
- Each file is placed on a separate disk device mounted under subw<n> as
specified in --filename=....
- We execute one warmup run, then two measurement runs and calculate the average
Please let me know if you need any additional information.
Regards,
Jaehoon Kim