Re: [Qemu-devel] [RFC v3 PATCH 00/45] Initial support of multi-process qemu
On 9/4/2019 5:18 AM, Daniel P. Berrangé wrote: On Tue, Sep 03, 2019 at 04:37:26PM -0400, Jagannathan Raman wrote: Started with the presentation in October 2017 made by Marc-Andre (Red Hat) and Konrad Wilk (Oracle) [1], and continued by Jag's BoF at KVM Forum 2018, the multi-process project is now a prototype and presented in this patchset. This first series enables the emulation of lsi53c895a in a separate process. We posted the Proof Of Concept patches [2] before the BoF session in 2018. Subsequently, we posted RFC v1 [3] & RFC v2 [4] of this series. Thanks to the v1 & v2 review, we were able to incorporate the feedback into our goals. In the summer of 2019, we participated in a conference with folks at RedHat, who provided us with feedback to improve the design of this project. We want to present version 3 of this series which incorporates the feedback we received for v2 & the enhancements suggested in the conference. Following are the improvements made in this series: This patch series fails to apply to git master when I attempt and confirmed by patchew's failed attempt too https://patchew.org/QEMU/cover.1567534653.git.jag.ra...@oracle.com/ Can you do one of the following - Tell us what git hash it was based on instead of master Hi Daniel, These patches are based on the latest release, v4.1.0. They are on top of the following git hash: 9e06029aea3 Update version for v4.1.0 release or - provide a pointer to a publically accessible git repo with it applied They are also publicly available from the following gitub repo.: https://github.com/oracle/qemu.git [branch multi-process-qemu-v0.3] Thanks! -- Jag or - Repost with based on current git master Regards, Daniel
Re: [Qemu-devel] [RFC v3 PATCH 00/45] Initial support of multi-process qemu
On Tue, Sep 03, 2019 at 04:37:26PM -0400, Jagannathan Raman wrote: > Started with the presentation in October 2017 made by Marc-Andre (Red Hat) > and Konrad Wilk (Oracle) [1], and continued by Jag's BoF at KVM Forum 2018, > the multi-process project is now a prototype and presented in this patchset. > > This first series enables the emulation of lsi53c895a in a separate process. > > We posted the Proof Of Concept patches [2] before the BoF session in 2018. > Subsequently, we posted RFC v1 [3] & RFC v2 [4] of this series. > > Thanks to the v1 & v2 review, we were able to incorporate the feedback into > our goals. > > In the summer of 2019, we participated in a conference with folks at RedHat, > who provided us with feedback to improve the design of this project. > > We want to present version 3 of this series which incorporates the feedback > we received for v2 & the enhancements suggested in the conference. Following > are the improvements made in this series: This patch series fails to apply to git master when I attempt and confirmed by patchew's failed attempt too https://patchew.org/QEMU/cover.1567534653.git.jag.ra...@oracle.com/ Can you do one of the following - Tell us what git hash it was based on instead of master or - provide a pointer to a publically accessible git repo with it applied or - Repost with based on current git master Regards, Daniel -- |: https://berrange.com -o-https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o-https://fstop138.berrange.com :| |: https://entangle-photo.org-o-https://www.instagram.com/dberrange :|
[Qemu-devel] [RFC v3 PATCH 00/45] Initial support of multi-process qemu
Started with the presentation in October 2017 made by Marc-Andre (Red Hat) and Konrad Wilk (Oracle) [1], and continued by Jag's BoF at KVM Forum 2018, the multi-process project is now a prototype and presented in this patchset. This first series enables the emulation of lsi53c895a in a separate process. We posted the Proof Of Concept patches [2] before the BoF session in 2018. Subsequently, we posted RFC v1 [3] & RFC v2 [4] of this series. Thanks to the v1 & v2 review, we were able to incorporate the feedback into our goals. In the summer of 2019, we participated in a conference with folks at RedHat, who provided us with feedback to improve the design of this project. We want to present version 3 of this series which incorporates the feedback we received for v2 & the enhancements suggested in the conference. Following are the improvements made in this series: - The command-line arguments are Orchestrator friendly. A new option named "-remote" carries the command-line of the emulation process. Added "rid" suboption to the "-device" option and moved "-drive" option to the emulation process's command-line. - Redesigned Monitor interface allows direct access to the remote process, thereby making it more scalable, maintainable & Orchestrator friendly. We also enabled more monitor commands for the remote process. - Enabled the remote process to run multiple LSI controllers - Redesigned the communication link to support multiple channels. MMIO transactions are carried out in a separate channel. - Fixed the bugs discovered during testing. Individual patches provide the details of these fixes. Following people contributed to this patchset: John G Johnson Jagannathan Raman Elena Ufimtseva Kanth Ghatraju For full concept writeup about QEMU disaggregation refer to docs/devel/qemu-multiprocess.txt. Please refer to docs/qemu-multiprocess.txt for usage information. We are planning on making the following improvements in the future: - Live migration - Performance improvements - Libvirt support - Enforcement of security policies - blockdev support We welcome all your ideas, concerns, and questions for this patchset. Thank you! [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 Elena Ufimtseva (20): multi-process: add a command line option for debug file multi-process: introduce proxy object mutli-process: build remote command line args multi-process: add support of device id to communication channel multi-process: modify BARs read/write to support dev_id multi-process: support dev id in config read/write multi-process: configure remote side devices multi-process: add qdev_proxy_add to create proxy devices multi-process: remote: add setup_devices and setup_drive msg processing multi-process: remote: use fd for socket from parent process multi-process: remote: add create_done condition multi-process: add processing of remote drive and device command line multi-process: refractor vl.c code to re-use in remote multi-process: add remote option multi-process: add remote options parser multi-process: add parse_cmdline in remote process multi-process: add support for multiple devices multi-process: add heartbeat timer and signal handler multi-process: handle heartbeat messages in remote process multi-process: add configure and usage information Jagannathan Raman (24): multi-process: memory: alloc RAM from file at offset multi-process: util: Add qemu_thread_cancel() to cancel running thread multi-process: Add stub functions to facilate build of multi-process multi-process: Add config option for multi-process QEMU multi-process: build system for remote device process multi-process: define proxy-link object multi-process: add functions to synchronize proxy and remote endpoints multi-process: setup PCI host bridge for remote device multi-process: setup a machine object for remote device process multi-process: setup memory manager for remote device multi-process: remote process initialization multi-process: PCI BAR read/write handling for proxy & remote endpoints multi-process: Add LSI device proxy object multi-process: Synchronize remote memory multi-process: create IOHUB object to handle irq multi-process: Introduce build flags to separate remote process code multi-process: Use separate MMIO communication channel multi-process: perform device reset in the remote process multi-process/mon: stub functions to enable QMP module for remote process multi-process/mon: build system for QMP module in remote process multi-process/mon: Refactor monitor/chardev functions out of vl