mirror of
https://github.com/qemu/qemu.git
synced 2026-07-08 17:46:10 +00:00
fuse: Manually process requests (without libfuse)
Manually read requests from the /dev/fuse FD and process them, without
using libfuse. This allows us to safely add parallel request processing
in coroutines later, without having to worry about libfuse internals.
(Technically, we already have exactly that problem with
read_from_fuse_export()/read_from_fuse_fd() nesting.)
We will continue to use libfuse for mounting the filesystem; fusermount3
is a effectively a helper program of libfuse, so it should know best how
to interact with it. (Doing it manually without libfuse, while doable,
is a bit of a pain, and it is not clear to me how stable the "protocol"
actually is.)
Take this opportunity of quite a major rewrite to update the Copyright
line with corrected information that has surfaced in the meantime.
Here are some benchmarks from before this patch (4k, iodepth=16, libaio;
except 'sync', which are iodepth=1 and pvsync2):
file:
read:
seq aio: 99.8k ±1.5k IOPS
rand aio: 50.5k ±1.0k
seq sync: 36.1k ±1.1k
rand sync: 10.0k ±0.1k
write:
seq aio: 72.0k ±9.3k
rand aio: 70.6k ±2.5k
seq sync: 30.6k ±0.8k
rand sync: 30.1k ±1.0k
null:
read:
seq aio: 157.9k ±4.7k
rand aio: 158.7k ±4.8k
seq sync: 80.2k ±2.8k
rand sync: 77.5k ±3.8k
write:
seq aio: 154.3k ±3.6k
rand aio: 154.3k ±4.2k
seq sync: 76.1k ±5.2k
rand sync: 72.9k ±4.0k
And with this patch applied:
file:
read:
seq aio: 106.8k ±1.9k (+7%)
rand aio: 48.3k ±8.8k (-4%)
seq sync: 35.5k ±1.4k (-2%)
rand sync: 10.0k ±0.2k (±0%)
write:
seq aio: 76.3k ±6.6k (+6%)
rand aio: 76.4k ±1.5k (+8%)
seq sync: 31.6k ±0.6k (+3%)
rand sync: 30.9k ±0.8k (+3%)
null:
read:
seq aio: 161.7k ±6.0k (+2%)
rand aio: 165.6k ±7.1k (+4%)
seq sync: 80.5k ±3.0k (±0%)
rand sync: 78.5k ±3.1k (+1%)
write:
seq aio: 185.1k ±3.3k (+20%)
rand aio: 186.7k ±4.8k (+21%)
seq sync: 82.5k ±4.2k (+8%)
rand sync: 78.7k ±3.2k (+8%)
So not much difference, aside from write AIO to a null-co export getting
a bit better.
Signed-off-by: Hanna Czenczek <hreitz@redhat.com>
Message-ID: <20260309150856.26800-18-hreitz@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
committed by
Kevin Wolf
parent
bea1163dec
commit
a94a1d7699