mirror of
https://github.com/mii443/qemu.git
synced 2025-12-03 11:08:25 +00:00
arm/kvm: Enable support for KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE
Now that we have Eager Page Split support added for ARM in the kernel, enable it in Qemu. This adds, -eager-split-size to -accel sub-options to set the eager page split chunk size. -enable KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE. The chunk size specifies how many pages to break at a time, using a single allocation. Bigger the chunk size, more pages need to be allocated ahead of time. Reviewed-by: Gavin Shan <gshan@redhat.com> Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com> Message-id: 20230905091246.1931-1-shameerali.kolothum.thodi@huawei.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
committed by
Peter Maydell
parent
d03396a8bb
commit
c8f2eb5d41
@@ -186,6 +186,7 @@ DEF("accel", HAS_ARG, QEMU_OPTION_accel,
|
||||
" split-wx=on|off (enable TCG split w^x mapping)\n"
|
||||
" tb-size=n (TCG translation block cache size)\n"
|
||||
" dirty-ring-size=n (KVM dirty ring GFN count, default 0)\n"
|
||||
" eager-split-size=n (KVM Eager Page Split chunk size, default 0, disabled. ARM only)\n"
|
||||
" notify-vmexit=run|internal-error|disable,notify-window=n (enable notify VM exit and set notify window, x86 only)\n"
|
||||
" thread=single|multi (enable multi-threaded TCG)\n", QEMU_ARCH_ALL)
|
||||
SRST
|
||||
@@ -244,6 +245,20 @@ SRST
|
||||
is disabled (dirty-ring-size=0). When enabled, KVM will instead
|
||||
record dirty pages in a bitmap.
|
||||
|
||||
``eager-split-size=n``
|
||||
KVM implements dirty page logging at the PAGE_SIZE granularity and
|
||||
enabling dirty-logging on a huge-page requires breaking it into
|
||||
PAGE_SIZE pages in the first place. KVM on ARM does this splitting
|
||||
lazily by default. There are performance benefits in doing huge-page
|
||||
split eagerly, especially in situations where TLBI costs associated
|
||||
with break-before-make sequences are considerable and also if guest
|
||||
workloads are read intensive. The size here specifies how many pages
|
||||
to break at a time and needs to be a valid block size which is
|
||||
1GB/2MB/4KB, 32MB/16KB and 512MB/64KB for 4KB/16KB/64KB PAGE_SIZE
|
||||
respectively. Be wary of specifying a higher size as it will have an
|
||||
impact on the memory. By default, this feature is disabled
|
||||
(eager-split-size=0).
|
||||
|
||||
``notify-vmexit=run|internal-error|disable,notify-window=n``
|
||||
Enables or disables notify VM exit support on x86 host and specify
|
||||
the corresponding notify window to trigger the VM exit if enabled.
|
||||
|
||||
Reference in New Issue
Block a user