-----BEGIN PGP SIGNATURE-----

iQEcBAABAgAGBQJYlJW5AAoJEJykq7OBq3PIrfwIAL5Z9eMJEYsQwTSxsZE/XTxZ
 o0UD+BnZtOLgL+wIMpScm3eYF/ojeaQ4nH52POOxdYcwOTh9y4yEIPA5bL76Cqtf
 6XMtoupDnHMxgHasyCyTMcJLKXDr9VJJco+7OMk5h2HMTK4sq496MJDHVRi12vvZ
 n/u79ncr/2VyycIPukfL8ceUv+Vzj105CugjOLJyN8hPvNS8wVeAuT5idY8vzuew
 SXnrgGLXEVmNA7dq819dWJp3OlZEphsSeEcuGEktp9Fn5Q6px37AoUeXwo41Miyk
 LtTyZZKtTOLhuB+j/5xsItQpqE8p9aUNtAoleEK4v5SyK7VDDnNS4nfUSz+PCUs=
 =Bjr+
 -----END PGP SIGNATURE-----

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>
master
Peter Maydell 2017-02-03 14:41:48 +00:00
commit a951316b8a
1 changed files with 14 additions and 0 deletions

View File

@ -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},