9pfs: log warning if msize <= 8192
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 <qemu_oss@crudebyte.com> Reviewed-by: Greg Kurz <groug@kaod.org> Message-Id: <e6fc84845c95816ad5baecb0abd6bfefdcf7ec9f.1599144062.git.qemu_oss@crudebyte.com> Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
This commit is contained in:
parent
2d2c73d0e3
commit
62777d825b
@ -1353,6 +1353,15 @@ static void coroutine_fn v9fs_version(void *opaque)
|
|||||||
goto out;
|
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:
|
marshal:
|
||||||
err = pdu_marshal(pdu, offset, "ds", s->msize, &version);
|
err = pdu_marshal(pdu, offset, "ds", s->msize, &version);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user