qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/1] migration: calculate expected_downtime cons


From: Juan Quintela
Subject: Re: [Qemu-devel] [PATCH 1/1] migration: calculate expected_downtime considering redirtied ram
Date: Wed, 23 Jan 2019 17:35:03 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

address@hidden wrote:
> From: Balamuruhan S <address@hidden>
>
> currently we calculate expected_downtime by time taken to transfer
> remaining ram, but during the time we had transferred remaining ram
> few pages of ram might be redirtied and we need to retransfer it,
> so it is better to consider them for calculating expected_downtime
> for getting more accurate values.
>
> Total ram to be transferred = remaining ram + (redirtied ram at the
>                                                time when the remaining
>                                                ram gets transferred)
>
> redirtied ram = dirty_pages_rate * time taken to transfer remaining ram
>
> redirtied ram = dirty_pages_rate * (remaining ram / bandwidth)
>
> expected_downtime = (remaining ram + redirtied ram) / bandwidth
>
> Suggested-by: David Gibson <address@hidden>
> Suggested-by: Dr. David Alan Gilbert <address@hidden>
> Signed-off-by: Balamuruhan S <address@hidden>
> ---
>  migration/migration.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index ffc4d9e556..dc38e9a380 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -2903,7 +2903,13 @@ static void migration_update_counters(MigrationState 
> *s,
>       * recalculate. 10000 is a small enough number for our purposes
>       */
>      if (ram_counters.dirty_pages_rate && transferred > 10000) {
> -        s->expected_downtime = ram_counters.remaining / bandwidth;
> +        /* Time required to transfer remaining ram */
> +        remaining_ram_transfer_time = ram_counters.remaining / bandwidth

missing semicolon

> +
> +        /* redirty of ram at the time remaining ram gets transferred*/
> +        newly_dirtied_ram = ram_counters.dirty_pages_rate * 
> remaining_ram_transfer_time

the same.

Declaration of the new variables is also missing.

> +        s->expected_downtime = (ram_counters.remaining + newly_dirtied_ram) 
> / bandwidth;
>      }
>  
>      qemu_file_reset_rate_limit(s->to_dst_file);

About the numbers, I am not against it.  It is an heuristic.  Without
numbers (and it is very load dependent) it is not clear that this one is
going to be much worse/better than previous one (this should be a bit
better, though).

Thanks, Juan.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]