diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2017-02-03 14:41:48 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2017-02-03 14:41:49 +0000 |
commit | a951316b8a5c3c63254f20a826afeed940dd4cba (patch) | |
tree | 1aa7d07d263b705c790a3c9a3d1a1fc5c9b273f9 | |
parent | 4100a344eb3d50d88f9da85cae334afc47aee134 (diff) | |
parent | cdd7abfdba9287a289c404dfdcb02316f9ffee7d (diff) |
Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging
# gpg: Signature made Fri 03 Feb 2017 14:37:45 GMT
# gpg: using RSA key 0x9CA4ABB381AB73C8
# gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>"
# gpg: aka "Stefan Hajnoczi <stefanha@gmail.com>"
# Primary key fingerprint: 8695 A8BF D3F9 7CDA AC35 775A 9CA4 ABB3 81AB 73C8
* remotes/stefanha/tags/block-pull-request:
iothread: enable AioContext polling by default
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | iothread.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/iothread.c b/iothread.c index 7bedde87e9..257b01d5f1 100644 --- a/iothread.c +++ b/iothread.c @@ -30,6 +30,12 @@ typedef ObjectClass IOThreadClass; #define IOTHREAD_CLASS(klass) \ OBJECT_CLASS_CHECK(IOThreadClass, klass, TYPE_IOTHREAD) +/* Benchmark results from 2016 on NVMe SSD drives show max polling times around + * 16-32 microseconds yield IOPS improvements for both iodepth=1 and iodepth=32 + * workloads. + */ +#define IOTHREAD_POLL_MAX_NS_DEFAULT 32768ULL + static __thread IOThread *my_iothread; AioContext *qemu_get_current_aio_context(void) @@ -71,6 +77,13 @@ static int iothread_stop(Object *object, void *opaque) return 0; } +static void iothread_instance_init(Object *obj) +{ + IOThread *iothread = IOTHREAD(obj); + + iothread->poll_max_ns = IOTHREAD_POLL_MAX_NS_DEFAULT; +} + static void iothread_instance_finalize(Object *obj) { IOThread *iothread = IOTHREAD(obj); @@ -215,6 +228,7 @@ static const TypeInfo iothread_info = { .parent = TYPE_OBJECT, .class_init = iothread_class_init, .instance_size = sizeof(IOThread), + .instance_init = iothread_instance_init, .instance_finalize = iothread_instance_finalize, .interfaces = (InterfaceInfo[]) { {TYPE_USER_CREATABLE}, |