tls migration can easily reach bottleneck of cpu which results in migration failure. add support for multifd tls feature to make fully use of bandwidth.
67 lines
2.3 KiB
Diff
67 lines
2.3 KiB
Diff
From 0aff29297923b32e919ce944030a043e0826d9aa Mon Sep 17 00:00:00 2001
|
|
From: Ying Fang <fangying1@huawei.com>
|
|
Date: Wed, 2 Dec 2020 11:25:44 +0800
|
|
Subject: [PATCH] migration/tls: add tls_hostname into MultiFDSendParams
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Since multifd creation is async with migration_channel_connect, we should
|
|
pass the hostname from MigrationState to MultiFDSendParams.
|
|
|
|
Signed-off-by: Chuan Zheng <zhengchuan@huawei.com>
|
|
Signed-off-by: Yan Jin <jinyan12@huawei.com>
|
|
Message-Id: <1600139042-104593-4-git-send-email-zhengchuan@huawei.com>
|
|
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
|
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
|
---
|
|
migration/ram.c | 7 +++++++
|
|
1 file changed, 7 insertions(+)
|
|
|
|
diff --git a/migration/ram.c b/migration/ram.c
|
|
index 1a33c7b3e2..bb8f383c3b 100644
|
|
--- a/migration/ram.c
|
|
+++ b/migration/ram.c
|
|
@@ -621,6 +621,8 @@ typedef struct {
|
|
uint8_t id;
|
|
/* channel thread name */
|
|
char *name;
|
|
+ /* tls hostname */
|
|
+ char *tls_hostname;
|
|
/* channel thread id */
|
|
QemuThread thread;
|
|
/* communication channel */
|
|
@@ -1041,6 +1043,8 @@ void multifd_save_cleanup(void)
|
|
qemu_sem_destroy(&p->sem_sync);
|
|
g_free(p->name);
|
|
p->name = NULL;
|
|
+ g_free(p->tls_hostname);
|
|
+ p->tls_hostname = NULL;
|
|
multifd_pages_clear(p->pages);
|
|
p->pages = NULL;
|
|
p->packet_len = 0;
|
|
@@ -1229,10 +1233,12 @@ int multifd_save_setup(void)
|
|
int thread_count;
|
|
uint32_t page_count = MULTIFD_PACKET_SIZE / qemu_target_page_size();
|
|
uint8_t i;
|
|
+ MigrationState *s;
|
|
|
|
if (!migrate_use_multifd()) {
|
|
return 0;
|
|
}
|
|
+ s = migrate_get_current();
|
|
thread_count = migrate_multifd_channels();
|
|
multifd_send_state = g_malloc0(sizeof(*multifd_send_state));
|
|
multifd_send_state->params = g_new0(MultiFDSendParams, thread_count);
|
|
@@ -1253,6 +1259,7 @@ int multifd_save_setup(void)
|
|
+ sizeof(ram_addr_t) * page_count;
|
|
p->packet = g_malloc0(p->packet_len);
|
|
p->name = g_strdup_printf("multifdsend_%d", i);
|
|
+ p->tls_hostname = g_strdup(s->hostname);
|
|
socket_send_channel_create(multifd_new_send_channel_async, p);
|
|
}
|
|
return 0;
|
|
--
|
|
2.27.0
|
|
|