Re: [PATCH 04/22] Leave inner main_loop faster on pending requests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2011-01-31 14:17, Avi Kivity wrote:
> On 01/31/2011 01:22 PM, Jan Kiszka wrote:
>> On 2011-01-31 10:52, Avi Kivity wrote:
>>>  On 01/27/2011 03:09 PM, Jan Kiszka wrote:
>>>>  If there is any pending request that requires us to leave the inner loop
>>>>  if main_loop, makes sure we do this as soon as possible by enforcing
>>>>  non-blocking IO processing.
>>>>
>>>>  At this change, move variable definitions out of the inner loop to
>>>>  improve readability.
>>>>
>>>>  Signed-off-by: Jan Kiszka<jan.kiszka@xxxxxxxxxxx>
>>>>  ---
>>>>    vl.c |   11 +++++++----
>>>>    1 files changed, 7 insertions(+), 4 deletions(-)
>>>>
>>>>  diff --git a/vl.c b/vl.c
>>>>  index 5fad700..2ebc55b 100644
>>>>  --- a/vl.c
>>>>  +++ b/vl.c
>>>>  @@ -1384,18 +1384,21 @@ qemu_irq qemu_system_powerdown;
>>>>
>>>>    static void main_loop(void)
>>>>    {
>>>>  +    bool nonblocking = false;
>>>>  +#ifdef CONFIG_PROFILER
>>>>  +    int64_t ti;
>>>>  +#endif
>>>>        int r;
>>>>
>>>>        qemu_main_loop_start();
>>>>
>>>>        for (;;) {
>>>>            do {
>>>>  -            bool nonblocking = false;
>>>>  -#ifdef CONFIG_PROFILER
>>>>  -            int64_t ti;
>>>>  -#endif
>>>>    #ifndef CONFIG_IOTHREAD
>>>>                nonblocking = cpu_exec_all();
>>>>  +            if (!vm_can_run()) {
>>>>  +                nonblocking = true;
>>>>  +            }
>>>
>>>  Doesn't this cause vmstop to spin?  We'll never execute
>>>  main_loop_wait(false) if I read the code correctly?
>>>
>>
>> The code path is not changed, we just poll instead of wait in
>> main_loop_wait.
> 
> Where do we wait then?
> 
>> Also, I didn't get your error scenario yet. Even if we left the loop
>> here, what magic would main_loop_wait do to vmstop processing? The stop
>> request is handled outside the loop, that's why we should leave ASAP.
> 
> I'm just missing the alternate place where we sleep.  If there's no such 
> place, we spin.
> 

Probably you are misled by the name of vm_can_run. It should better be
renamed to requests_pending or something like that - iow, it is only
true if some request is pending and not if just the vm is in stop mode.

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux