[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 20/22] migration/multifd: Join all multifd threads in order to avo
From: |
Xxx Xx |
Subject: |
[PULL 20/22] migration/multifd: Join all multifd threads in order to avoid leaks |
Date: |
Mon, 13 Feb 2023 03:29:09 +0100 |
From: Leonardo Bras <leobras@redhat.com>
Current approach will only join threads that are still running.
For the threads not joined, resources or private memory are always kept in
the process space and never reclaimed before process end, and this risks
serious memory leaks.
This should usually not represent a big problem, since multifd migration
is usually just ran at most a few times, and after it succeeds there is
not much to be done before exiting the process.
Yet still, it should not hurt performance to join all of them.
Signed-off-by: Leonardo Bras <leobras@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
migration/multifd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/migration/multifd.c b/migration/multifd.c
index 3dd569d0c9..840d5814e4 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -1030,8 +1030,9 @@ void multifd_load_cleanup(void)
* however try to wakeup it without harm in cleanup phase.
*/
qemu_sem_post(&p->sem_sync);
- qemu_thread_join(&p->thread);
}
+
+ qemu_thread_join(&p->thread);
}
for (i = 0; i < migrate_multifd_channels(); i++) {
MultiFDRecvParams *p = &multifd_recv_state->params[i];
--
2.39.1
- [PULL 10/22] migration: Make ram_save_target_page() a pointer, (continued)
- [PULL 10/22] migration: Make ram_save_target_page() a pointer, Xxx Xx, 2023/02/12
- [PULL 11/22] migration: I messed state_pending_exact/estimate, Xxx Xx, 2023/02/12
- [PULL 12/22] AVX512 support for xbzrle_encode_buffer, Xxx Xx, 2023/02/12
- [PULL 09/22] migration: Calculate ram size once, Xxx Xx, 2023/02/12
- [PULL 13/22] Update bench-code for addressing CI problem, Xxx Xx, 2023/02/12
- [PULL 14/22] migration: Rework multi-channel checks on URI, Xxx Xx, 2023/02/12
- [PULL 15/22] migration: Cleanup postcopy_preempt_setup(), Xxx Xx, 2023/02/12
- [PULL 16/22] migration: Add a semaphore to count PONGs, Xxx Xx, 2023/02/12
- [PULL 17/22] migration: Postpone postcopy preempt channel to be after main, Xxx Xx, 2023/02/12
- [PULL 19/22] migration/multifd: Remove unnecessary assignment on multifd_load_cleanup(), Xxx Xx, 2023/02/12
- [PULL 20/22] migration/multifd: Join all multifd threads in order to avoid leaks,
Xxx Xx <=
- [PULL 21/22] migration/multifd: Move load_cleanup inside incoming_state_destroy, Xxx Xx, 2023/02/12
- [PULL 22/22] ram: Document migration ram flags, Xxx Xx, 2023/02/12
- [PULL 18/22] migration/multifd: Change multifd_load_cleanup() signature and usage, Xxx Xx, 2023/02/12
- Re: [PULL 00/22] Migration 20230213 patches, Juan Quintela, 2023/02/12
- [PULL 00/22] Migration 20230213 patches, Juan Quintela, 2023/02/12
- [PULL 02/22] multifd: cleanup the function multifd_channel_connect, Juan Quintela, 2023/02/12
- [PULL 01/22] migration: Remove spurious files, Juan Quintela, 2023/02/12
- [PULL 03/22] multifd: Remove some redundant code, Juan Quintela, 2023/02/12
- [PULL 04/22] linux-headers: Update to v6.1, Juan Quintela, 2023/02/12
- [PULL 05/22] util/userfaultfd: Support /dev/userfaultfd, Juan Quintela, 2023/02/12