From: "Nicholas Piggin" <npiggin@gmail.com>
To: "Thomas Huth" <thuth@redhat.com>
Cc: <kvm@vger.kernel.org>, "Laurent Vivier" <lvivier@redhat.com>,
"Shaoqin Huang" <shahuang@redhat.com>,
"Andrew Jones" <andrew.jones@linux.dev>,
"Nico Boehr" <nrb@linux.ibm.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Alexandru Elisei" <alexandru.elisei@arm.com>,
"Eric Auger" <eric.auger@redhat.com>,
"Janosch Frank" <frankja@linux.ibm.com>,
"Claudio Imbrenda" <imbrenda@linux.ibm.com>,
"David Hildenbrand" <david@redhat.com>,
"Marc Hartmayer" <mhartmay@linux.ibm.com>,
<linuxppc-dev@lists.ozlabs.org>, <linux-s390@vger.kernel.org>
Subject: Re: [kvm-unit-tests PATCH 5/7] arch-run: Add a "continuous" migration option for tests
Date: Tue, 05 Mar 2024 12:47:54 +1000 [thread overview]
Message-ID: <CZLH23VYF085.2H710Q91HBR6A@wheely> (raw)
In-Reply-To: <6329dd4c-2093-40c3-8eb8-701d8e8b2ecd@redhat.com>
On Mon Mar 4, 2024 at 4:17 PM AEST, Thomas Huth wrote:
> On 26/02/2024 10.38, Nicholas Piggin wrote:
> > The cooperative migration protocol is very good to control precise
> > pre and post conditions for a migration event. However in some cases
> > its intrusiveness to the test program, can mask problems and make
> > analysis more difficult.
> >
> > For example to stress test migration vs concurrent complicated
> > memory access, including TLB refill, ram dirtying, etc., then the
> > tight spin at getchar() and resumption of the workload after
> > migration is unhelpful.
> >
> > This adds a continuous migration mode that directs the harness to
> > perform migrations continually. This is added to the migration
> > selftests, which also sees cooperative migration iterations reduced
> > to avoid increasing test time too much.
> >
> > Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> > ---
> > common/selftest-migration.c | 16 +++++++++--
> > lib/migrate.c | 18 ++++++++++++
> > lib/migrate.h | 3 ++
> > scripts/arch-run.bash | 55 ++++++++++++++++++++++++++++++++-----
> > 4 files changed, 82 insertions(+), 10 deletions(-)
> >
> > diff --git a/common/selftest-migration.c b/common/selftest-migration.c
> > index 0afd8581c..9a9b61835 100644
> > --- a/common/selftest-migration.c
> > +++ b/common/selftest-migration.c
> > @@ -9,12 +9,13 @@
> > */
> > #include <libcflat.h>
> > #include <migrate.h>
> > +#include <asm/time.h>
> >
> > -#define NR_MIGRATIONS 30
> > +#define NR_MIGRATIONS 15
> >
> > int main(int argc, char **argv)
> > {
> > - report_prefix_push("migration");
> > + report_prefix_push("migration harness");
> >
> > if (argc > 1 && !strcmp(argv[1], "skip")) {
> > migrate_skip();
> > @@ -24,7 +25,16 @@ int main(int argc, char **argv)
> >
> > for (i = 0; i < NR_MIGRATIONS; i++)
> > migrate_quiet();
> > - report(true, "simple harness stress");
> > + report(true, "cooperative migration");
> > +
> > + migrate_begin_continuous();
> > + mdelay(2000);
> > + migrate_end_continuous();
> > + mdelay(1000);
> > + migrate_begin_continuous();
> > + mdelay(2000);
> > + migrate_end_continuous();
> > + report(true, "continuous migration");
> > }
> >
> > report_prefix_pop();
> > diff --git a/lib/migrate.c b/lib/migrate.c
> > index 1d22196b7..770f76d5c 100644
> > --- a/lib/migrate.c
> > +++ b/lib/migrate.c
> > @@ -60,3 +60,21 @@ void migrate_skip(void)
> > puts("Skipped VM migration (quiet)\n");
> > (void)getchar();
> > }
> > +
> > +void migrate_begin_continuous(void)
> > +{
> > + puts("Begin continuous migration\n");
> > + (void)getchar();
> > +}
> > +
> > +void migrate_end_continuous(void)
> > +{
> > + /*
> > + * Migration can split this output between source and dest QEMU
> > + * output files, print twice and match once to always cope with
> > + * a split.
> > + */
> > + puts("End continuous migration\n");
> > + puts("End continuous migration (quiet)\n");
> > + (void)getchar();
> > +}
> > diff --git a/lib/migrate.h b/lib/migrate.h
> > index db6e0c501..35b6703a2 100644
> > --- a/lib/migrate.h
> > +++ b/lib/migrate.h
> > @@ -11,3 +11,6 @@ void migrate_quiet(void);
> > void migrate_once(void);
> >
> > void migrate_skip(void);
> > +
> > +void migrate_begin_continuous(void);
> > +void migrate_end_continuous(void);
> > diff --git a/scripts/arch-run.bash b/scripts/arch-run.bash
> > index d0f6f098f..5c7e72036 100644
> > --- a/scripts/arch-run.bash
> > +++ b/scripts/arch-run.bash
> > @@ -125,15 +125,17 @@ qmp_events ()
> > filter_quiet_msgs ()
> > {
> > grep -v "Now migrate the VM (quiet)" |
> > + grep -v "Begin continuous migration (quiet)" |
> > + grep -v "End continuous migration (quiet)" |
> > grep -v "Skipped VM migration (quiet)"
> > }
> >
> > seen_migrate_msg ()
> > {
> > if [ $skip_migration -eq 1 ]; then
> > - grep -q -e "Now migrate the VM" < $1
> > + grep -q -e "Now migrate the VM" -e "Begin continuous migration" < $1
> > else
> > - grep -q -e "Now migrate the VM" -e "Skipped VM migration" < $1
> > + grep -q -e "Now migrate the VM" -e "Begin continuous migration" -e "Skipped VM migration" < $1
> > fi
> > }
> >
> > @@ -161,6 +163,7 @@ run_migration ()
> > src_qmpout=/dev/null
> > dst_qmpout=/dev/null
> > skip_migration=0
> > + continuous_migration=0
> >
> > mkfifo ${src_outfifo}
> > mkfifo ${dst_outfifo}
> > @@ -186,9 +189,12 @@ run_migration ()
> > do_migration || return $?
> >
> > while ps -p ${live_pid} > /dev/null ; do
> > - # Wait for test exit or further migration messages.
> > - if ! seen_migrate_msg ${src_out} ; then
> > + if [[ ${continuous_migration} -eq 1 ]] ; then
>
> Here you're using "[[" for testing ...
>
> > + do_migration || return $?
> > + elif ! seen_migrate_msg ${src_out} ; then
> > sleep 0.1
> > + elif grep -q "Begin continuous migration" < ${src_out} ; then
> > + do_migration || return $?
> > elif grep -q "Now migrate the VM" < ${src_out} ; then
> > do_migration || return $?
> > elif [ $skip_migration -eq 0 ] && grep -q "Skipped VM migration" < ${src_out} ; then
>
> ... while the other code seems to use "[" for testing values. Can we try to
> stick to one style, please (unless it's really required to use "[[" somewhere)?
Good point. Will do.
Thanks,
Nick
next prev parent reply other threads:[~2024-03-05 2:48 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-26 9:38 [kvm-unit-tests PATCH 0/7] more migration enhancements and tests Nicholas Piggin
2024-02-26 9:38 ` [kvm-unit-tests PATCH 1/7] arch-run: Keep infifo open Nicholas Piggin
2024-03-01 13:32 ` Thomas Huth
2024-03-05 2:21 ` Nicholas Piggin
2024-02-26 9:38 ` [kvm-unit-tests PATCH 2/7] migration: Add a migrate_skip command Nicholas Piggin
2024-03-04 6:05 ` Thomas Huth
2024-02-26 9:38 ` [kvm-unit-tests PATCH 3/7] (arm|s390): Use migrate_skip in test cases Nicholas Piggin
2024-03-01 13:49 ` Thomas Huth
2024-02-26 9:38 ` [kvm-unit-tests PATCH 4/7] powerpc: add asm/time.h header with delay and get_clock_us/ms Nicholas Piggin
2024-03-01 14:05 ` Thomas Huth
2024-02-26 9:38 ` [kvm-unit-tests PATCH 5/7] arch-run: Add a "continuous" migration option for tests Nicholas Piggin
2024-03-04 6:17 ` Thomas Huth
2024-03-04 9:19 ` Andrew Jones
2024-03-05 2:58 ` Nicholas Piggin
2024-03-05 2:47 ` Nicholas Piggin [this message]
2024-02-26 9:38 ` [kvm-unit-tests PATCH 6/7] gitlab-ci: Run migration selftest on s390x and powerpc Nicholas Piggin
2024-03-01 14:16 ` Thomas Huth
2024-03-05 2:38 ` Nicholas Piggin
2024-03-05 6:50 ` Thomas Huth
2024-02-26 9:38 ` [kvm-unit-tests PATCH 7/7] common: add memory dirtying vs migration test Nicholas Piggin
2024-03-04 6:22 ` Thomas Huth
2024-03-05 2:50 ` Nicholas Piggin
2024-03-05 6:52 ` Thomas Huth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CZLH23VYF085.2H710Q91HBR6A@wheely \
--to=npiggin@gmail.com \
--cc=alexandru.elisei@arm.com \
--cc=andrew.jones@linux.dev \
--cc=david@redhat.com \
--cc=eric.auger@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lvivier@redhat.com \
--cc=mhartmay@linux.ibm.com \
--cc=nrb@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=shahuang@redhat.com \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox