qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v7 00/21] Initial support for multi-process qemu
@ 2020-06-27 17:09 elena.ufimtseva
  2020-06-27 17:09 ` [PATCH v7 01/21] memory: alloc RAM from file at offset elena.ufimtseva
                   ` (21 more replies)
  0 siblings, 22 replies; 51+ messages in thread
From: elena.ufimtseva @ 2020-06-27 17:09 UTC (permalink / raw)
  To: qemu-devel
  Cc: elena.ufimtseva, fam, swapnil.ingle, john.g.johnson, kraxel,
	jag.raman, quintela, mst, armbru, kanth.ghatraju, felipe, thuth,
	ehabkost, konrad.wilk, dgilbert, liran.alon, stefanha,
	thanos.makatos, rth, kwolf, berrange, mreitz, ross.lagerwall,
	marcandre.lureau, pbonzini

From: Elena Ufimtseva <elena.ufimtseva@oracle.com>

Hello

This is the v7 of the patchset.
Thank you very much for the detailed feedback for v6. We appreciate your time.

We have addressed the latest comments and suggestions that were
provided on v6 patch series and incorporated to this patchset.

This is the list of changes for v7:
 - QEMU & remote process share the same binary.
   This allowed us to reduce the number of patches as well.

 - We introduced the machine type "remote" that drives the remote process
   initialization.

 - v7 now uses QIOChannel for communication and descriptors management.

 - The remote process uses the main loop instead of a separate loop.

 - Co-routines support in the QEMU Proxy-remote process communication
   The communication model based on co-routines needs some more work and
   we would like to hear your take on it.
   Stefan has shared some ideas how we can proceed and we will take this
   to the next version after additional discussion.
   We did not implement the protocol to listen and accept new connections.

There are other changes that were incorporated from the feedback we have
received on v6.

We posted the Proof Of Concept patches [2] before the BoF session in 2018.
Subsequently, we posted RFC v1 [3], RFC v2 [4], RFC v3 [5], RFC v4 [6],
v5 [7] and v6 [8] of the patch series.
Following people contributed to this patchset:

John G Johnson <john.g.johnson@oracle.com>
Jagannathan Raman <jag.raman@oracle.com>
Elena Ufimtseva <elena.ufimtseva@oracle.com>
Kanth Ghatraju <kanth.ghatraju@oracle.com>
Konrad Wilk <konrad.wilk@oracle.com>

Also we would like to thank QEMU community for your help, suggestions
and reviewing this large series of patches.

For the full concept writeup about QEMU multi-process, please refer to
docs/devel/qemu-multiprocess.rst. Also see docs/qemu-multiprocess.txt for
usage information.

We will post separate patchsets for the following improvements for
the experimental Qemu multi-process:
 - Live migration;
 - communication channel improvements;

We welcome all your ideas, concerns, and questions for this patchset.

[1]: http://events17.linuxfoundation.org/sites/events/files/slides/KVM%20FORUM%20multi-process.pdf
[1]: https://www.youtube.com/watch?v=Kq1-coHh7lg
[2]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg566538.html
[3]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg602285.html
[4]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg624877.html
[5]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg642000.html
[6]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg655118.html
[7]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg682429.html
[8]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg697484.html

Elena Ufimtseva (9):
  multi-process: add qio channel function to transmit
  multi-process: define MPQemuMsg format and transmission functions
  multi-process: add co-routines to communicate with remote
  multi-process: Initialize communication channel at the remote end
  multi-process: introduce proxy object
  multi-process: Forward PCI config space acceses to the remote process
  multi-process: heartbeat messages to remote
  multi-process: perform device reset in the remote process
  multi-process: add configure and usage information

Jagannathan Raman (11):
  memory: alloc RAM from file at offset
  multi-process: Add config option for multi-process QEMU
  multi-process: setup PCI host bridge for remote device
  multi-process: setup a machine object for remote device process
  multi-process: Initialize message handler in remote device
  multi-process: setup memory manager for remote device
  multi-process: Connect Proxy Object with device in the remote process
  multi-process: PCI BAR read/write handling for proxy & remote
    endpoints
  multi-process: Synchronize remote memory
  multi-process: create IOHUB object to handle irq
  multi-process: Retrieve PCI info from remote process

John G Johnson (1):
  multi-process: add the concept description to
    docs/devel/qemu-multiprocess

 MAINTAINERS                          |  24 +
 backends/hostmem-memfd.c             |   2 +-
 configure                            |  11 +
 docs/devel/index.rst                 |   1 +
 docs/devel/multi-process.rst         | 957 +++++++++++++++++++++++++++
 docs/multi-process.rst               |  71 ++
 exec.c                               |  11 +-
 hw/Makefile.objs                     |   1 +
 hw/i386/Makefile.objs                |   3 +
 hw/i386/remote-memory.c              |  58 ++
 hw/i386/remote-msg.c                 | 301 +++++++++
 hw/i386/remote.c                     |  99 +++
 hw/misc/ivshmem.c                    |   3 +-
 hw/pci-host/Makefile.objs            |   1 +
 hw/pci-host/remote.c                 |  63 ++
 hw/pci/Makefile.objs                 |   2 +
 hw/pci/memory-sync.c                 | 214 ++++++
 hw/pci/proxy.c                       | 436 ++++++++++++
 hw/remote/Makefile.objs              |   1 +
 hw/remote/iohub.c                    | 153 +++++
 include/exec/memory.h                |   2 +
 include/exec/ram_addr.h              |   2 +-
 include/hw/i386/remote-memory.h      |  20 +
 include/hw/i386/remote.h             |  38 ++
 include/hw/pci-host/remote.h         |  34 +
 include/hw/pci/memory-sync.h         |  30 +
 include/hw/pci/pci_ids.h             |   3 +
 include/hw/pci/proxy.h               |  69 ++
 include/hw/remote/iohub.h            |  50 ++
 include/io/channel.h                 |  24 +
 include/io/mpqemu-link.h             | 140 ++++
 include/qemu/mmap-alloc.h            |   3 +-
 io/Makefile.objs                     |   2 +
 io/channel.c                         |  45 ++
 io/mpqemu-link.c                     | 277 ++++++++
 memory.c                             |   3 +-
 scripts/mpqemu-launcher-perf-mode.py |  67 ++
 scripts/mpqemu-launcher.py           |  47 ++
 util/mmap-alloc.c                    |   7 +-
 util/oslib-posix.c                   |   2 +-
 40 files changed, 3264 insertions(+), 13 deletions(-)
 create mode 100644 docs/devel/multi-process.rst
 create mode 100644 docs/multi-process.rst
 create mode 100644 hw/i386/remote-memory.c
 create mode 100644 hw/i386/remote-msg.c
 create mode 100644 hw/i386/remote.c
 create mode 100644 hw/pci-host/remote.c
 create mode 100644 hw/pci/memory-sync.c
 create mode 100644 hw/pci/proxy.c
 create mode 100644 hw/remote/Makefile.objs
 create mode 100644 hw/remote/iohub.c
 create mode 100644 include/hw/i386/remote-memory.h
 create mode 100644 include/hw/i386/remote.h
 create mode 100644 include/hw/pci-host/remote.h
 create mode 100644 include/hw/pci/memory-sync.h
 create mode 100644 include/hw/pci/proxy.h
 create mode 100644 include/hw/remote/iohub.h
 create mode 100644 include/io/mpqemu-link.h
 create mode 100644 io/mpqemu-link.c
 create mode 100644 scripts/mpqemu-launcher-perf-mode.py
 create mode 100755 scripts/mpqemu-launcher.py

-- 
2.25.GIT



^ permalink raw reply	[flat|nested] 51+ messages in thread

end of thread, other threads:[~2020-07-31 18:34 UTC | newest]

Thread overview: 51+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-27 17:09 [PATCH v7 00/21] Initial support for multi-process qemu elena.ufimtseva
2020-06-27 17:09 ` [PATCH v7 01/21] memory: alloc RAM from file at offset elena.ufimtseva
2020-06-30 14:59   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 02/21] multi-process: Add config option for multi-process QEMU elena.ufimtseva
2020-06-30 14:57   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 03/21] multi-process: setup PCI host bridge for remote device elena.ufimtseva
2020-06-30 15:17   ` Stefan Hajnoczi
2020-07-09 14:23     ` Jag Raman
2020-06-27 17:09 ` [PATCH v7 04/21] multi-process: setup a machine object for remote device process elena.ufimtseva
2020-06-30 15:26   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 05/21] multi-process: add qio channel function to transmit elena.ufimtseva
2020-06-30 15:29   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 06/21] multi-process: define MPQemuMsg format and transmission functions elena.ufimtseva
2020-06-30 15:53   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 07/21] multi-process: add co-routines to communicate with remote elena.ufimtseva
2020-06-30 18:31   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 08/21] multi-process: Initialize communication channel at the remote end elena.ufimtseva
2020-07-01  6:44   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 09/21] multi-process: Initialize message handler in remote device elena.ufimtseva
2020-07-01  6:53   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 10/21] multi-process: setup memory manager for " elena.ufimtseva
2020-07-01  7:58   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 11/21] multi-process: introduce proxy object elena.ufimtseva
2020-07-01  8:58   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 12/21] multi-process: Connect Proxy Object with device in the remote process elena.ufimtseva
2020-07-01  9:20   ` Stefan Hajnoczi
2020-07-24 16:57     ` Jag Raman
2020-07-27 13:18       ` Stefan Hajnoczi
2020-07-27 13:22         ` Michael S. Tsirkin
2020-07-31 18:31         ` Jag Raman
2020-06-27 17:09 ` [PATCH v7 13/21] multi-process: Forward PCI config space acceses to " elena.ufimtseva
2020-07-01  9:40   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 14/21] multi-process: PCI BAR read/write handling for proxy & remote endpoints elena.ufimtseva
2020-07-01 10:41   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 15/21] multi-process: Synchronize remote memory elena.ufimtseva
2020-07-01 10:55   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 16/21] multi-process: create IOHUB object to handle irq elena.ufimtseva
2020-07-02 12:09   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 17/21] multi-process: Retrieve PCI info from remote process elena.ufimtseva
2020-07-02 12:59   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 18/21] multi-process: heartbeat messages to remote elena.ufimtseva
2020-07-02 13:16   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 19/21] multi-process: perform device reset in the remote process elena.ufimtseva
2020-07-02 13:19   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 20/21] multi-process: add the concept description to docs/devel/qemu-multiprocess elena.ufimtseva
2020-07-02 13:31   ` Stefan Hajnoczi
2020-06-27 17:09 ` [PATCH v7 21/21] multi-process: add configure and usage information elena.ufimtseva
2020-07-02 13:26   ` Stefan Hajnoczi
2020-07-02 13:40 ` [PATCH v7 00/21] Initial support for multi-process qemu Stefan Hajnoczi
2020-07-09 14:16   ` Jag Raman
2020-07-13 11:21     ` Stefan Hajnoczi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).