mbox series

[0/6] KVM: selftests: Perf test cleanups and memslot modification test

Message ID 20210112214253.463999-1-bgardon@google.com (mailing list archive)
Headers show
Series KVM: selftests: Perf test cleanups and memslot modification test | expand

Message

Ben Gardon Jan. 12, 2021, 9:42 p.m. UTC
This series contains a few cleanups that didn't make it into previous
series, including some cosmetic changes and small bug fixes. The series
also lays the groundwork for a memslot modification test which stresses
the memslot update and page fault code paths in an attempt to expose races.

Tested: dirty_log_perf_test, memslot_modification_stress_test, and
	demand_paging_test were run, with all the patches in this series
	applied, on an Intel Skylake machine.

	echo Y > /sys/module/kvm/parameters/tdp_mmu; \
	./memslot_modification_stress_test -i 1000 -v 64 -b 1G; \
	./memslot_modification_stress_test -i 1000 -v 64 -b 64M -o; \
	./dirty_log_perf_test -v 64 -b 1G; \
	./dirty_log_perf_test -v 64 -b 64M -o; \
	./demand_paging_test -v 64 -b 1G; \
	./demand_paging_test -v 64 -b 64M -o; \
	echo N > /sys/module/kvm/parameters/tdp_mmu; \
	./memslot_modification_stress_test -i 1000 -v 64 -b 1G; \
	./memslot_modification_stress_test -i 1000 -v 64 -b 64M -o; \
	./dirty_log_perf_test -v 64 -b 1G; \
	./dirty_log_perf_test -v 64 -b 64M -o; \
	./demand_paging_test -v 64 -b 1G; \
	./demand_paging_test -v 64 -b 64M -o

	The tests behaved as expected, and fixed the problem of the
	population stage being skipped in dirty_log_perf_test. This can be
	seen in the output, with the population stage taking about the time
	dirty pass 1 took and dirty pass 1 falling closer to the times for
	the other passes.

Note that when running these tests, the -o option causes the test to take
much longer as the work each vCPU must do increases proportional to the
number of vCPUs.

You can view this series in Gerrit at:
https://linux-review.googlesource.com/c/linux/kernel/git/torvalds/linux/+/7216

Ben Gardon (6):
  KVM: selftests: Rename timespec_diff_now to timespec_elapsed
  KVM: selftests: Avoid flooding debug log while populating memory
  KVM: selftests: Convert iterations to int in dirty_log_perf_test
  KVM: selftests: Fix population stage in dirty_log_perf_test
  KVM: selftests: Add option to overlap vCPU memory access
  KVM: selftests: Add memslot modification stress test

 tools/testing/selftests/kvm/.gitignore        |   1 +
 tools/testing/selftests/kvm/Makefile          |   1 +
 .../selftests/kvm/demand_paging_test.c        |  40 +++-
 .../selftests/kvm/dirty_log_perf_test.c       |  72 +++---
 .../selftests/kvm/include/perf_test_util.h    |   4 +-
 .../testing/selftests/kvm/include/test_util.h |   2 +-
 .../selftests/kvm/lib/perf_test_util.c        |  25 ++-
 tools/testing/selftests/kvm/lib/test_util.c   |   2 +-
 .../kvm/memslot_modification_stress_test.c    | 211 ++++++++++++++++++
 9 files changed, 307 insertions(+), 51 deletions(-)
 create mode 100644 tools/testing/selftests/kvm/memslot_modification_stress_test.c

Comments

Paolo Bonzini Jan. 18, 2021, 6:18 p.m. UTC | #1
On 12/01/21 22:42, Ben Gardon wrote:
> This series contains a few cleanups that didn't make it into previous
> series, including some cosmetic changes and small bug fixes. The series
> also lays the groundwork for a memslot modification test which stresses
> the memslot update and page fault code paths in an attempt to expose races.
> 
> Tested: dirty_log_perf_test, memslot_modification_stress_test, and
> 	demand_paging_test were run, with all the patches in this series
> 	applied, on an Intel Skylake machine.
> 
> 	echo Y > /sys/module/kvm/parameters/tdp_mmu; \
> 	./memslot_modification_stress_test -i 1000 -v 64 -b 1G; \
> 	./memslot_modification_stress_test -i 1000 -v 64 -b 64M -o; \
> 	./dirty_log_perf_test -v 64 -b 1G; \
> 	./dirty_log_perf_test -v 64 -b 64M -o; \
> 	./demand_paging_test -v 64 -b 1G; \
> 	./demand_paging_test -v 64 -b 64M -o; \
> 	echo N > /sys/module/kvm/parameters/tdp_mmu; \
> 	./memslot_modification_stress_test -i 1000 -v 64 -b 1G; \
> 	./memslot_modification_stress_test -i 1000 -v 64 -b 64M -o; \
> 	./dirty_log_perf_test -v 64 -b 1G; \
> 	./dirty_log_perf_test -v 64 -b 64M -o; \
> 	./demand_paging_test -v 64 -b 1G; \
> 	./demand_paging_test -v 64 -b 64M -o
> 
> 	The tests behaved as expected, and fixed the problem of the
> 	population stage being skipped in dirty_log_perf_test. This can be
> 	seen in the output, with the population stage taking about the time
> 	dirty pass 1 took and dirty pass 1 falling closer to the times for
> 	the other passes.
> 
> Note that when running these tests, the -o option causes the test to take
> much longer as the work each vCPU must do increases proportional to the
> number of vCPUs.
> 
> You can view this series in Gerrit at:
> https://linux-review.googlesource.com/c/linux/kernel/git/torvalds/linux/+/7216
> 
> Ben Gardon (6):
>    KVM: selftests: Rename timespec_diff_now to timespec_elapsed
>    KVM: selftests: Avoid flooding debug log while populating memory
>    KVM: selftests: Convert iterations to int in dirty_log_perf_test
>    KVM: selftests: Fix population stage in dirty_log_perf_test
>    KVM: selftests: Add option to overlap vCPU memory access
>    KVM: selftests: Add memslot modification stress test
> 
>   tools/testing/selftests/kvm/.gitignore        |   1 +
>   tools/testing/selftests/kvm/Makefile          |   1 +
>   .../selftests/kvm/demand_paging_test.c        |  40 +++-
>   .../selftests/kvm/dirty_log_perf_test.c       |  72 +++---
>   .../selftests/kvm/include/perf_test_util.h    |   4 +-
>   .../testing/selftests/kvm/include/test_util.h |   2 +-
>   .../selftests/kvm/lib/perf_test_util.c        |  25 ++-
>   tools/testing/selftests/kvm/lib/test_util.c   |   2 +-
>   .../kvm/memslot_modification_stress_test.c    | 211 ++++++++++++++++++
>   9 files changed, 307 insertions(+), 51 deletions(-)
>   create mode 100644 tools/testing/selftests/kvm/memslot_modification_stress_test.c
> 

Queued, thanks.

Paolo