qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 7/7] 9p: v9fs fix calculation of max number of merge


From: edward . shishkin
Subject: [Qemu-devel] [PATCH 7/7] 9p: v9fs fix calculation of max number of merged pages
Date: Mon, 12 Dec 2016 19:15:42 +0100

From: Eduard Shishkin <address@hidden>

Don't merge too many pages when composing a 9p message because:
. it doesn't lead to essential performance improvement;
. to not allow user space to allocate big amount of kernel memory.

We use a limit of 256K (for total size of all pages merged per message),
as larger values don't provide any visible speedup.

Signed-off-by: Eduard Shishkin <address@hidden>
---
 fs/9p/v9fs.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/fs/9p/v9fs.c b/fs/9p/v9fs.c
index 58bff9e..50a4034 100644
--- a/fs/9p/v9fs.c
+++ b/fs/9p/v9fs.c
@@ -319,6 +319,8 @@ void put_flush_set(struct v9fs_flush_set *fset)
        kfree(fset);
 }
 
+#define MAX_FLUSH_DATA_SIZE (262144)
+
 /**
  * Allocate and initalize flush set
  * Pre-conditions: valid msize is set
@@ -333,6 +335,11 @@ int alloc_init_flush_set(struct v9fs_session_info *v9ses)
        if (num_pages < 2)
                /* speedup impossible */
                return 0;
+       if (num_pages > (MAX_FLUSH_DATA_SIZE >> PAGE_SHIFT))
+               /*
+                * no performance gain with larger values
+                */
+               num_pages = MAX_FLUSH_DATA_SIZE >> PAGE_SHIFT;
        fset = kzalloc(sizeof(*fset), GFP_KERNEL);
        if (!fset)
                goto error;
-- 
2.7.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]