[Qemu-devel] [PATCH 05/31] ram: Move bytes_xfer_prev into RAMState

Juan Quintela posted 31 patches 8 years, 7 months ago
There is a newer version of this series
[Qemu-devel] [PATCH 05/31] ram: Move bytes_xfer_prev into RAMState
Posted by Juan Quintela 8 years, 7 months ago
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 migration/ram.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index f6ac503..2d288cc 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -151,6 +151,8 @@ struct RAMState {
     /* this variables are used for bitmap sync */
     /* last time we did a full bitmap_sync */
     int64_t start_time;
+    /* bytes transferred at start_time */
+    int64_t bytes_xfer_prev;
 };
 typedef struct RAMState RAMState;
 
@@ -597,7 +599,6 @@ static void migration_bitmap_sync_range(ram_addr_t start, ram_addr_t length)
 }
 
 /* Fix me: there are too many global variables used in migration process. */
-static int64_t bytes_xfer_prev;
 static int64_t num_dirty_pages_period;
 static uint64_t xbzrle_cache_miss_prev;
 static uint64_t iterations_prev;
@@ -605,7 +606,7 @@ static uint64_t iterations_prev;
 static void migration_bitmap_sync_init(RAMState *rs)
 {
     rs->start_time = 0;
-    bytes_xfer_prev = 0;
+    rs->bytes_xfer_prev = 0;
     num_dirty_pages_period = 0;
     xbzrle_cache_miss_prev = 0;
     iterations_prev = 0;
@@ -638,8 +639,8 @@ static void migration_bitmap_sync(RAMState *rs)
 
     rs->bitmap_sync_count++;
 
-    if (!bytes_xfer_prev) {
-        bytes_xfer_prev = ram_bytes_transferred();
+    if (!rs->bytes_xfer_prev) {
+        rs->bytes_xfer_prev = ram_bytes_transferred();
     }
 
     if (!rs->start_time) {
@@ -674,13 +675,13 @@ static void migration_bitmap_sync(RAMState *rs)
 
             if (s->dirty_pages_rate &&
                (num_dirty_pages_period * TARGET_PAGE_SIZE >
-                   (bytes_xfer_now - bytes_xfer_prev)/2) &&
+                   (bytes_xfer_now - rs->bytes_xfer_prev)/2) &&
                (rs->dirty_rate_high_cnt++ >= 2)) {
                     trace_migration_throttle();
                     rs->dirty_rate_high_cnt = 0;
                     mig_throttle_guest_down();
              }
-             bytes_xfer_prev = bytes_xfer_now;
+             rs->bytes_xfer_prev = bytes_xfer_now;
         }
 
         if (migrate_use_xbzrle()) {
-- 
2.9.3


Re: [Qemu-devel] [PATCH 05/31] ram: Move bytes_xfer_prev into RAMState
Posted by Dr. David Alan Gilbert 8 years, 7 months ago
* Juan Quintela (quintela@redhat.com) wrote:
> Signed-off-by: Juan Quintela <quintela@redhat.com>

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> ---
>  migration/ram.c | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/migration/ram.c b/migration/ram.c
> index f6ac503..2d288cc 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -151,6 +151,8 @@ struct RAMState {
>      /* this variables are used for bitmap sync */
>      /* last time we did a full bitmap_sync */
>      int64_t start_time;
> +    /* bytes transferred at start_time */
> +    int64_t bytes_xfer_prev;
>  };
>  typedef struct RAMState RAMState;
>  
> @@ -597,7 +599,6 @@ static void migration_bitmap_sync_range(ram_addr_t start, ram_addr_t length)
>  }
>  
>  /* Fix me: there are too many global variables used in migration process. */
> -static int64_t bytes_xfer_prev;
>  static int64_t num_dirty_pages_period;
>  static uint64_t xbzrle_cache_miss_prev;
>  static uint64_t iterations_prev;
> @@ -605,7 +606,7 @@ static uint64_t iterations_prev;
>  static void migration_bitmap_sync_init(RAMState *rs)
>  {
>      rs->start_time = 0;
> -    bytes_xfer_prev = 0;
> +    rs->bytes_xfer_prev = 0;
>      num_dirty_pages_period = 0;
>      xbzrle_cache_miss_prev = 0;
>      iterations_prev = 0;
> @@ -638,8 +639,8 @@ static void migration_bitmap_sync(RAMState *rs)
>  
>      rs->bitmap_sync_count++;
>  
> -    if (!bytes_xfer_prev) {
> -        bytes_xfer_prev = ram_bytes_transferred();
> +    if (!rs->bytes_xfer_prev) {
> +        rs->bytes_xfer_prev = ram_bytes_transferred();
>      }
>  
>      if (!rs->start_time) {
> @@ -674,13 +675,13 @@ static void migration_bitmap_sync(RAMState *rs)
>  
>              if (s->dirty_pages_rate &&
>                 (num_dirty_pages_period * TARGET_PAGE_SIZE >
> -                   (bytes_xfer_now - bytes_xfer_prev)/2) &&
> +                   (bytes_xfer_now - rs->bytes_xfer_prev)/2) &&
>                 (rs->dirty_rate_high_cnt++ >= 2)) {
>                      trace_migration_throttle();
>                      rs->dirty_rate_high_cnt = 0;
>                      mig_throttle_guest_down();
>               }
> -             bytes_xfer_prev = bytes_xfer_now;
> +             rs->bytes_xfer_prev = bytes_xfer_now;
>          }
>  
>          if (migrate_use_xbzrle()) {
> -- 
> 2.9.3
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

Re: [Qemu-devel] [PATCH 05/31] ram: Move bytes_xfer_prev into RAMState
Posted by Philippe Mathieu-Daudé 8 years, 7 months ago
On 03/16/2017 09:22 AM, Dr. David Alan Gilbert wrote:
> * Juan Quintela (quintela@redhat.com) wrote:
>> Signed-off-by: Juan Quintela <quintela@redhat.com>
>
> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>> ---
>>  migration/ram.c | 13 +++++++------
>>  1 file changed, 7 insertions(+), 6 deletions(-)
>>
>> diff --git a/migration/ram.c b/migration/ram.c
>> index f6ac503..2d288cc 100644
>> --- a/migration/ram.c
>> +++ b/migration/ram.c
>> @@ -151,6 +151,8 @@ struct RAMState {
>>      /* this variables are used for bitmap sync */
>>      /* last time we did a full bitmap_sync */
>>      int64_t start_time;
>> +    /* bytes transferred at start_time */
>> +    int64_t bytes_xfer_prev;
>>  };
>>  typedef struct RAMState RAMState;
>>
>> @@ -597,7 +599,6 @@ static void migration_bitmap_sync_range(ram_addr_t start, ram_addr_t length)
>>  }
>>
>>  /* Fix me: there are too many global variables used in migration process. */
>> -static int64_t bytes_xfer_prev;
>>  static int64_t num_dirty_pages_period;
>>  static uint64_t xbzrle_cache_miss_prev;
>>  static uint64_t iterations_prev;
>> @@ -605,7 +606,7 @@ static uint64_t iterations_prev;
>>  static void migration_bitmap_sync_init(RAMState *rs)
>>  {
>>      rs->start_time = 0;
>> -    bytes_xfer_prev = 0;
>> +    rs->bytes_xfer_prev = 0;
>>      num_dirty_pages_period = 0;
>>      xbzrle_cache_miss_prev = 0;
>>      iterations_prev = 0;
>> @@ -638,8 +639,8 @@ static void migration_bitmap_sync(RAMState *rs)
>>
>>      rs->bitmap_sync_count++;
>>
>> -    if (!bytes_xfer_prev) {
>> -        bytes_xfer_prev = ram_bytes_transferred();
>> +    if (!rs->bytes_xfer_prev) {
>> +        rs->bytes_xfer_prev = ram_bytes_transferred();
>>      }
>>
>>      if (!rs->start_time) {
>> @@ -674,13 +675,13 @@ static void migration_bitmap_sync(RAMState *rs)
>>
>>              if (s->dirty_pages_rate &&
>>                 (num_dirty_pages_period * TARGET_PAGE_SIZE >
>> -                   (bytes_xfer_now - bytes_xfer_prev)/2) &&
>> +                   (bytes_xfer_now - rs->bytes_xfer_prev)/2) &&
>>                 (rs->dirty_rate_high_cnt++ >= 2)) {
>>                      trace_migration_throttle();
>>                      rs->dirty_rate_high_cnt = 0;
>>                      mig_throttle_guest_down();
>>               }
>> -             bytes_xfer_prev = bytes_xfer_now;
>> +             rs->bytes_xfer_prev = bytes_xfer_now;
>>          }
>>
>>          if (migrate_use_xbzrle()) {
>> --
>> 2.9.3
>>
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>