All of lore.kernel.org
 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 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.