mirror of
https://github.com/qemu/qemu.git
synced 2026-07-08 17:56:38 +00:00
iotests/308: Add multi-threading sanity test
Run qemu-img bench on a simple multi-threaded FUSE export to test that it works. Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Hanna Czenczek <hreitz@redhat.com> Message-ID: <20260309150856.26800-26-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
40ee2ff0ce
commit
2224bff1ba
@@ -441,6 +441,57 @@ $QEMU_IO -c 'read -P 0 0 64M' "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
_cleanup_test_img
|
||||
|
||||
echo
|
||||
echo '=== Multi-threading ==='
|
||||
|
||||
# Just set up a null block device, export it (with multi-threading), and run
|
||||
# qemu-img bench on it (to get parallel requests)
|
||||
|
||||
_launch_qemu
|
||||
_send_qemu_cmd $QEMU_HANDLE \
|
||||
"{'execute': 'qmp_capabilities'}" \
|
||||
'return'
|
||||
|
||||
_send_qemu_cmd $QEMU_HANDLE \
|
||||
"{'execute': 'blockdev-add',
|
||||
'arguments': {
|
||||
'driver': 'null-co',
|
||||
'node-name': 'null'
|
||||
} }" \
|
||||
'return'
|
||||
|
||||
for id in iothread{0,1,2,3}; do
|
||||
_send_qemu_cmd $QEMU_HANDLE \
|
||||
"{'execute': 'object-add',
|
||||
'arguments': {
|
||||
'qom-type': 'iothread',
|
||||
'id': '$id'
|
||||
} }" \
|
||||
'return'
|
||||
done
|
||||
|
||||
echo
|
||||
|
||||
iothreads="['iothread0', 'iothread1', 'iothread2', 'iothread3']"
|
||||
fuse_export_add \
|
||||
'export' \
|
||||
"'mountpoint': '$EXT_MP', 'iothread': $iothreads" \
|
||||
'return' \
|
||||
'null'
|
||||
|
||||
echo
|
||||
$QEMU_IMG bench -f raw "$EXT_MP" |
|
||||
sed -e 's/[0-9.]\+ seconds/X.XXX seconds/'
|
||||
echo
|
||||
|
||||
fuse_export_del 'export'
|
||||
|
||||
_send_qemu_cmd $QEMU_HANDLE \
|
||||
"{'execute': 'quit'}" \
|
||||
'return'
|
||||
|
||||
wait=yes _cleanup_qemu
|
||||
|
||||
# success, all done
|
||||
echo "*** done"
|
||||
rm -f $seq.full
|
||||
|
||||
@@ -217,4 +217,60 @@ read 67108864/67108864 bytes at offset 0
|
||||
{"return": {}}
|
||||
read 67108864/67108864 bytes at offset 0
|
||||
64 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
=== Multi-threading ===
|
||||
{'execute': 'qmp_capabilities'}
|
||||
{"return": {}}
|
||||
{'execute': 'blockdev-add',
|
||||
'arguments': {
|
||||
'driver': 'null-co',
|
||||
'node-name': 'null'
|
||||
} }
|
||||
{"return": {}}
|
||||
{'execute': 'object-add',
|
||||
'arguments': {
|
||||
'qom-type': 'iothread',
|
||||
'id': 'iothread0'
|
||||
} }
|
||||
{"return": {}}
|
||||
{'execute': 'object-add',
|
||||
'arguments': {
|
||||
'qom-type': 'iothread',
|
||||
'id': 'iothread1'
|
||||
} }
|
||||
{"return": {}}
|
||||
{'execute': 'object-add',
|
||||
'arguments': {
|
||||
'qom-type': 'iothread',
|
||||
'id': 'iothread2'
|
||||
} }
|
||||
{"return": {}}
|
||||
{'execute': 'object-add',
|
||||
'arguments': {
|
||||
'qom-type': 'iothread',
|
||||
'id': 'iothread3'
|
||||
} }
|
||||
{"return": {}}
|
||||
|
||||
{'execute': 'block-export-add',
|
||||
'arguments': {
|
||||
'type': 'fuse',
|
||||
'id': 'export',
|
||||
'node-name': 'null',
|
||||
'mountpoint': 'TEST_DIR/t.IMGFMT.fuse', 'iothread': ['iothread0', 'iothread1', 'iothread2', 'iothread3']
|
||||
} }
|
||||
{"return": {}}
|
||||
|
||||
Sending 75000 read requests, 4096 bytes each, 64 in parallel (starting at offset 0, step size 4096)
|
||||
Run completed in X.XXX seconds.
|
||||
|
||||
{'execute': 'block-export-del',
|
||||
'arguments': {
|
||||
'id': 'export'
|
||||
} }
|
||||
{"return": {}}
|
||||
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_EXPORT_DELETED", "data": {"id": "export"}}
|
||||
{'execute': 'quit'}
|
||||
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
|
||||
{"return": {}}
|
||||
*** done
|
||||
|
||||
Reference in New Issue
Block a user