On Tue, Sep 20, 2022 at 08:47:20PM -0400, Peter Xu wrote: > On Tue, Sep 20, 2022 at 06:52:27PM -0400, Peter Xu wrote: > > With the new code to send pages in rp-return thread, there's little help to > > keep lots of the old code on maintaining the preempt state in migration > > thread, because the new way should always be faster.. > > > > Then if we'll always send pages in the rp-return thread anyway, we don't > > need those logic to maintain preempt state anymore because now we serialize > > things using the mutex directly instead of using those fields. > > > > It's very unfortunate to have those code for a short period, but that's > > still one intermediate step that we noticed the next bottleneck on the > > migration thread. Now what we can do best is to drop unnecessary code as > > long as the new code is stable to reduce the burden. It's actually a good > > thing because the new "sending page in rp-return thread" model is (IMHO) > > even cleaner and with better performance. > > > > Remove the old code that was responsible for maintaining preempt states, at > > the meantime also remove x-postcopy-preempt-break-huge parameter because > > with concurrent sender threads we don't really need to break-huge anymore. > > > > Signed-off-by: Peter Xu > > --- > > migration/migration.c | 2 - > > migration/ram.c | 258 +----------------------------------------- > > 2 files changed, 3 insertions(+), 257 deletions(-) > > > > diff --git a/migration/migration.c b/migration/migration.c > > index fae8fd378b..698fd94591 100644 > > --- a/migration/migration.c > > +++ b/migration/migration.c > > @@ -4399,8 +4399,6 @@ static Property migration_properties[] = { > > DEFINE_PROP_SIZE("announce-step", MigrationState, > > parameters.announce_step, > > DEFAULT_MIGRATE_ANNOUNCE_STEP), > > - DEFINE_PROP_BOOL("x-postcopy-preempt-break-huge", MigrationState, > > - postcopy_preempt_break_huge, true), > > Forgot to drop the variable altogether: > > diff --git a/migration/migration.h b/migration/migration.h > index cdad8aceaa..ae4ffd3454 100644 > --- a/migration/migration.h > +++ b/migration/migration.h > @@ -340,13 +340,6 @@ struct MigrationState { > bool send_configuration; > /* Whether we send section footer during migration */ > bool send_section_footer; > - /* > - * Whether we allow break sending huge pages when postcopy preempt is > - * enabled. When disabled, we won't interrupt precopy within sending a > - * host huge page, which is the old behavior of vanilla postcopy. > - * NOTE: this parameter is ignored if postcopy preempt is not enabled. > - */ > - bool postcopy_preempt_break_huge; > > /* Needed by postcopy-pause state */ > QemuSemaphore postcopy_pause_sem; > > Will squash this in in next version. Two more varialbes to drop, as attached.. -- Peter Xu