[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages
From: |
Johannes Berg |
Subject: |
Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages |
Date: |
Mon, 09 Sep 2019 19:34:24 +0200 |
User-agent: |
Evolution 3.30.5 (3.30.5-1.fc29) |
On Mon, 2019-09-09 at 18:00 +0200, Stefan Hajnoczi wrote:
> Is this really necessary?
Yes* :)
> Can the simulation interpose between the
> call/kick eventfds in order to control when events happen?
>
> CPU --cpu_kickfd--> Simulation --vhost_kickfd--> vhost-user device
>
> and:
>
> vhost-user device --vhost_callfd--> Simulation -->cpu_callfd-> CPU
>
> The simluation controls when the CPU's kick is seen by the device and
> also when the call is seen by the CPU.
The point isn't to let the simulation know about anything that happens.
The CPU and the device are *part* of the simulation.
> I don't understand why new vhost-user protocol messages are required.
I guess I haven't really explained it well then :-)
So let's say, WLOG, I have a simulated network and a bunch of Linux
machines that are running on simulation time. Today I can do that only
with user-mode Linux, but we'll see.
Now in order to run everything on simulation time, *everything* that
happens in the simulation needs to request a simulation calendar entry,
and gets told when that entry is scheduled.
So think, for example, you have
CPU ---[kick]---> device
Now, this is essentially triggering an interrupt in the device. However,
the simulation code has to ensure that the simulated device's interrupt
handling only happens at a scheduler entry. Fundamentally, the
simulation serializes all processing, contrary to what you want in a
real system.
Now, this means that the CPU (that's part of the simulation) has to
*wait* for the device to add an entry to the simulation calendar in
response to the kick... That means that it really has to look like
CPU device calendar
---[kick]-->
---[add entry]-->
<---[return]-----
<-[return]--
so that the CPU won't get to idle or some other processing where it asks
the simulation calendar for its own next entry...
Yes, like I said before, I realize that all of this is completely
opposed to what you want in a real system, but then in a real system you
also have real timeouts, and don't just skip time forward when the
simulation calendar says so ...
* Now, of course I lied, this is software after all. The *concept* is
necessary, but it's not strictly necessary to do this in-band in the
vhost-user protocol.
We could do an out-of-band simulation socket for the kick signal and
just pretend we're using polling mode as far as the vhost-user protocol
is concerned, but it'd probably be harder to implement, and we couldn't
do it in a way that we could actually contribute anything upstream.
There are quite a few papers proposing such simulation systems, I only
found the VMSimInt one publishing their code, but even that is some
hacks on top of qemu 1.6.0...
johannes
- [Qemu-devel] [RFC] vhost-user simulation extension, Johannes Berg, 2019/09/02
- [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages, Johannes Berg, 2019/09/02
- Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages, Johannes Berg, 2019/09/05
- Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages, Stefan Hajnoczi, 2019/09/09
- Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages,
Johannes Berg <=
- Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages, Stefan Hajnoczi, 2019/09/10
- Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages, Johannes Berg, 2019/09/10
- Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages, Michael S. Tsirkin, 2019/09/10
- Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages, Johannes Berg, 2019/09/10
- Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages, Stefan Hajnoczi, 2019/09/11
- Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages, Stefan Hajnoczi, 2019/09/11
- Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages, Johannes Berg, 2019/09/11
- Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages, Stefan Hajnoczi, 2019/09/11
Re: [Qemu-devel] [RFC] docs: vhost-user: add in-band kick/call messages, Stefan Hajnoczi, 2019/09/11