diff mbox series

KVM: selftests: memslot_perf_test: increase guest sync timeout

Message ID 20241004220153.287459-1-mlevitsk@redhat.com (mailing list archive)
State New, archived
Headers show
Series KVM: selftests: memslot_perf_test: increase guest sync timeout | expand

Commit Message

Maxim Levitsky Oct. 4, 2024, 10:01 p.m. UTC
When memslot_perf_test is run nested, first iteration of test_memslot_rw_loop
testcase, sometimes takes more than 2 seconds due to build of shadow page tables.

Following iterations are fast.

To be on the safe side, bump the timeout to 10 seconds.

Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
---
 tools/testing/selftests/kvm/memslot_perf_test.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Liam Merwick Oct. 7, 2024, 2:02 p.m. UTC | #1
On 04/10/2024 23:01, Maxim Levitsky wrote:
> When memslot_perf_test is run nested, first iteration of test_memslot_rw_loop
> testcase, sometimes takes more than 2 seconds due to build of shadow page tables.
> 
> Following iterations are fast.
> 
> To be on the safe side, bump the timeout to 10 seconds.
> 
> Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>

I see the issue without this fix.

Tested-by: Liam Merwick <liam.merwick@oracle.com>
Reviewed-by: Liam Merwick <liam.merwick@oracle.com>


> ---
>   tools/testing/selftests/kvm/memslot_perf_test.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/testing/selftests/kvm/memslot_perf_test.c b/tools/testing/selftests/kvm/memslot_perf_test.c
> index 893366982f77b..e9189cbed4bb6 100644
> --- a/tools/testing/selftests/kvm/memslot_perf_test.c
> +++ b/tools/testing/selftests/kvm/memslot_perf_test.c
> @@ -415,7 +415,7 @@ static bool _guest_should_exit(void)
>    */
>   static noinline void host_perform_sync(struct sync_area *sync)
>   {
> -	alarm(2);
> +	alarm(10);
>   
>   	atomic_store_explicit(&sync->sync_flag, true, memory_order_release);
>   	while (atomic_load_explicit(&sync->sync_flag, memory_order_acquire))
Sean Christopherson Oct. 9, 2024, 2:58 p.m. UTC | #2
On Fri, 04 Oct 2024 18:01:53 -0400, Maxim Levitsky wrote:
> When memslot_perf_test is run nested, first iteration of test_memslot_rw_loop
> testcase, sometimes takes more than 2 seconds due to build of shadow page tables.
> 
> Following iterations are fast.
> 
> To be on the safe side, bump the timeout to 10 seconds.
> 
> [...]

Nice timing (lol), the alarm can also fire spuriously when running selftests
on a loaded arm64 host.

Applied to kvm-x86 fixes, thanks!

[1/1] KVM: selftests: memslot_perf_test: increase guest sync timeout
      https://github.com/kvm-x86/linux/commit/7d4e28327d7e

--
https://github.com/kvm-x86/linux/tree/next
Sean Christopherson Nov. 5, 2024, 5:55 a.m. UTC | #3
On Wed, Oct 09, 2024, Sean Christopherson wrote:
> On Fri, 04 Oct 2024 18:01:53 -0400, Maxim Levitsky wrote:
> > When memslot_perf_test is run nested, first iteration of test_memslot_rw_loop
> > testcase, sometimes takes more than 2 seconds due to build of shadow page tables.
> > 
> > Following iterations are fast.
> > 
> > To be on the safe side, bump the timeout to 10 seconds.
> > 
> > [...]
> 
> Nice timing (lol), the alarm can also fire spuriously when running selftests
> on a loaded arm64 host.
> 
> Applied to kvm-x86 fixes, thanks!
> 
> [1/1] KVM: selftests: memslot_perf_test: increase guest sync timeout
>       https://github.com/kvm-x86/linux/commit/7d4e28327d7e

FYI, I rebased "fixes" onto 6.12-rc5 to avoid conflicts in other patches, new hash:

[1/1] KVM: selftests: memslot_perf_test: increase guest sync timeout
      https://github.com/kvm-x86/linux/commit/2d0f2a648147

FWIW, I am planning on getting this to Paolo in time for -rc7.
diff mbox series

Patch

diff --git a/tools/testing/selftests/kvm/memslot_perf_test.c b/tools/testing/selftests/kvm/memslot_perf_test.c
index 893366982f77b..e9189cbed4bb6 100644
--- a/tools/testing/selftests/kvm/memslot_perf_test.c
+++ b/tools/testing/selftests/kvm/memslot_perf_test.c
@@ -415,7 +415,7 @@  static bool _guest_should_exit(void)
  */
 static noinline void host_perform_sync(struct sync_area *sync)
 {
-	alarm(2);
+	alarm(10);
 
 	atomic_store_explicit(&sync->sync_flag, true, memory_order_release);
 	while (atomic_load_explicit(&sync->sync_flag, memory_order_acquire))