[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/6] Introduce monitor 'wait' command (v2)
From: |
Jan Kiszka |
Subject: |
Re: [Qemu-devel] [PATCH 2/6] Introduce monitor 'wait' command (v2) |
Date: |
Thu, 09 Apr 2009 16:19:55 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 |
Avi Kivity wrote:
> Anthony Liguori wrote:
>> Avi Kivity wrote:
>>> Anthony Liguori wrote:
>>>> The wait command will pause the monitor the command was issued in
>>>> until a new
>>>> event becomes available. Events are queued if there isn't a waiter
>>>> present.
>>>> The wait command completes after a single event is available.
>>>>
>>>
>>> How do you stop a wait if there are no pending events?
>>
>> You mean, cancel a wait? You cannot. I thought about whether it was
>> a problem or not. I'm not sure.
>
> A management agent might want to detach from guests, upgrade, restart,
> and reattach.
>
>>
>> You could introduce a wait-cancel command, but then you need a way to
>> identify which wait you want to cancel. I can't think of a simple way
>> to do that today.
>
> This, as well as the queueing that's necessary with this model,
> indicates (to me) that it is too complicated.
It should be feasible to handle some key sequence like ^C while the
monitor is suspended (ie. blocked on things like event-wait or migrate).
I thought about such a feature while reworking the involved parts but
postponed it as I saw no urgent need for it.
>
>>
>>>> Today, we queue events indefinitely but in the future, I suspect
>>>> we'll drop
>>>> events that are older than a certain amount of time to avoid infinitely
>>>> allocating memory for long running VMs.
>>>>
>>>
>>> This queueing plug the race where an event happens immediately after
>>> a wait completes. But it could be avoided completely by having
>>> asynchronous notifications on a single monitor.
>>
>> There are multiple things I think are being confused: asynchronous
>> completion of monitor commands, events, monitor multiplexing, and
>> non-human mode.
>>
>> There can only be one command active at any given time on a Monitor
>> context. We can have many Monitor contexts. There is currently only
>> one Monitor context connected to a character device at a given time.
>
> Don't think of 'migrate -d' as a command to perform migration, instead
> it's a command to start migration.
>
> I also object to exposing internal qemu implementation details like
> monitor contexts to the user (by forcing them to have multiple
> connections). If we can't have more than one monitor command, we need
> to fix that.
>
>>
>> I think what you want to see is something like this:
>>
>> <input> tag=4: info cpus
>> <input> tag=5: info kvm
>> <output> tag=5,rc=0: kvm enabled
>> <output> tag=4,rc=0: eip = 0x0000000444
>> <ouput> rc=0,class=vm-state,name=start: vm started
>>
>> To me, this is a combination of events, which is introduced by this
>> patch, a non-human monitor mode, and finally multiplexing multiple
>> monitors into a single session.
>>
>> Right now, you can have the same functional thing by having three
>> monitors. In the first monitor you'd see:
>>
>> (qemu) info cpus
>> eip = 0x000000444
>> (qemu)
>>
>> In the second you'd see:
>>
>> (qemu) info kvm
>> kvm enabled
>> (qemu)
>>
>> In the third you'd see:
>>
>> (qemu) wait
>> 23423423.23423: vm-state: start: vm started
>> (qemu)
>>
>> Even those the two info commands today are synchronous, there's
>> nothing requiring them to be (see migrate as an example). So I think
>> we're in agreement but you just want to jump ahead 6 months ;-)
>>
>
> Commands which are inherently synchronous should remain so. Commands
> which are inherently async should be coded like that. It was a mistake
> IMO to have 'migrate' be a synchronous command, it should have always
> behaved as if -d is given.
>
> Having tagged replies is a good idea, but IMO, introducing multiple
> monitors will create a lot of subtle problems, several of which we've
> already identified.
We do have multiple monitors already, try '-monitor X -serial mon:Y', or
also attach via gdb and issue 'monitor whatever'. And we should continue
to design the monitor interface for this (which means here: event
notification should be configured per monitor session).
Jan
--
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux
- [Qemu-devel] [PATCH 3/6] Introduce wait filtering (v2), (continued)
[Qemu-devel] Re: [PATCH 2/6] Introduce monitor 'wait' command (v2), Anthony Liguori, 2009/04/08
Re: [Qemu-devel] [PATCH 2/6] Introduce monitor 'wait' command (v2), Blue Swirl, 2009/04/08
Re: [Qemu-devel] [PATCH 2/6] Introduce monitor 'wait' command (v2), Avi Kivity, 2009/04/09
Re: [Qemu-devel] [PATCH 1/6] Allow multiple monitor devices (v2), Avi Kivity, 2009/04/09
- Re: [Qemu-devel] [PATCH 1/6] Allow multiple monitor devices (v2), Anthony Liguori, 2009/04/09
- Re: [Qemu-devel] [PATCH 1/6] Allow multiple monitor devices (v2), Avi Kivity, 2009/04/09
- Re: [Qemu-devel] [PATCH 1/6] Allow multiple monitor devices (v2), Anthony Liguori, 2009/04/09
- Re: [Qemu-devel] [PATCH 1/6] Allow multiple monitor devices (v2), Avi Kivity, 2009/04/09
- Re: [Qemu-devel] [PATCH 1/6] Allow multiple monitor devices (v2), Anthony Liguori, 2009/04/09
- Re: [Qemu-devel] [PATCH 1/6] Allow multiple monitor devices (v2), Avi Kivity, 2009/04/09
- Re: [Qemu-devel] [PATCH 1/6] Allow multiple monitor devices (v2), Anthony Liguori, 2009/04/09
- Re: [Qemu-devel] [PATCH 1/6] Allow multiple monitor devices (v2), Avi Kivity, 2009/04/09
- Re: [Qemu-devel] [PATCH 1/6] Allow multiple monitor devices (v2), Anthony Liguori, 2009/04/09