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>
This commit is contained in:
parent
3f9841ed96
commit
ec87f83a2e
35
qemu-nbd-make-native-as-the-default-aio-mode.patch
Normal file
35
qemu-nbd-make-native-as-the-default-aio-mode.patch
Normal file
@ -0,0 +1,35 @@
|
||||
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user