diff options
author | Dr. David Alan Gilbert <dgilbert@redhat.com> | 2018-06-13 11:26:41 +0100 |
---|---|---|
committer | Dr. David Alan Gilbert <dgilbert@redhat.com> | 2018-06-15 14:40:56 +0100 |
commit | ad767bed5af559ed32c6dabdcaccc3f75731e1f4 (patch) | |
tree | e29268c63f734e0d24788e5f1356d72647ab9d24 /migration/migration.h | |
parent | 7e555c6c58f095c9286814c3f9cd06196feba8a1 (diff) | |
download | qemu-ad767bed5af559ed32c6dabdcaccc3f75731e1f4.zip qemu-ad767bed5af559ed32c6dabdcaccc3f75731e1f4.tar.gz qemu-ad767bed5af559ed32c6dabdcaccc3f75731e1f4.tar.bz2 |
migration: Wake rate limiting for urgent requests
Rate limiting sleeps the migration thread for a while when it runs
out of bandwidth; but sometimes we want to wake up to get on with
something more urgent (like a postcopy request). Here we use
a semaphore with a timedwait instead of a simple sleep; Incrementing
the sempahore will wake it up sooner. Anything that consumes
these urgent events must decrement the sempahore.
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20180613102642.23995-3-dgilbert@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Diffstat (limited to 'migration/migration.h')
-rw-r--r-- | migration/migration.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/migration/migration.h b/migration/migration.h index 31d3ed1..64a7b33 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -121,6 +121,11 @@ struct MigrationState */ QemuMutex qemu_file_lock; + /* + * Used to allow urgent requests to override rate limiting. + */ + QemuSemaphore rate_limit_sem; + /* bytes already send at the beggining of current interation */ uint64_t iteration_initial_bytes; /* time at the start of current iteration */ @@ -287,4 +292,7 @@ void init_dirty_bitmap_incoming_migration(void); #define qemu_ram_foreach_block \ #warning "Use qemu_ram_foreach_block_migratable in migration code" +void migration_make_urgent_request(void); +void migration_consume_urgent_request(void); + #endif |