diff mbox

[5/8] Only calculate expected_time for stage 2

Message ID 31388846c75d7136ebcdbd9150b399bcecf30322.1340371865.git.quintela@redhat.com
State New
Headers show

Commit Message

Juan Quintela June 22, 2012, 1:46 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 file changed, 6 insertions(+), 4 deletions(-)

Comments

Orit Wasserman June 25, 2012, 6:25 a.m. UTC | #1
On 06/22/2012 04:46 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 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/arch_init.c b/arch_init.c
> index a9e8b74..424efe7 100644
> --- a/arch_init.c
> +++ b/arch_init.c
> @@ -299,7 +299,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) {
> @@ -376,9 +375,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 a9e8b74..424efe7 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -299,7 +299,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) {
@@ -376,9 +375,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,