[PATCH RFC 14/14] migration/rdma: RDMA cleanup for multifd migration

2020-02-13 Thread Zhimin Feng
Signed-off-by: Zhimin Feng --- migration/multifd.c | 6 ++ migration/rdma.c| 5 ++--- migration/rdma.h| 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/migration/multifd.c b/migration/multifd.c index ba5e0b11d0..886c8e1271 100644 --- a/migration/multifd.c +++ b

[PATCH RFC 13/14] migration/rdma: only register the memory for multifd channels

2020-02-13 Thread Zhimin Feng
All data is sent by multifd Channels, so we only register its for multifd channels and main channel don't register its. Signed-off-by: Zhimin Feng --- migration/rdma.c | 7 +++ 1 file changed, 7 insertions(+) diff --git a/migration/rdma.c b/migration/rdma.c index eb7c2edbe7..b7b56

[PATCH RFC 05/14] migration/rdma: Create the multifd channels for RDMA

2020-02-13 Thread Zhimin Feng
In both sides. We still don't transmit anything through them, and we only build the RDMA connections. Signed-off-by: Zhimin Feng --- migration/multifd.c | 103 --- migration/multifd.h | 10 migration/rdma.c

[PATCH RFC 06/14] migration/rdma: Transmit initial packet

2020-02-13 Thread Zhimin Feng
Transmit initial packet through the multifd RDMA channels, so that we can identify the multifd channels. Signed-off-by: Zhimin Feng --- migration/multifd.c | 33 + migration/rdma.c| 2 ++ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a

[PATCH RFC 12/14] migration/rdma: use multifd to migrate VM for NOT rdma-pin-all mode

2020-02-13 Thread Zhimin Feng
Signed-off-by: Zhimin Feng --- migration/rdma.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/migration/rdma.c b/migration/rdma.c index 873c17dc03..eb7c2edbe7 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -1749,7 +1749,7 @@ static int qemu_rdma_write_one

[PATCH RFC 11/14] migration/rdma: use multifd to migrate VM for rdma-pin-all mode

2020-02-13 Thread Zhimin Feng
Signed-off-by: Zhimin Feng --- migration/multifd.c | 15 migration/rdma.c| 58 + migration/rdma.h| 2 ++ 3 files changed, 70 insertions(+), 5 deletions(-) diff --git a/migration/multifd.c b/migration/multifd.c index c986d4c247

[PATCH RFC 09/14] migration/rdma: register memory for multifd RDMA channels

2020-02-13 Thread Zhimin Feng
register memory for multifd RDMA channels and transmit the destination the keys to source to use including the virtual addresses. Signed-off-by: Zhimin Feng --- migration/multifd.c | 34 +--- migration/rdma.c| 48 + 2

[PATCH RFC 00/14] *** multifd for RDMA v2 ***

2020-02-13 Thread Zhimin Feng
Hi This is a version against current code. It is based on the multifd work. we can use the multifd parameters for rdma transport. All data is transported by the multifd RDMA channels and the main channel is only used to distribute its to the different multifd channels. Zhimin Feng (14

[PATCH RFC 08/14] migration/rdma: Add the function for dynamic page registration

2020-02-13 Thread Zhimin Feng
Add the 'qemu_rdma_registration' function, multifd send threads call it to register memory. Signed-off-by: Zhimin Feng --- migration/rdma.c | 51 migration/rdma.h | 1 + 2 files changed, 52 insertions(+) diff --git a/migratio

[PATCH RFC 04/14] migration/rdma: Export the RDMAContext struct

2020-02-13 Thread Zhimin Feng
We need to use the RDMAContext in migration/multifd.c so it has to be exported. Signed-off-by: Zhimin Feng --- migration/rdma.c | 243 -- migration/rdma.h | 247 +++ 2 files changed, 247 insertions(+), 243

[PATCH RFC 02/14] migration: judge whether or not the RDMA is used for migration

2020-02-13 Thread Zhimin Feng
Signed-off-by: Zhimin Feng --- migration/migration.c | 10 ++ migration/migration.h | 1 + 2 files changed, 11 insertions(+) diff --git a/migration/migration.c b/migration/migration.c index 10a13e0c79..819089a7ea 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -107,6

[PATCH RFC 10/14] migration/rdma: Wait for all multifd to complete registration

2020-02-13 Thread Zhimin Feng
Signed-off-by: Zhimin Feng --- migration/multifd.c | 6 ++ migration/rdma.c| 17 + 2 files changed, 23 insertions(+) diff --git a/migration/multifd.c b/migration/multifd.c index 4ae25fc88f..c986d4c247 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -389,6

[PATCH RFC 07/14] migration/rdma: Export the 'qemu_rdma_registration_handle' and 'qemu_rdma_exchange_send' functions

2020-02-13 Thread Zhimin Feng
Signed-off-by: Zhimin Feng --- migration/rdma.c | 25 + migration/rdma.h | 16 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/migration/rdma.c b/migration/rdma.c index 2f1e69197f..23f7f525f4 100644 --- a/migration/rdma.c +++ b/migration

[PATCH RFC 03/14] migration/rdma: Create multiFd migration threads

2020-02-13 Thread Zhimin Feng
Creation of the multifd send threads for RDMA migration, nothing inside yet. Signed-off-by: Zhimin Feng --- migration/multifd.c | 33 +--- migration/multifd.h | 2 + migration/qemu-file.c | 5 +++ migration/qemu-file.h | 1 + migration/rdma.c | 88

[PATCH RFC 01/14] migration: add the 'migrate_use_rdma_pin_all' function

2020-02-13 Thread Zhimin Feng
Signed-off-by: Zhimin Feng --- migration/migration.c | 9 + migration/migration.h | 1 + 2 files changed, 10 insertions(+) diff --git a/migration/migration.c b/migration/migration.c index 3a21a4686c..10a13e0c79 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2208,6

[PATCH] migration: Maybe VM is paused when migration is cancelled

2020-01-14 Thread Zhimin Feng
If the migration is cancelled when it is in the completion phase, the migration state is set to MIGRATION_STATUS_CANCELLING. The VM maybe wait for the 'pause_sem' semaphore in migration_maybe_pause function, so that VM always is paused. Reported-by: Euler Robot Signed-off-by: Z

[PATCH] migration/multifd: fix nullptr access in multifd_send_terminate_threads

2020-01-10 Thread Zhimin Feng
n (argc=, argv=, envp=) at vl.c:4471 If the multifd_send_threads is not created when migration is failed. In this senario, we don't call multifd_save_cleanup in multifd_new_send_channel_async. Signed-off-by: Zhimin Feng --- migration/ram.c | 10 +- 1 file changed, 9 insertions(+)

[PATCH RFC 12/12] migration/rdma: only register the virt-ram block for MultiRDMA

2020-01-09 Thread Zhimin Feng
From: fengzhimin The virt-ram block is sent by MultiRDMA, so we only register it for MultiRDMA channels and main channel don't register the virt-ram block. Signed-off-by: fengzhimin --- migration/rdma.c | 140 +-- 1 file changed, 112 insertions(+), 2

[PATCH RFC 00/12] *** mulitple RDMA channels for migration ***

2020-01-09 Thread Zhimin Feng
From: fengzhimin Currently there is a single channel for RDMA migration, this causes the problem that the network bandwidth is not fully utilized for 25Gigabit NIC. Inspired by the Multifd, we use two RDMA channels to send RAM pages, which we call MultiRDMA. We compare the migration performance

[PATCH RFC 04/12] migration/rdma: Create multiRDMA migration threads

2020-01-09 Thread Zhimin Feng
From: fengzhimin Creation of the RDMA threads, nothing inside yet. Signed-off-by: fengzhimin --- migration/migration.c | 1 + migration/migration.h | 2 + migration/rdma.c | 283 ++ 3 files changed, 286 insertions(+) diff --git a/migration/migr

[PATCH RFC 05/12] migration/rdma: Create the multiRDMA channels

2020-01-09 Thread Zhimin Feng
From: fengzhimin In both sides. We still don't transmit anything through them, and we only build the RDMA connections. Signed-off-by: fengzhimin --- migration/rdma.c | 253 +-- 1 file changed, 223 insertions(+), 30 deletions(-) diff --git a/migratio

[PATCH RFC 10/12] migration/rdma: use multiRDMA to send RAM block for rdma-pin-all mode

2020-01-09 Thread Zhimin Feng
From: fengzhimin Send the RAM block through MultiRDMA channels for using rdma-pin-all option, and we choose the channel to send data through polling the MultiRDMA thread. Signed-off-by: fengzhimin --- migration/rdma.c | 66 +--- 1 file changed, 63 in

[PATCH RFC 06/12] migration/rdma: Transmit initial package

2020-01-09 Thread Zhimin Feng
From: fengzhimin Transmit initial package through the multiRDMA channels, so that we can identify the main channel and multiRDMA channels. Signed-off-by: fengzhimin --- migration/rdma.c | 114 --- 1 file changed, 107 insertions(+), 7 deletions(-) di

[PATCH RFC 09/12] migration/rdma: Wait for all multiRDMA to complete registration

2020-01-09 Thread Zhimin Feng
From: fengzhimin Signed-off-by: fengzhimin --- migration/rdma.c | 23 +++ 1 file changed, 23 insertions(+) diff --git a/migration/rdma.c b/migration/rdma.c index 6ecc870844..425dfa709d 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -439,6 +439,10 @@ struct { M

[PATCH RFC 07/12] migration/rdma: Be sure all channels are created

2020-01-09 Thread Zhimin Feng
From: fengzhimin We need to build all multiRDMA channels before we start migration. Signed-off-by: fengzhimin --- migration/rdma.c | 44 ++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/migration/rdma.c b/migration/rdma.c index db75a43

[PATCH RFC 11/12] migration/rdma: use multiRDMA to send RAM block for NOT rdma-pin-all mode

2020-01-09 Thread Zhimin Feng
From: fengzhimin Signed-off-by: fengzhimin --- migration/rdma.c | 109 +-- 1 file changed, 105 insertions(+), 4 deletions(-) diff --git a/migration/rdma.c b/migration/rdma.c index 36261f1fc8..0a150099e2 100644 --- a/migration/rdma.c +++ b/migration/r

[PATCH RFC 01/12] migration: Add multiRDMA capability support

2020-01-09 Thread Zhimin Feng
From: fengzhimin Signed-off-by: fengzhimin --- migration/migration.c | 11 +++ migration/migration.h | 1 + qapi/migration.json | 4 +++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/migration/migration.c b/migration/migration.c index 354ad072fa..e98e236ef9 100644

[PATCH RFC 03/12] migration: Create the multi-rdma-channels parameter

2020-01-09 Thread Zhimin Feng
From: fengzhimin Indicates the number of RDMA threads that we would create. By default we create 2 threads for RDMA migration. Signed-off-by: fengzhimin --- migration/migration.c | 32 migration/migration.h | 1 + monitor/hmp-cmds.c| 7 +++ qapi/migra

[PATCH RFC 02/12] migration: Export the 'migration_incoming_setup' function and add the 'migrate_use_rdma_pin_all' function

2020-01-09 Thread Zhimin Feng
From: fengzhimin We need to call the 'migration_incoming_setup' function in migration/rdma.c, so it has to be changed to a global function. Signed-off-by: fengzhimin --- migration/migration.c | 11 ++- migration/migration.h | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) dif

[PATCH RFC 08/12] migration/rdma: register memory for multiRDMA channels

2020-01-09 Thread Zhimin Feng
From: fengzhimin register memory for multiRDMA channels and transmit the destination the keys to source to use including the virtual addresses. Signed-off-by: fengzhimin --- migration/rdma.c | 192 ++- 1 file changed, 190 insertions(+), 2 deletions(-