To support query migration thread infomation, save and delete
thread(live_migration and multifdsend) information at thread
creation and finish.
Signed-off-by: Jiang Jiacheng <jiangjiacheng@huawei.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
#include "net/announce.h"
#include "qemu/queue.h"
#include "multifd.h"
+#include "threadinfo.h"
#include "qemu/yank.h"
#include "sysemu/cpus.h"
#include "yank_functions.h"
static void *migration_thread(void *opaque)
{
MigrationState *s = opaque;
+ MigrationThread *thread = NULL;
int64_t setup_start = qemu_clock_get_ms(QEMU_CLOCK_HOST);
MigThrError thr_error;
bool urgent = false;
+ thread = MigrationThreadAdd("live_migration", qemu_get_thread_id());
+
rcu_register_thread();
object_ref(OBJECT(s));
migration_iteration_finish(s);
object_unref(OBJECT(s));
rcu_unregister_thread();
+ MigrationThreadDel(thread);
return NULL;
}
#include "qemu-file.h"
#include "trace.h"
#include "multifd.h"
+#include "threadinfo.h"
#include "qemu/yank.h"
#include "io/channel-socket.h"
static void *multifd_send_thread(void *opaque)
{
MultiFDSendParams *p = opaque;
+ MigrationThread *thread = NULL;
Error *local_err = NULL;
int ret = 0;
bool use_zero_copy_send = migrate_use_zero_copy_send();
+ thread = MigrationThreadAdd(p->name, qemu_get_thread_id());
+
trace_multifd_send_thread_start(p->id);
rcu_register_thread();
qemu_mutex_unlock(&p->mutex);
rcu_unregister_thread();
+ MigrationThreadDel(thread);
trace_multifd_send_thread_end(p->id, p->num_packets, p->total_normal_pages);
return NULL;