diff mbox

[5/7] Only calculate expected_time for stage 2

Message ID 312d2b7b78326039b1554a9e2a4573c1f6c9d0c3.1337710679.git.quintela@redhat.com
State New
Headers show

Commit Message

Juan Quintela May 22, 2012, 6:32 p.m. UTC
ram_save_remaining() is an expensive operation when there is a lot of memory.
So we only call the function when we need it.

Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 arch_init.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

Comments

Orit Wasserman June 14, 2012, 11:31 a.m. UTC | #1
On 05/22/2012 09:32 PM, Juan Quintela wrote:
> ram_save_remaining() is an expensive operation when there is a lot of memory.
> So we only call the function when we need it.
> 
> Signed-off-by: Juan Quintela <quintela@redhat.com>
> ---
>  arch_init.c |   10 ++++++----
>  1 files changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/arch_init.c b/arch_init.c
> index 988adca..76a3d4e 100644
> --- a/arch_init.c
> +++ b/arch_init.c
> @@ -295,7 +295,6 @@ int ram_save_live(QEMUFile *f, int stage, void *opaque)
>      ram_addr_t addr;
>      uint64_t bytes_transferred_last;
>      double bwidth = 0;
> -    uint64_t expected_time = 0;
>      int ret;
> 
>      if (stage < 0) {
> @@ -372,9 +371,12 @@ int ram_save_live(QEMUFile *f, int stage, void *opaque)
> 
>      qemu_put_be64(f, RAM_SAVE_FLAG_EOS);
> 
> -    expected_time = ram_save_remaining() * TARGET_PAGE_SIZE / bwidth;
> -
> -    return (stage == 2) && (expected_time <= migrate_max_downtime());
> +    if (stage == 2) {
> +        uint64_t expected_time;
> +        expected_time = ram_save_remaining() * TARGET_PAGE_SIZE / bwidth;
> +        return expected_time <= migrate_max_downtime();
> +    }
> +    return 0;
>  }
> 
>  static inline void *host_from_stream_offset(QEMUFile *f,

Reviewed-by: Orit Wasserman <owasserm@redhat.com>
diff mbox

Patch

diff --git a/arch_init.c b/arch_init.c
index 988adca..76a3d4e 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -295,7 +295,6 @@  int ram_save_live(QEMUFile *f, int stage, void *opaque)
     ram_addr_t addr;
     uint64_t bytes_transferred_last;
     double bwidth = 0;
-    uint64_t expected_time = 0;
     int ret;

     if (stage < 0) {
@@ -372,9 +371,12 @@  int ram_save_live(QEMUFile *f, int stage, void *opaque)

     qemu_put_be64(f, RAM_SAVE_FLAG_EOS);

-    expected_time = ram_save_remaining() * TARGET_PAGE_SIZE / bwidth;
-
-    return (stage == 2) && (expected_time <= migrate_max_downtime());
+    if (stage == 2) {
+        uint64_t expected_time;
+        expected_time = ram_save_remaining() * TARGET_PAGE_SIZE / bwidth;
+        return expected_time <= migrate_max_downtime();
+    }
+    return 0;
 }

 static inline void *host_from_stream_offset(QEMUFile *f,