1
The following changes since commit 4100a344eb3d50d88f9da85cae334afc47aee134:
1
The following changes since commit 64175afc695c0672876fbbfc31b299c86d562cb4:
2
2
3
Merge remote-tracking branch 'remotes/sstabellini/tags/xen-20170202' into staging (2017-02-03 12:31:40 +0000)
3
arm_gicv3: Fix ICC_BPR1 reset value when EL3 not implemented (2017-06-07 17:21:44 +0100)
4
4
5
are available in the git repository at:
5
are available in the git repository at:
6
6
7
git://github.com/stefanha/qemu.git tags/block-pull-request
7
git://github.com/codyprime/qemu-kvm-jtc.git tags/block-pull-request
8
8
9
for you to fetch changes up to cdd7abfdba9287a289c404dfdcb02316f9ffee7d:
9
for you to fetch changes up to 56faeb9bb6872b3f926b3b3e0452a70beea10af2:
10
10
11
iothread: enable AioContext polling by default (2017-02-03 14:23:38 +0000)
11
block/gluster.c: Handle qdict_array_entries() failure (2017-06-09 08:41:29 -0400)
12
12
13
----------------------------------------------------------------
13
----------------------------------------------------------------
14
14
Gluster patch
15
----------------------------------------------------------------
15
----------------------------------------------------------------
16
16
17
Stefan Hajnoczi (1):
17
Peter Maydell (1):
18
iothread: enable AioContext polling by default
18
block/gluster.c: Handle qdict_array_entries() failure
19
19
20
iothread.c | 14 ++++++++++++++
20
block/gluster.c | 3 +--
21
1 file changed, 14 insertions(+)
21
1 file changed, 1 insertion(+), 2 deletions(-)
22
22
23
--
23
--
24
2.9.3
24
2.9.3
25
25
26
26
diff view generated by jsdifflib
1
IOThread AioContexts are likely to consist only of event sources like
1
From: Peter Maydell <peter.maydell@linaro.org>
2
virtqueue ioeventfds and LinuxAIO completion eventfds that are pollable
3
from userspace (without system calls).
4
2
5
We recently merged the AioContext polling feature but didn't enable it
3
In qemu_gluster_parse_json(), the call to qdict_array_entries()
6
by default yet. I have gone back over the performance data on the
4
could return a negative error code, which we were ignoring
7
mailing list and picked a default polling value that gave good results.
5
because we assigned the result to an unsigned variable.
6
Fix this by using the 'int' type instead, which matches the
7
return type of qdict_array_entries() and also the type
8
we use for the loop enumeration variable 'i'.
8
9
9
Let's enable AioContext polling by default so users don't have another
10
(Spotted by Coverity, CID 1360960.)
10
switch they need to set manually. If performance regressions are found
11
we can still disable this for the QEMU 2.9 release.
12
11
13
Cc: Paolo Bonzini <pbonzini@redhat.com>
12
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
14
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
13
Reviewed-by: Eric Blake <eblake@redhat.com>
15
Cc: Karl Rister <krister@redhat.com>
14
Reviewed-by: Jeff Cody <jcody@redhat.com>
16
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
15
Message-id: 1496682098-1540-1-git-send-email-peter.maydell@linaro.org
17
Message-id: 20170126170119.27876-1-stefanha@redhat.com
16
Signed-off-by: Jeff Cody <jcody@redhat.com>
18
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
19
---
17
---
20
iothread.c | 14 ++++++++++++++
18
block/gluster.c | 3 +--
21
1 file changed, 14 insertions(+)
19
1 file changed, 1 insertion(+), 2 deletions(-)
22
20
23
diff --git a/iothread.c b/iothread.c
21
diff --git a/block/gluster.c b/block/gluster.c
24
index XXXXXXX..XXXXXXX 100644
22
index XXXXXXX..XXXXXXX 100644
25
--- a/iothread.c
23
--- a/block/gluster.c
26
+++ b/iothread.c
24
+++ b/block/gluster.c
27
@@ -XXX,XX +XXX,XX @@ typedef ObjectClass IOThreadClass;
25
@@ -XXX,XX +XXX,XX @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
28
#define IOTHREAD_CLASS(klass) \
26
Error *local_err = NULL;
29
OBJECT_CLASS_CHECK(IOThreadClass, klass, TYPE_IOTHREAD)
27
char *str = NULL;
30
28
const char *ptr;
31
+/* Benchmark results from 2016 on NVMe SSD drives show max polling times around
29
- size_t num_servers;
32
+ * 16-32 microseconds yield IOPS improvements for both iodepth=1 and iodepth=32
30
- int i, type;
33
+ * workloads.
31
+ int i, type, num_servers;
34
+ */
32
35
+#define IOTHREAD_POLL_MAX_NS_DEFAULT 32768ULL
33
/* create opts info from runtime_json_opts list */
36
+
34
opts = qemu_opts_create(&runtime_json_opts, NULL, 0, &error_abort);
37
static __thread IOThread *my_iothread;
38
39
AioContext *qemu_get_current_aio_context(void)
40
@@ -XXX,XX +XXX,XX @@ static int iothread_stop(Object *object, void *opaque)
41
return 0;
42
}
43
44
+static void iothread_instance_init(Object *obj)
45
+{
46
+ IOThread *iothread = IOTHREAD(obj);
47
+
48
+ iothread->poll_max_ns = IOTHREAD_POLL_MAX_NS_DEFAULT;
49
+}
50
+
51
static void iothread_instance_finalize(Object *obj)
52
{
53
IOThread *iothread = IOTHREAD(obj);
54
@@ -XXX,XX +XXX,XX @@ static const TypeInfo iothread_info = {
55
.parent = TYPE_OBJECT,
56
.class_init = iothread_class_init,
57
.instance_size = sizeof(IOThread),
58
+ .instance_init = iothread_instance_init,
59
.instance_finalize = iothread_instance_finalize,
60
.interfaces = (InterfaceInfo[]) {
61
{TYPE_USER_CREATABLE},
62
--
35
--
63
2.9.3
36
2.9.3
64
37
65
38
diff view generated by jsdifflib