[PATCH v2 0/3] QIOChannel async_write & async_flush + MSG_ZEROCOPY + multifd

Leonardo Bras posted 3 patches 2 years, 7 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210922050340.614781-1-leobras@redhat.com
Maintainers: "Daniel P. Berrangé" <berrange@redhat.com>, Juan Quintela <quintela@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>
There is a newer version of this series
include/io/channel-socket.h |   2 +
include/io/channel.h        |  93 +++++++++++++++++++----
io/channel-socket.c         | 145 ++++++++++++++++++++++++++++++++++--
io/channel.c                |  66 ++++++++++++----
migration/multifd.c         |   3 +-
5 files changed, 271 insertions(+), 38 deletions(-)
[PATCH v2 0/3] QIOChannel async_write & async_flush + MSG_ZEROCOPY + multifd
Posted by Leonardo Bras 2 years, 7 months ago
This patch series intends to enable MSG_ZEROCOPY in QIOChannel, and make
use of it for multifd migration performance improvement.

Patch #1 creates new callbacks for QIOChannel, allowing the implementation
of asynchronous writing.

Patch #2 implements async_write and async_flush on QIOChannelSocket,

Patch #3 Makes use of async_write + async_flush to enable MSG_ZEROCOPY
for migration using multifd nocomp. 


Results:
So far, the resource usage of __sys_sendmsg() reduced 15 times, and the
overall migration took 13-18% less time, based in synthetic workload.

The objective is to reduce migration time in hosts with heavy cpu usage.

---
Changes since v1:
- Reimplemented the patchset using async_write + async_flush approach.
- Implemented a flush to be able to tell whenever all data was written.

Leonardo Bras (3):
  QIOCHannel: Add io_async_writev & io_async_flush callbacks
  QIOChannelSocket: Implement io_async_write & io_async_flush
  multifd: Send using asynchronous write on nocomp to send RAM pages.

 include/io/channel-socket.h |   2 +
 include/io/channel.h        |  93 +++++++++++++++++++----
 io/channel-socket.c         | 145 ++++++++++++++++++++++++++++++++++--
 io/channel.c                |  66 ++++++++++++----
 migration/multifd.c         |   3 +-
 5 files changed, 271 insertions(+), 38 deletions(-)

-- 
2.33.0


Re: [PATCH v2 0/3] QIOChannel async_write & async_flush + MSG_ZEROCOPY + multifd
Posted by Leonardo Bras Soares Passos 2 years, 7 months ago
I sent an v3 to this series, due to some errors on testing
MSG_ZEROCOPY on a user with a low memory locking resource.
 - If there is not enough memory locking resource, fall back to sync
(non-zerocopy) approach.

Best regards,
Leo