From: <darkhan@amazon.com>
To: <pbonzini@redhat.com>
Cc: <kvm@vger.kernel.org>, <corbet@lwn.net>, <maz@kernel.org>,
<james.morse@arm.com>, <catalin.marinas@arm.com>,
<chenhc@lemote.com>, <paulus@ozlabs.org>, <frankja@linux.ibm.com>,
<mingo@redhat.com>, <acme@redhat.com>, <graf@amazon.de>,
<darkhan@amazon.de>, Darkhan Mukashov <darkhan@amazon.com>
Subject: [PATCH 0/3] Introduce new vcpu ioctls KVM_(GET|SET)_MANY_REGS
Date: Fri, 20 Nov 2020 13:56:13 +0100 [thread overview]
Message-ID: <20201120125616.14436-1-darkhan@amazon.com> (raw)
From: Darkhan Mukashov <darkhan@amazon.com>
The ultimate goal is to introduce new vcpu ioctls KVM_(GET|SET)_MANY_REGS.
To introduce these ioctls, implementations of KVM_(GET|SET)_ONE_REG have
to be refactored. Specifically, KVM_(GET|SET)_ONE_REG should be handled in
a generic kvm_vcpu_ioctl function.
New KVM APIs KVM_(GET|SET)_MANY_REGS make it possible to bulk read/write
vCPU registers at one ioctl call. These ioctls can be very useful when
vCPU state serialization/deserialization is required (e.g. live update of
kvm, live migration of guests), hence all registers have to be
saved/restored. KVM_(GET|SET)_MANY_REGS will help avoid performance
overhead associated with syscall (ioctl in our case) handling. Tests
conducted on AWS Graviton2 Processors (64-bit ARM Neoverse cores) show
that average save/restore time of all vCPU registers can be optimized
~3.5 times per vCPU with new ioctls. Test results can be found in Table 1.
+---------+-------------+---------------+
| | kvm_one_reg | kvm_many_regs |
+---------+-------------+---------------+
| get all | 123 usec | 33 usec |
+---------+-------------+---------------+
| set all | 120 usec | 36 usec |
+---------+-------------+---------------+
Table 1. Test results
The patches are based out of kvm/queue.
Darkhan Mukashov (3):
Documentation: KVM: change description of vcpu ioctls
KVM_(GET|SET)_ONE_REG
KVM: handle vcpu ioctls KVM_(GET|SET)_ONE_REG in a generic function
KVM: introduce new vcpu ioctls KVM_GET_MANY_REGS and KVM_SET_MANY_REGS
Documentation/virt/kvm/api.rst | 80 ++++++++++++++++++++++++++++--
arch/arm64/include/asm/kvm_host.h | 5 +-
arch/arm64/kvm/arm.c | 25 +++-------
arch/arm64/kvm/guest.c | 6 ++-
arch/mips/include/asm/kvm_host.h | 6 +++
arch/mips/kvm/mips.c | 32 ++++++------
arch/powerpc/include/asm/kvm_ppc.h | 2 -
arch/powerpc/kvm/powerpc.c | 20 ++------
arch/s390/include/asm/kvm_host.h | 6 +++
arch/s390/kvm/kvm-s390.c | 38 +++++++-------
arch/x86/kvm/x86.c | 12 +++++
include/linux/kvm_host.h | 18 +++++++
include/uapi/linux/kvm.h | 11 ++++
virt/kvm/kvm_main.c | 62 +++++++++++++++++++++++
14 files changed, 244 insertions(+), 79 deletions(-)
--
2.17.1
next reply other threads:[~2020-11-20 12:56 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-20 12:56 darkhan [this message]
2020-11-20 12:56 ` [PATCH 1/3] Documentation: KVM: change description of vcpu ioctls KVM_(GET|SET)_ONE_REG darkhan
2020-11-20 12:56 ` [PATCH 2/3] KVM: handle vcpu ioctls KVM_(GET|SET)_ONE_REG in a generic function darkhan
2020-11-20 12:56 ` [PATCH 3/3] KVM: introduce new vcpu ioctls KVM_GET_MANY_REGS and KVM_SET_MANY_REGS darkhan
2020-11-23 11:39 ` [PATCH 0/3] Introduce new vcpu ioctls KVM_(GET|SET)_MANY_REGS Marc Zyngier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201120125616.14436-1-darkhan@amazon.com \
--to=darkhan@amazon.com \
--cc=acme@redhat.com \
--cc=catalin.marinas@arm.com \
--cc=chenhc@lemote.com \
--cc=corbet@lwn.net \
--cc=darkhan@amazon.de \
--cc=frankja@linux.ibm.com \
--cc=graf@amazon.de \
--cc=james.morse@arm.com \
--cc=kvm@vger.kernel.org \
--cc=maz@kernel.org \
--cc=mingo@redhat.com \
--cc=paulus@ozlabs.org \
--cc=pbonzini@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.