Kernel KVM virtualization development
 help / color / mirror / Atom feed
* [PATCH v2 0/5] KVM: selftests: Add support for dirty-ring on dirty_log_perf_test
@ 2026-10-09 13:00 Leonardo Bras
  2026-10-09 13:00 ` [PATCH v2 1/5] KVM: selftests: memstress: Add struct memstress_params, make memstress_create_vm() use it Leonardo Bras
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Leonardo Bras @ 2026-10-09 13:00 UTC (permalink / raw)
  To: Sean Christopherson, Paolo Bonzini, Shuah Khan, David Matlack,
	Yosry Ahmed, Marc Zyngier, Fuad Tabba, Oliver Upton,
	Leonardo Bras, Ackerley Tng, Josh Hilke, Wu Fei, Steffen Eiden,
	Claudio Imbrenda
  Cc: kvm, linux-kselftest, linux-kernel

Add support to dirty-ring on dirty_log_perf_test, so we can measure
performance differences when we change / improve the mechanism.

One big change in this set is that dirty-ring needs to be enabled
after the VM was created, but before any cpu is created, so for that,
I made a few changes on memstress so it can actually take dirty-ring
size as a parameter for VM creation. (Patches #1 & #2)

Also added some checks in dirty-ring enable, so an error message on
ring size is more informative.

Please provide feedback :)

Thanks!
Leo

Changes since v1: 
- Converted memstress to take a memstress_params struct instead of a lot of 
  parameters, so it could be more easily extended in the future (Sean)
- Moved dirty-ring cap detection to a helper, so it could be used instead 
  of open-coded options (Sean)
- Improved the error messages in case the dirty-ring fails to setup, with
  a more specific message on what went wrong (Sean)
Link: https://lore.kernel.org/all/20260929113711.2064390-1-leo.bras@arm.com/

Changes since RFCv4:
- Series title 
- Rebase on v7.3-rc5
Link: https://lore.kernel.org/all/20260729161519.3778839-2-leo.bras@arm.com/

- Using acquire/release barriers to make sure there is no reorder between
  incrementing iteration and summing the time spent on cleaning.
- Improved ring-size checks, although not perfect due to reserved entries
  affecting minimum size.
- Do not allocate bitmaps for dirty-ring tests, as they are unused.
- Improve help text
- Make sure ret==0 before going back to vcpu_run in dirty-ring case
Link: https://lore.kernel.org/all/20260708152232.2568907-1-leo.bras@arm.com/

Changes since RFCv2:
- Added mutex to make sure only a single vcpu is 
  collecting/cleaning at a time. This gets us the ability to
  test return values, and not account for kvm.slot_lock waiting time.
- Stuff reported by Sashiko
  - Return value always positive, so assert was pointless
  - Concurrency inflating the time for dirty-ring cleaning
Link: https://lore.kernel.org/all/20260629105950.1790259-1-leo.bras@arm.com/

Changes since RFCv1:
- Stuff reported by Sashiko
  - Fixed elements / byte size wrapping issue
  - Removed element count due to concurrency
  - Testing exit_reason instead of ioctl return value
  - Some nits
Link: https://lore.kernel.org/all/20260624171656.1737580-1-leo.bras@arm.com/

Leonardo Bras (5):
  KVM: selftests: memstress: Add struct memstress_params, make
    memstress_create_vm() use it
  KVM: selftests: memstress: Add option to enable dirty-ring on VM
    creation
  KVM: selftests: Introduce kvm_get_dirty_ring_cap()
  KVM: selftests: Check dirty-ring size before enabling
  KVM: selftests: dirty_log_perf_test: Add dirty-ring support

 .../testing/selftests/kvm/include/kvm_util.h  |  11 ++
 .../testing/selftests/kvm/include/memstress.h |  15 +-
 .../selftests/kvm/access_tracking_perf_test.c |  12 +-
 .../selftests/kvm/demand_paging_test.c        |  12 +-
 .../selftests/kvm/dirty_log_perf_test.c       | 140 ++++++++++++++++--
 tools/testing/selftests/kvm/dirty_log_test.c  |   3 +-
 tools/testing/selftests/kvm/lib/kvm_util.c    |  20 ++-
 tools/testing/selftests/kvm/lib/memstress.c   |  68 +++++----
 .../kvm/memslot_modification_stress_test.c    |  14 +-
 .../kvm/x86/dirty_log_page_splitting_test.c   |  12 +-
 10 files changed, 247 insertions(+), 60 deletions(-)


base-commit: a90ee4305c4a5df72c11b31dacfdc76e00fcf78a
-- 
2.55.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-10-09 13:11 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-09 13:00 [PATCH v2 0/5] KVM: selftests: Add support for dirty-ring on dirty_log_perf_test Leonardo Bras
2026-10-09 13:00 ` [PATCH v2 1/5] KVM: selftests: memstress: Add struct memstress_params, make memstress_create_vm() use it Leonardo Bras
2026-10-09 13:00 ` [PATCH v2 2/5] KVM: selftests: memstress: Add option to enable dirty-ring on VM creation Leonardo Bras
2026-10-09 13:11   ` sashiko-bot
2026-10-09 13:00 ` [PATCH v2 3/5] KVM: selftests: Introduce kvm_get_dirty_ring_cap() Leonardo Bras
2026-10-09 13:00 ` [PATCH v2 4/5] KVM: selftests: Check dirty-ring size before enabling Leonardo Bras
2026-10-09 13:00 ` [PATCH v2 5/5] KVM: selftests: dirty_log_perf_test: Add dirty-ring support Leonardo Bras

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox