From: Avi Kivity <avi@redhat.com>
To: Michael Tokarev <mjt@tls.msk.ru>
Cc: KVM list <kvm@vger.kernel.org>
Subject: Re: high load with usb device
Date: Tue, 14 Sep 2010 16:45:54 +0200 [thread overview]
Message-ID: <4C8F8AA2.90403@redhat.com> (raw)
In-Reply-To: <4C8F78D6.2060808@msgid.tls.msk.ru>
On 09/14/2010 03:29 PM, Michael Tokarev wrote:
> 14.09.2010 17:25, Avi Kivity wrote:
> > On 09/14/2010 03:15 PM, Michael Tokarev wrote:
> []
> >> Looking at what hw/usb-uhci.c:uhci_frame_timer() routine
> >> does, it is quite expected to have that many writes and
> >> reads and that many gettimers(). It is polling for events
> >> every 1/1000th of a second, instead of using some form of
> >> select().
> >
> > IIUC that's mandated by USB hardware. The guest may place data in
> > memory, and USB polls it to see if it needs to tell send some message on
> > the bus.
>
> Well, checking guest memory does not involve so many
> reads/writes, i guess ;)
>
> > Please post an strace again, this time with -e trace=select. Looks like
> > each timer callback results in>50 syscalls, 4 of which are select()s).
>
> Here we go.
>
> qemu-syst 25728 mjt 0u CHR 136,9 0t0 12 /dev/pts/9
> qemu-syst 25728 mjt 1u CHR 136,9 0t0 12 /dev/pts/9
> qemu-syst 25728 mjt 2u CHR 136,9 0t0 12 /dev/pts/9
> qemu-syst 25728 mjt 3u CHR 10,232 0t0 4402 /dev/kvm
> qemu-syst 25728 mjt 4u 0000 0,9 0 607 anon_inode
> qemu-syst 25728 mjt 5r FIFO 0,8 0t0 11703862 pipe
> qemu-syst 25728 mjt 6w FIFO 0,8 0t0 11703862 pipe
> qemu-syst 25728 mjt 7u CHR 10,200 0t0 1228 /dev/net/tun
> qemu-syst 25728 mjt 8u 0000 0,9 0 607 anon_inode
> qemu-syst 25728 mjt 9u IPv4 11704055 0t0 TCP *:5900 (LISTEN)
> qemu-syst 25728 mjt 10u 0000 0,9 0 607 anon_inode
> qemu-syst 25728 mjt 11u 0000 0,9 0 607 anon_inode
> qemu-syst 25728 mjt 12u 0000 0,9 0 607 anon_inode
>
> 17:27:23.995096 select(13, [0 5 7 9 10 12], [], [], {1, 0}) = 1 (in [12], left {0, 998573})<0.001461>
> 17:27:23.996994 select(13, [0 5 7 9 10 12], [], [], {1, 0}) = 2 (in [5 10], left {0, 999987})<0.000042>
> 17:27:23.997258 select(13, [0 5 7 9 10 12], [], [], {1, 0}) = 1 (in [12], left {0, 999998})<0.000011>
> 17:27:23.997561 select(13, [0 5 7 9 10 12], [], [], {1, 0}) = 2 (in [5 10], left {0, 999998})<0.000009>
> 17:27:23.997739 select(13, [0 5 7 9 10 12], [], [], {1, 0}) = 1 (in [12], left {0, 998771})<0.001256>
> 17:27:23.999458 select(13, [0 5 7 9 10 12], [], [], {1, 0}) = 2 (in [5 10], left {0, 999991})<0.000017>
> 17:27:23.999665 select(13, [0 5 7 9 10 12], [], [], {1, 0}) = 1 (in [12], left {0, 999998})<0.000010>
> 17:27:23.999996 select(13, [0 5 7 9 10 12], [], [], {1, 0}) = 2 (in [5 10], left {0, 999998})<0.000009>
> 17:27:24.000199 select(13, [0 5 7 9 10 12], [], [], {1, 0}) = 1 (in [12], left {0, 998775})<0.001241>
> 17:27:24.001666 select(13, [0 5 7 9 10 12], [], [], {1, 0}) = 2 (in [5 10], left {0, 999997})<0.000006>
> 17:27:24.001768 select(13, [0 5 7 9 10 12], [], [], {1, 0}) = 1 (in [12], left {0, 999932})<0.000103>
> 17:27:24.001985 select(13, [0 5 7 9 10 12], [], [], {1, 0}) = 2 (in [5 10], left {0, 999998})<0.000005>
> 17:27:24.002061 select(13, [0 5 7 9 10 12], [], [], {1, 0}) = 1 (in [12], left {0, 998407})<0.001617>
>
That pipe is doing a lot of damage (I don't have it, and couldn't
reproduce your results, another pointer). Do you have CONFIG_EVENTFD
set? If not, why not?
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2010-09-14 14:46 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-03 12:21 high load with win7 & usb tablet Michael Tokarev
2010-09-10 11:47 ` Jes Sorensen
2010-09-10 12:16 ` Michael Tokarev
2010-09-10 16:17 ` high load with usb device Michael Tokarev
2010-09-12 9:26 ` Avi Kivity
2010-09-14 6:51 ` Michael Tokarev
2010-09-14 9:06 ` Avi Kivity
2010-09-14 9:08 ` Avi Kivity
2010-09-14 10:00 ` Michael Tokarev
2010-09-14 10:07 ` Avi Kivity
2010-09-14 10:25 ` Michael Tokarev
2010-09-14 10:39 ` Avi Kivity
2010-09-14 11:02 ` Michael Tokarev
2010-09-14 13:15 ` Michael Tokarev
2010-09-14 13:25 ` Avi Kivity
2010-09-14 13:29 ` Michael Tokarev
2010-09-14 13:38 ` Michael Tokarev
2010-09-14 14:45 ` Avi Kivity [this message]
2010-09-14 14:53 ` Michael Tokarev
2010-09-14 16:00 ` Avi Kivity
2010-09-14 16:29 ` Michael Tokarev
2010-09-14 16:37 ` Avi Kivity
2010-09-14 16:50 ` Michael Tokarev
2010-09-14 16:45 ` David S. Ahern
2010-09-14 15:51 ` David S. Ahern
2010-09-14 16:00 ` Michael Tokarev
2010-09-14 16:09 ` David S. Ahern
2010-09-10 12:19 ` high load with win7 & usb tablet Avi Kivity
2010-09-10 12:44 ` Michael Tokarev
2010-09-10 12:50 ` Avi Kivity
[not found] ` <4C8A44E6.2060008@msgid.tls.msk.ru>
2010-09-10 14:56 ` Avi Kivity
2010-09-10 15:03 ` Michael Tokarev
2010-09-10 16:03 ` Avi Kivity
2010-09-14 8:26 ` Brad Campbell
2010-09-14 8:33 ` Michael Tokarev
2010-09-14 8:46 ` Brad Campbell
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=4C8F8AA2.90403@redhat.com \
--to=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mjt@tls.msk.ru \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.