"Dr. David Alan Gilbert" <dgilb...@redhat.com> wrote: > * Juan Quintela (quint...@redhat.com) wrote: >> On multifd we send data from more places that main channel. >> >> Signed-off-by: Juan Quintela <quint...@redhat.com> >> --- >> migration/migration.c | 11 +++++++++-- >> 1 file changed, 9 insertions(+), 2 deletions(-) >> >> diff --git a/migration/migration.c b/migration/migration.c >> index 9b510a809a..75d30661e9 100644 >> --- a/migration/migration.c >> +++ b/migration/migration.c >> @@ -2246,12 +2246,19 @@ static void migration_update_counters(MigrationState >> *s, >> { >> uint64_t transferred, time_spent; >> double bandwidth; >> + uint64_t now; >> >> if (current_time < s->iteration_start_time + BUFFER_DELAY) { >> return; >> } >> >> - transferred = qemu_ftell(s->to_dst_file) - s->iteration_initial_bytes; >> + if (migrate_use_multifd()) { >> + now = ram_counters.normal * qemu_target_page_size() >> + + qemu_ftell(s->to_dst_file); > > OK, can I just confirm, the 'multifd packets' go over the main fd, and > just the pags are going over the other fd's?
Nope. We send (at the end) pages and metadata pages through the multifd channels. We don't send anything over the normal page for multifd pages. Multifd metadata is not taking into account. It is multifd_send_state->seq * sizeof(packet). Fixing that. > In which case this is > right; but if the headers are going over the other fd's as well then > this is wrong. They are small, but still (aronud 64 offsets + something 20 bytes of header), once every 64 pages, but as said, it is not difficult to do the right thing. Thanks, Juan.