Michael S. Tsirkin
2015-Sep-21 12:13 UTC
RFC: virtio-peer shared memory based peer communication device
On Fri, Sep 18, 2015 at 06:29:27PM +0200, Claudio Fontana wrote:> Hello, > > this is a first RFC for virtio-peer 0.1, which is still very much a work in progress: > > https://github.com/hw-claudio/virtio-peer/wiki > > It is also available as PDF there, but the text is reproduced here for commenting: > > Peer shared memory communication device (virtio-peer) > > General Overview > > (I recommend looking at the PDF for some clarifying pictures) > > The Virtio Peer shared memory communication device (virtio-peer) is a > virtual device which allows high performance low latency guest to > guest communication. It uses a new queue extension feature tentatively > called VIRTIO_F_WINDOW which indicates that descriptor tables, > available and used rings and Queue Data reside in physical memory > ranges called Windows, each identified with an unique identifier > called WindowID.So if I had to summarize the difference from regular virtio, I'd say the main one is that this uses window id + offset instead of the physical address. My question is - why do it? All windows are in memory space, are they not? How about guest using full physical addresses, and hypervisor sending the window physical address to VM2? VM2 can uses that to find both window id and offset. This way at least VM1 can use regular virtio without changes. -- MST
Jan Kiszka
2015-Sep-21 12:32 UTC
RFC: virtio-peer shared memory based peer communication device
On 2015-09-21 14:13, Michael S. Tsirkin wrote:> On Fri, Sep 18, 2015 at 06:29:27PM +0200, Claudio Fontana wrote: >> Hello, >> >> this is a first RFC for virtio-peer 0.1, which is still very much a work in progress: >> >> https://github.com/hw-claudio/virtio-peer/wiki >> >> It is also available as PDF there, but the text is reproduced here for commenting: >> >> Peer shared memory communication device (virtio-peer) >> >> General Overview >> >> (I recommend looking at the PDF for some clarifying pictures) >> >> The Virtio Peer shared memory communication device (virtio-peer) is a >> virtual device which allows high performance low latency guest to >> guest communication. It uses a new queue extension feature tentatively >> called VIRTIO_F_WINDOW which indicates that descriptor tables, >> available and used rings and Queue Data reside in physical memory >> ranges called Windows, each identified with an unique identifier >> called WindowID. > > So if I had to summarize the difference from regular virtio, > I'd say the main one is that this uses window id + offset > instead of the physical address. > > > My question is - why do it? > > All windows are in memory space, are they not? > > How about guest using full physical addresses, > and hypervisor sending the window physical address > to VM2? > > VM2 can uses that to find both window id and offset. > > > This way at least VM1 can use regular virtio without changes.What would be the value of having different drivers in VM1 and VM2, specifically if both run Linux? Jan -- Siemens AG, Corporate Technology, CT RTC ITP SES-DE Corporate Competence Center Embedded Linux
Michael S. Tsirkin
2015-Sep-24 10:04 UTC
RFC: virtio-peer shared memory based peer communication device
On Mon, Sep 21, 2015 at 02:32:10PM +0200, Jan Kiszka wrote:> On 2015-09-21 14:13, Michael S. Tsirkin wrote: > > On Fri, Sep 18, 2015 at 06:29:27PM +0200, Claudio Fontana wrote: > >> Hello, > >> > >> this is a first RFC for virtio-peer 0.1, which is still very much a work in progress: > >> > >> https://github.com/hw-claudio/virtio-peer/wiki > >> > >> It is also available as PDF there, but the text is reproduced here for commenting: > >> > >> Peer shared memory communication device (virtio-peer) > >> > >> General Overview > >> > >> (I recommend looking at the PDF for some clarifying pictures) > >> > >> The Virtio Peer shared memory communication device (virtio-peer) is a > >> virtual device which allows high performance low latency guest to > >> guest communication. It uses a new queue extension feature tentatively > >> called VIRTIO_F_WINDOW which indicates that descriptor tables, > >> available and used rings and Queue Data reside in physical memory > >> ranges called Windows, each identified with an unique identifier > >> called WindowID. > > > > So if I had to summarize the difference from regular virtio, > > I'd say the main one is that this uses window id + offset > > instead of the physical address. > > > > > > My question is - why do it? > > > > All windows are in memory space, are they not? > > > > How about guest using full physical addresses, > > and hypervisor sending the window physical address > > to VM2? > > > > VM2 can uses that to find both window id and offset. > > > > > > This way at least VM1 can use regular virtio without changes. > > What would be the value of having different drivers in VM1 and VM2, > specifically if both run Linux? > > JanIt's common to have a VM act as a switch between others. In this setup, there's value in being able to support existing guests as endpoints, with new drivers only required for the switch.> -- > Siemens AG, Corporate Technology, CT RTC ITP SES-DE > Corporate Competence Center Embedded Linux
Possibly Parallel Threads
- RFC: virtio-peer shared memory based peer communication device
- RFC: virtio-peer shared memory based peer communication device
- [opnfv-tech-discuss] RFC: virtio-peer shared memory based peer communication device
- [opnfv-tech-discuss] RFC: virtio-peer shared memory based peer communication device
- rfc: vhost user enhancements for vm2vm communication