[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC][PATCH v5 00/21] virtagent: host/guest RPC communi
Re: [Qemu-devel] [RFC][PATCH v5 00/21] virtagent: host/guest RPC communication agent
Thu, 09 Dec 2010 15:03:48 -0600
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:188.8.131.52) Gecko/20101027 Lightning/1.0b1 Thunderbird/3.0.10
On 12/09/2010 02:45 PM, Michael Roth wrote:
On 12/08/2010 04:10 AM, Stefan Hajnoczi wrote:
On Fri, Dec 3, 2010 at 6:03 PM, Michael
These patches apply to master, and can also be obtained from:
Why XML-RPC and not QMP? When I skim through the patch series it
seems like much of the work being done is very similar to QMP.
It does, actually, more than I realized. In terms of data
encapsulation I don't see why we couldn't use QMP/JSON for at least
the current set of RPCs. XMLRPC does support a wider range of data
types however, such as nestable arrays and structs, and set-precision
numerical types like 32 and 64-bit ints/floats, which may prove useful
for future lower level interfaces.
1) XML-RPC is more widely supported than QMP (as there is zero support
for QMP outside of QEMU and libvirt)
2) The target of this work is for guest agents
3) QMP does not support bidirectional RPC messages.
4) The RPC mechanism is a minor part of virt-agent so ultimately, it
kind of doesn't matter. The RPC messages themselves are what's important.
QMP can be fairly trivially extended for some of these things, but
JSON is a limiting factor in some cases. We can't maintain strong
typing of data across the transport for instance, since JSON only
allows for a generic number type, whereas with XMLRPC we can
explicitly specify the machine representation. But whether this really
matters is hard to say with the limited set of RPCs we have right now.
In terms of using QMP all the way through...that sounds really cool,
but with the bi-directional client/server data being multiplexed over
a single channel, and increased potential for weird states resulting
from guest/guest agent restarts, there's a need for some additional
synchronization that might end up being fairly intrusive/undesirable
to work into QMP.
What concrete use-cases are there?
* Reboot support on x86. A QMP command can invoke guest-initiated
reboot via virtagent.
The ability to do a quick peek at guest stats via, say, /proc, is a
use case that seems to be fairly generally desirable. It's what
essentially started all this work, actually. That's also why I think a
simple/limited viewfile RPC for relatively small text files is
warranted regardless of whatever approach we end up taking for
handling large/binary file transfers.
Really useful for trouble-shooting things like soft-lockups.
Heartbeat monitoring has also been a fairly re-occurring approach to
identifying potential problems in our cloud, and it's not even
something we're capable of accomplishing in a production environment
due to having limited network access to the guests. Being able to do
it without relying on custom/network-based daemons would be pretty
* exec (planned)
Internally and externally I've seen interest in guest-initiated
snapshots, but that would tie into exec or some other, higher-level,
RPC, which isn't yet well-defined.
* copyfile (planned)
Nothing solid, but I think it's generally desirable. Quick access to
coredumps and such would be useful. Lots of discussion on how to
implement this and I think we have some good potential approaches to
adding this soon.
* writefile (planned)
Nothing solid. But guest activation is probably a big potential use
case for this one. Managing various guest kernel params is another.
Another would be deploying custom scripts to run via exec.
Will virtagent be extensible by host administrators or end-users? For
example, can I drop in a custom command to collect statistics and
invoke it across VMs on my hosts? Do I need to recompile QEMU and/or
the virtagent daemon?
writefile + exec would probably be the best way to achieve this. I
don't think there are any plans to make the supported set of RPCs
- [Qemu-devel] [RFC][PATCH v5 20/21] virtagent: integrate virtagent server/client via chardev, (continued)
- [Qemu-devel] [RFC][PATCH v5 20/21] virtagent: integrate virtagent server/client via chardev, Michael Roth, 2010/12/03
- [Qemu-devel] [RFC][PATCH v5 15/21] virtagent: add agent_capabilities qmp/hmp commands, Michael Roth, 2010/12/03
- [Qemu-devel] [RFC][PATCH v5 16/21] virtagent: add client capabilities init function, Michael Roth, 2010/12/03
- [Qemu-devel] [RFC][PATCH v5 10/21] virtagent: add agent_viewdmesg qmp/hmp commands, Michael Roth, 2010/12/03
- [Qemu-devel] [RFC][PATCH v5 21/21] virtagent: various bits to build QEMU with virtagent, Michael Roth, 2010/12/03
- [Qemu-devel] Re: [RFC][PATCH v5 00/21] virtagent: host/guest RPC communication agent, Jes Sorensen, 2010/12/07
- Re: [Qemu-devel] [RFC][PATCH v5 00/21] virtagent: host/guest RPC communication agent, Stefan Hajnoczi, 2010/12/08