]> Git Repo - qemu.git/commitdiff
9pfs: log warning if msize <= 8192
authorChristian Schoenebeck <[email protected]>
Thu, 3 Sep 2020 14:20:21 +0000 (16:20 +0200)
committerChristian Schoenebeck <[email protected]>
Tue, 15 Sep 2020 10:12:03 +0000 (12:12 +0200)
It is essential to choose a reasonable high value for 'msize' to avoid
severely degraded file I/O performance. This parameter can only be
chosen on client/guest side, and a Linux client defaults to an 'msize'
of only 8192 if the user did not explicitly specify a value for 'msize',
which results in very poor file I/O performance.

Unfortunately many users are not aware that they should specify an
appropriate value for 'msize' to avoid severe performance issues, so
log a performance warning (with a QEMU wiki link explaining this issue
in detail) on host side in that case to make it more clear.

Currently a client cannot automatically pick a reasonable value for
'msize', because a good value for 'msize' depends on the file I/O
potential of the underlying storage on host side, i.e. a feature
invisible to the client, and even then a user would still need to trade
off between performance profit and additional RAM costs, i.e. with
growing 'msize' (RAM occupation), performance still increases, but
performance delta will shrink continuously.

Signed-off-by: Christian Schoenebeck <[email protected]>
Reviewed-by: Greg Kurz <[email protected]>
Message-Id: <e6fc84845c95816ad5baecb0abd6bfefdcf7ec9f.1599144062[email protected]>
Signed-off-by: Christian Schoenebeck <[email protected]>
hw/9pfs/9p.c

index 7bb994bbf27cfdd493c6b1307734accde6f1f40d..99b6f24fd6996b740adb8c932f294be72da4f961 100644 (file)
@@ -1353,6 +1353,15 @@ static void coroutine_fn v9fs_version(void *opaque)
         goto out;
     }
 
+    /* 8192 is the default msize of Linux clients */
+    if (s->msize <= 8192) {
+        warn_report_once(
+            "9p: degraded performance: a reasonable high msize should be "
+            "chosen on client/guest side (chosen msize is <= 8192). See "
+            "https://wiki.qemu.org/Documentation/9psetup#msize for details."
+        );
+    }
+
 marshal:
     err = pdu_marshal(pdu, offset, "ds", s->msize, &version);
     if (err < 0) {
This page took 0.024756 seconds and 4 git commands to generate.