When the file system is dealing with multithreading concurrent writing to a file, the performance will be degraded because of the lock. At present, the default AIO mode of QEMU NBD is threads. In the case of large blocks, because IO is divided into small pieces and multiple queues, it will become multithreading concurrent writing the same file. Due to the file system, the performance will be greatly reduced. If you change to native mode, this problem will not exist. Signed-off-by: wangjian161 <wangjian161@huawei.com>
36 lines
1.2 KiB
Diff
36 lines
1.2 KiB
Diff
From de6f3fb0cf92e04c0989a9065910158eecbe4304 Mon Sep 17 00:00:00 2001
|
|
From: WangJian <wangjian161@huawei.com>
|
|
Date: Wed, 9 Feb 2022 10:48:58 +0800
|
|
Subject: [PATCH] qemu-nbd: make native as the default aio mode
|
|
|
|
When the file system is dealing with multithreading concurrent writing to a file,
|
|
the performance will be degraded because of the lock.
|
|
At present, the default AIO mode of QEMU NBD is threads. In the case of large blocks,
|
|
because IO is divided into small pieces and multiple queues, it will become multithreading
|
|
concurrent writing the same file. Due to the file system, the performance will be greatly reduced.
|
|
If you change to native mode, this problem will not exist.
|
|
|
|
Signed-off-by: wangjian161 <wangjian161@huawei.com>
|
|
---
|
|
qemu-nbd.c | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/qemu-nbd.c b/qemu-nbd.c
|
|
index c6c20df68a..15a4bc4018 100644
|
|
--- a/qemu-nbd.c
|
|
+++ b/qemu-nbd.c
|
|
@@ -800,6 +800,10 @@ int main(int argc, char **argv)
|
|
trace_init_file();
|
|
qemu_set_log(LOG_TRACE);
|
|
|
|
+ if (!seen_aio && (flags & BDRV_O_NOCACHE)) {
|
|
+ flags |= BDRV_O_NATIVE_AIO;
|
|
+ }
|
|
+
|
|
socket_activation = check_socket_activation();
|
|
if (socket_activation == 0) {
|
|
setup_address_and_port(&bindto, &port);
|
|
--
|
|
2.27.0
|
|
|