qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Amit Shah <amit.shah@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
	qemu-devel@nongnu.org, KVM List <kvm@vger.kernel.org>
Subject: [Qemu-devel] Re: Slowdowns comparing qemu-kvm.git to qemu.git: vcpu/thread scheduling differences
Date: Mon, 08 Feb 2010 14:28:42 -0600	[thread overview]
Message-ID: <4B7073FA.8000905@codemonkey.ws> (raw)
In-Reply-To: <20100208173519.GA19993@amit-x200.redhat.com>

On 02/08/2010 11:35 AM, Amit Shah wrote:
> On (Mon) Feb 08 2010 [08:57:05], Anthony Liguori wrote:
>    
>> On 02/08/2010 07:46 AM, Amit Shah wrote:
>>      
>>> Hello,
>>>
>>> In my testing of virtio-console, I found qemu-kvm.git introduces a lot
>>> of overhead in thread scheduling compared to qemu.git.
>>>
>>> My test sends a 260M file from the host to a guest via a virtio-console
>>> port and then computes the sha1sum of the file on the host as well as on
>>> the guest, compares the checksum and declares the result based on the
>>> checksum match. The test passes in all the scenarios listed below,
>>> indicating there's no unsafe data transfer.
>>>
>>>
>>> Repo               Time taken
>>> -----              ----------
>>> qemu.git<   1 m (typically 30s)
>>> qemu-kvm.git>   16m
>>> qemu-iothread        ~ 5m
>>>
>>>        
>> That very likely suggests that there are missing qemu_notify_events() in
>> qemu-kvm.git and you're getting blocked waiting for the next timer event
>> to fire.
>>      
> Hm, if that's the case, should virtio_notify() have a call to
> qemu_notify_event()?
>    

No, basically, the problem will boil down to, the IO thread is 
select()'d waiting for an event to occur.  However, you've done 
something in the VCPU thread that requires the IO thread to run it's 
main loop.  You need to use qemu_notify_event() to force the IO thread 
to break out of select().

Debugging these problems are very difficult and the complexity here is 
the main reason the IO thread still hasn't been enabled by default in 
qemu.git.

I'd suggest looking at the main loop in qemu-kvm, seeing what isn't 
processed as a result of fd becoming readable/writable, and then making 
sure that any of those mechanisms you're relying on in virtio-console 
have the appropriate tie-ins to qemu_notify_event().

Regards,

Anthony Liguori

  reply	other threads:[~2010-02-08 20:28 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-08 13:46 [Qemu-devel] Slowdowns comparing qemu-kvm.git to qemu.git: vcpu/thread scheduling differences Amit Shah
2010-02-08 14:57 ` [Qemu-devel] " Anthony Liguori
2010-02-08 17:35   ` Amit Shah
2010-02-08 20:28     ` Anthony Liguori [this message]
2010-02-09 19:12       ` Jamie Lokier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B7073FA.8000905@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=amit.shah@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).