Since previous commit, we calculate how much data we have send with
migration_transferred_bytes() so no need to maintain this counter and
remember to always update it.
Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <
20230515195709.63843-10-quintela@redhat.com>
void migration_rate_reset(QEMUFile *f)
{
- stat64_set(&mig_stats.rate_limit_used, 0);
stat64_set(&mig_stats.rate_limit_start, migration_transferred_bytes(f));
}
-void migration_rate_account(uint64_t len)
-{
- stat64_add(&mig_stats.rate_limit_used, len);
-}
-
uint64_t migration_transferred_bytes(QEMUFile *f)
{
uint64_t multifd = stat64_get(&mig_stats.multifd_bytes);
* Maximum amount of data we can send in a cycle.
*/
Stat64 rate_limit_max;
- /*
- * Amount of data we have sent in the current cycle.
- */
- Stat64 rate_limit_used;
/*
* Total number of bytes transferred.
*/
extern MigrationAtomicStats mig_stats;
-/**
- * migration_rate_account: Increase the number of bytes transferred.
- *
- * Report on a number of bytes the have been transferred that need to
- * be applied to the rate limiting calcuations.
- *
- * @len: amount of bytes transferred
- */
-void migration_rate_account(uint64_t len);
-
/**
* migration_rate_get: Get the maximum amount that can be transferred.
*
multifd_send_state->pages = p->pages;
p->pages = pages;
transferred = ((uint64_t) pages->num) * p->page_size + p->packet_len;
- migration_rate_account(transferred);
qemu_mutex_unlock(&p->mutex);
stat64_add(&mig_stats.transferred, transferred);
stat64_add(&mig_stats.multifd_bytes, transferred);
qemu_file_set_error_obj(f, -EIO, local_error);
} else {
uint64_t size = iov_size(f->iov, f->iovcnt);
- migration_rate_account(size);
f->total_transferred += size;
}
if (f->hooks && f->hooks->save_page) {
int ret = f->hooks->save_page(f, block_offset,
offset, size, bytes_sent);
- if (ret != RAM_SAVE_CONTROL_NOT_SUPP) {
- migration_rate_account(size);
- }
if (ret != RAM_SAVE_CONTROL_DELAYED &&
ret != RAM_SAVE_CONTROL_NOT_SUPP) {