From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: Luca Tettamanti <kronos.it-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: kvm-devel-TtF/mJH4Jtrk1uMJSBkQmQ@public.gmane.org,
malc <av1474-3kx9bbwexCU@public.gmane.org>,
qemu-devel-qX2TKyscuCcdnm+yROfE0A@public.gmane.org
Subject: Re: [PATCH 0/4] Rework alarm timer infrastrucure - take2
Date: Wed, 22 Aug 2007 08:02:07 +0300 [thread overview]
Message-ID: <46CBC34F.6060601@qumranet.com> (raw)
In-Reply-To: <20070821193834.GB13544-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
Luca Tettamanti wrote:
> Actually I'm having troubles with cyclesoak (probably it's calibration),
> numbers are not very stable across multiple runs...
>
I've had good results with cyclesoak; maybe you need to run it in
runlevel 3 so the load generated by moving the mouse or breathing
doesn't affect meaurements.
> I've also tried APC which was suggested by malc[1] and:
> - readings are far more stable
> - the gap between dynticks and non-dynticks seems not significant
>
>
>> Can you verify this by running
>>
>> strace -c -p `pgrep qemu` & sleep 10; pkill strace
>>
>> for all 4 cases, and posting the results?
>>
>
> Plain QEMU:
>
> With dynticks:
>
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 57.97 0.000469 0 13795 clock_gettime
> 32.88 0.000266 0 1350 gettimeofday
> 7.42 0.000060 0 1423 1072 sigreturn
> 1.73 0.000014 0 5049 timer_gettime
> 0.00 0.000000 0 1683 1072 select
> 0.00 0.000000 0 2978 timer_settime
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 0.000809 26278 2144 total
>
The 1072 select() errors are the delivered ticks (EINTR). But why only
1000? would have expected 10000 for a 1000Hz guest in a 10 sec period.
> HPET:
>
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 87.48 0.010459 1 10381 10050 select
> 8.45 0.001010 0 40736 clock_gettime
> 2.73 0.000326 0 10049 gettimeofday
> 1.35 0.000161 0 10086 10064 sigreturn
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 0.011956 71252 20114 total
>
This is expected. 1 tick per millisecond.
> Unix (SIGALRM):
>
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 90.36 0.011663 1 10291 9959 select
> 7.38 0.000953 0 40355 clock_gettime
> 2.05 0.000264 0 9960 gettimeofday
> 0.21 0.000027 0 9985 9969 sigreturn
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 0.012907 70591 19928 total
>
Same here.
> And KVM:
>
> dynticks:
>
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 78.90 0.004001 1 6681 5088 rt_sigtimedwait
> 10.87 0.000551 0 27901 clock_gettime
> 4.93 0.000250 0 7622 timer_settime
> 4.30 0.000218 0 10078 timer_gettime
> 0.39 0.000020 0 3863 gettimeofday
> 0.35 0.000018 0 6054 ioctl
> 0.26 0.000013 0 4196 select
> 0.00 0.000000 0 1593 rt_sigaction
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 0.005071 67988 5088 total
>
kvm uses sigtimedwait() to wait for signals. Here, an error (ETIMEDOUT)
indicates we did _not_ get a wakeup, so there are 1500 wakeups in a 10
second period. Strange. Some calibration error?
> HPET:
>
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 90.20 0.011029 0 32437 22244 rt_sigtimedwait
> 4.46 0.000545 0 44164 clock_gettime
> 2.59 0.000317 0 12128 gettimeofday
> 1.50 0.000184 0 10193 rt_sigaction
> 1.10 0.000134 0 12461 select
> 0.15 0.000018 0 6060 ioctl
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 0.012227 117443 22244 total
>
10K wakeups per second. The code is not particularly efficient (11
syscalls per tick), but overhead is still low.
> Unix:
>
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 83.29 0.012522 0 31652 21709 rt_sigtimedwait
> 6.91 0.001039 0 43125 clock_gettime
> 3.50 0.000526 0 6042 ioctl
> 2.74 0.000412 0 9943 rt_sigaction
> 1.98 0.000298 0 12183 select
> 1.58 0.000238 0 11850 gettimeofday
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 0.015035 114795 21709 total
>
Same thing.
> The guest is an idle kernel with HZ=1000.
>
Can you double check this? The dyntick results show that this is either
a 100Hz kernel, or that there is a serious bug in dynticks.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
WARNING: multiple messages have this Message-ID (diff)
From: Avi Kivity <avi@qumranet.com>
To: Luca Tettamanti <kronos.it@gmail.com>
Cc: kvm-devel@lists.sf.net, qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: [kvm-devel] [PATCH 0/4] Rework alarm timer infrastrucure - take2
Date: Wed, 22 Aug 2007 08:02:07 +0300 [thread overview]
Message-ID: <46CBC34F.6060601@qumranet.com> (raw)
In-Reply-To: <20070821193834.GB13544@dreamland.darkstar.lan>
Luca Tettamanti wrote:
> Actually I'm having troubles with cyclesoak (probably it's calibration),
> numbers are not very stable across multiple runs...
>
I've had good results with cyclesoak; maybe you need to run it in
runlevel 3 so the load generated by moving the mouse or breathing
doesn't affect meaurements.
> I've also tried APC which was suggested by malc[1] and:
> - readings are far more stable
> - the gap between dynticks and non-dynticks seems not significant
>
>
>> Can you verify this by running
>>
>> strace -c -p `pgrep qemu` & sleep 10; pkill strace
>>
>> for all 4 cases, and posting the results?
>>
>
> Plain QEMU:
>
> With dynticks:
>
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 57.97 0.000469 0 13795 clock_gettime
> 32.88 0.000266 0 1350 gettimeofday
> 7.42 0.000060 0 1423 1072 sigreturn
> 1.73 0.000014 0 5049 timer_gettime
> 0.00 0.000000 0 1683 1072 select
> 0.00 0.000000 0 2978 timer_settime
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 0.000809 26278 2144 total
>
The 1072 select() errors are the delivered ticks (EINTR). But why only
1000? would have expected 10000 for a 1000Hz guest in a 10 sec period.
> HPET:
>
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 87.48 0.010459 1 10381 10050 select
> 8.45 0.001010 0 40736 clock_gettime
> 2.73 0.000326 0 10049 gettimeofday
> 1.35 0.000161 0 10086 10064 sigreturn
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 0.011956 71252 20114 total
>
This is expected. 1 tick per millisecond.
> Unix (SIGALRM):
>
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 90.36 0.011663 1 10291 9959 select
> 7.38 0.000953 0 40355 clock_gettime
> 2.05 0.000264 0 9960 gettimeofday
> 0.21 0.000027 0 9985 9969 sigreturn
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 0.012907 70591 19928 total
>
Same here.
> And KVM:
>
> dynticks:
>
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 78.90 0.004001 1 6681 5088 rt_sigtimedwait
> 10.87 0.000551 0 27901 clock_gettime
> 4.93 0.000250 0 7622 timer_settime
> 4.30 0.000218 0 10078 timer_gettime
> 0.39 0.000020 0 3863 gettimeofday
> 0.35 0.000018 0 6054 ioctl
> 0.26 0.000013 0 4196 select
> 0.00 0.000000 0 1593 rt_sigaction
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 0.005071 67988 5088 total
>
kvm uses sigtimedwait() to wait for signals. Here, an error (ETIMEDOUT)
indicates we did _not_ get a wakeup, so there are 1500 wakeups in a 10
second period. Strange. Some calibration error?
> HPET:
>
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 90.20 0.011029 0 32437 22244 rt_sigtimedwait
> 4.46 0.000545 0 44164 clock_gettime
> 2.59 0.000317 0 12128 gettimeofday
> 1.50 0.000184 0 10193 rt_sigaction
> 1.10 0.000134 0 12461 select
> 0.15 0.000018 0 6060 ioctl
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 0.012227 117443 22244 total
>
10K wakeups per second. The code is not particularly efficient (11
syscalls per tick), but overhead is still low.
> Unix:
>
> % time seconds usecs/call calls errors syscall
> ------ ----------- ----------- --------- --------- ----------------
> 83.29 0.012522 0 31652 21709 rt_sigtimedwait
> 6.91 0.001039 0 43125 clock_gettime
> 3.50 0.000526 0 6042 ioctl
> 2.74 0.000412 0 9943 rt_sigaction
> 1.98 0.000298 0 12183 select
> 1.58 0.000238 0 11850 gettimeofday
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 0.015035 114795 21709 total
>
Same thing.
> The guest is an idle kernel with HZ=1000.
>
Can you double check this? The dyntick results show that this is either
a 100Hz kernel, or that there is a serious bug in dynticks.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
next prev parent reply other threads:[~2007-08-22 5:02 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-17 23:11 [PATCH 0/4] Rework alarm timer infrastrucure - take 2 Luca Tettamanti
2007-08-17 23:11 ` [Qemu-devel] " Luca Tettamanti
2007-08-17 23:11 ` [PATCH 1/4] Rework alarm timer infrastrucure Luca Tettamanti
2007-08-17 23:11 ` [Qemu-devel] " Luca Tettamanti
2007-08-17 23:11 ` [PATCH 2/4] Add -clock option Luca Tettamanti
2007-08-17 23:11 ` [Qemu-devel] " Luca Tettamanti
2007-08-17 23:11 ` [PATCH 3/4] Add support for HPET periodic timer Luca Tettamanti
2007-08-17 23:11 ` [Qemu-devel] " Luca Tettamanti
[not found] ` <20070817231406.493008599-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2007-08-21 19:24 ` Matthew Kent
2007-08-21 19:24 ` Matthew Kent
2007-08-21 19:40 ` Luca
2007-08-21 19:40 ` Luca
[not found] ` <68676e00708211240k7237bf21k131257dd28063d26-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-21 20:15 ` Matthew Kent
2007-08-21 20:15 ` Matthew Kent
2007-08-22 6:48 ` Dan Kenigsberg
2007-08-22 6:48 ` [kvm-devel] " Dan Kenigsberg
[not found] ` <20070822064851.GA16295-RO/WWmT55CHJJbofclyLPCHBx9XpghdU@public.gmane.org>
2007-08-22 7:03 ` Avi Kivity
2007-08-22 7:03 ` [kvm-devel] " Avi Kivity
[not found] ` <46CBDFC4.5060207-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-22 12:34 ` Andi Kleen
2007-08-22 12:34 ` [kvm-devel] " Andi Kleen
[not found] ` <20070822123424.GK2642-KvMlXPVkKihbpigZmTR7Iw@public.gmane.org>
2007-08-22 21:11 ` Dan Kenigsberg
2007-08-22 21:11 ` [kvm-devel] " Dan Kenigsberg
[not found] ` <20070822211150.GA22093-RO/WWmT55CHJJbofclyLPCHBx9XpghdU@public.gmane.org>
2007-08-22 22:09 ` Andi Kleen
2007-08-22 22:09 ` [kvm-devel] " Andi Kleen
[not found] ` <20070822220947.GK8058-KvMlXPVkKihbpigZmTR7Iw@public.gmane.org>
2007-08-23 7:02 ` Dan Kenigsberg
2007-08-23 7:02 ` [kvm-devel] " Dan Kenigsberg
[not found] ` <20070823070230.GA24942-RO/WWmT55CHJJbofclyLPCHBx9XpghdU@public.gmane.org>
2007-08-24 20:18 ` Luca
2007-08-24 20:18 ` [kvm-devel] " Luca
2007-08-25 8:24 ` Dan Kenigsberg
2007-09-03 8:40 ` GUERRAZ Francois
2007-08-17 23:11 ` [PATCH 4/4] Add support for dynamic ticks Luca Tettamanti
2007-08-17 23:11 ` [Qemu-devel] " Luca Tettamanti
[not found] ` <20070817231149.544849769-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2007-08-17 23:48 ` [Qemu-devel] [PATCH 0/4] Rework alarm timer infrastrucure - take 2 Christian MICHON
2007-08-17 23:48 ` Christian MICHON
[not found] ` <46d6db660708171648m3a798685q6514261bc097bc62-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-18 0:10 ` Luca
2007-08-18 0:10 ` [kvm-devel] " Luca
2007-08-18 15:17 ` Anthony Liguori
2007-08-18 15:17 ` [Qemu-devel] Re: [kvm-devel] " Anthony Liguori
2007-08-18 16:53 ` [Qemu-devel] RE: [kvm-devel] [PATCH 0/4] Rework alarm timer infrastrucure - take2 Dor Laor
[not found] ` <64F9B87B6B770947A9F8391472E032160D4645F0-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-08-18 22:02 ` Luca Tettamanti
2007-08-18 22:02 ` [Qemu-devel] Re: [kvm-devel] " Luca Tettamanti
[not found] ` <20070818220252.GA19526-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
2007-08-18 23:58 ` Anthony Liguori
2007-08-18 23:58 ` [Qemu-devel] Re: [kvm-devel] " Anthony Liguori
2007-08-19 7:36 ` [PATCH 0/4] Rework alarm timer infrastrucure -take2 Dor Laor
2007-08-19 7:36 ` [Qemu-devel] RE: [kvm-devel] " Dor Laor
2007-08-19 8:24 ` [PATCH 0/4] Rework alarm timer infrastrucure - take2 Avi Kivity
2007-08-19 8:24 ` [Qemu-devel] Re: [kvm-devel] " Avi Kivity
[not found] ` <46C7FE32.4050309-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-19 13:10 ` [Qemu-devel] " Jamie Lokier
2007-08-19 13:10 ` [Qemu-devel] Re: [kvm-devel] " Jamie Lokier
[not found] ` <20070819131042.GA22798-tp2ajI7sM85Y6zH9YvfY1x2eb7JE58TQ@public.gmane.org>
2007-08-19 13:48 ` [Qemu-devel] " Avi Kivity
2007-08-19 13:48 ` [kvm-devel] " Avi Kivity
[not found] ` <46C84A16.7040305-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-19 13:57 ` Paul Brook
2007-08-19 13:57 ` [kvm-devel] " Paul Brook
[not found] ` <200708191457.21237.paul-qD8j1LwMmJjtCj0u4l0SBw@public.gmane.org>
2007-08-19 14:07 ` Avi Kivity
2007-08-19 14:07 ` [kvm-devel] " Avi Kivity
[not found] ` <46C84E95.7070802-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-19 14:27 ` Dor Laor
2007-08-19 14:27 ` [kvm-devel] " Dor Laor
2007-08-20 9:25 ` Avi Kivity
2007-08-20 9:25 ` [kvm-devel] " Avi Kivity
2007-08-19 17:15 ` Jamie Lokier
2007-08-19 17:15 ` [kvm-devel] " Jamie Lokier
[not found] ` <20070819171545.GB16928-tp2ajI7sM85Y6zH9YvfY1x2eb7JE58TQ@public.gmane.org>
2007-08-19 19:29 ` [Qemu-devel] Re: [PATCH 0/4] Rework alarmtimer " Dor Laor
2007-08-19 19:29 ` [kvm-devel] " Dor Laor
2007-08-19 19:30 ` [Qemu-devel] Re: [PATCH 0/4] Rework alarm timer " Avi Kivity
2007-08-19 19:30 ` [kvm-devel] " Avi Kivity
2007-08-19 16:52 ` Luca
2007-08-19 16:52 ` [Qemu-devel] Re: [kvm-devel] " Luca
[not found] ` <68676e00708190952g7d4751c2g87a6ff71dd278f71-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-19 19:31 ` Avi Kivity
2007-08-19 19:31 ` [Qemu-devel] Re: [kvm-devel] " Avi Kivity
[not found] ` <46C89A8E.7040609-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-20 21:20 ` Luca Tettamanti
2007-08-20 21:20 ` [Qemu-devel] Re: [kvm-devel] " Luca Tettamanti
[not found] ` <20070820212058.GA6713-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
2007-08-20 21:55 ` [Qemu-devel] " malc
2007-08-20 21:55 ` [Qemu-devel] Re: [kvm-devel] " malc
[not found] ` <Pine.LNX.4.64.0708210140540.16421-KsBd/I2zj1m2ZGm1qqSgDg@public.gmane.org>
2007-08-20 22:49 ` [Qemu-devel] " Luca
2007-08-20 22:49 ` [kvm-devel] " Luca
2007-08-21 12:09 ` Avi Kivity
2007-08-21 12:09 ` [Qemu-devel] Re: [kvm-devel] " Avi Kivity
[not found] ` <46CAD607.2080504-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-21 19:38 ` Luca Tettamanti
2007-08-21 19:38 ` [Qemu-devel] Re: [kvm-devel] " Luca Tettamanti
[not found] ` <20070821193834.GB13544-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
2007-08-21 19:44 ` malc
2007-08-21 19:44 ` [Qemu-devel] Re: [kvm-devel] " malc
2007-08-22 5:02 ` Avi Kivity [this message]
2007-08-22 5:02 ` Avi Kivity
[not found] ` <46CBC34F.6060601-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-22 16:12 ` Luca Tettamanti
2007-08-22 16:12 ` [Qemu-devel] Re: [kvm-devel] " Luca Tettamanti
[not found] ` <20070822161211.GA30147-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
2007-08-22 16:21 ` Avi Kivity
2007-08-22 16:21 ` [Qemu-devel] Re: [kvm-devel] " Avi Kivity
[not found] ` <46CC6285.3090904-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-22 16:38 ` Luca
2007-08-22 16:38 ` [Qemu-devel] Re: [kvm-devel] " Luca
[not found] ` <68676e00708220938y57c07edas705fc8360aefcb78-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-22 16:45 ` Avi Kivity
2007-08-22 16:45 ` [Qemu-devel] Re: [kvm-devel] " Avi Kivity
[not found] ` <46CC680C.1030307-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-22 17:23 ` Luca
2007-08-22 17:23 ` [Qemu-devel] Re: [kvm-devel] " Luca
[not found] ` <68676e00708221023m352c2de3y3b19188dbb9ef49e-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-22 17:39 ` Luca
2007-08-22 17:39 ` [Qemu-devel] Re: [kvm-devel] " Luca
2007-08-22 19:21 ` Luca
2007-08-22 19:21 ` [Qemu-devel] Re: [kvm-devel] " Luca
[not found] ` <68676e00708221221n6f8fcd67m9d15f7fea663ec71-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-22 21:35 ` Dor Laor
2007-08-22 21:35 ` [Qemu-devel] RE: [kvm-devel] " Dor Laor
[not found] ` <64F9B87B6B770947A9F8391472E032160D5042F3-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-08-22 22:07 ` Luca
2007-08-22 22:07 ` [Qemu-devel] Re: [kvm-devel] " Luca
2007-08-22 20:42 ` Dan Kenigsberg
2007-08-22 20:42 ` [Qemu-devel] Re: [kvm-devel] " Dan Kenigsberg
2007-08-18 16:53 ` Dor Laor
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=46CBC34F.6060601@qumranet.com \
--to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
--cc=av1474-3kx9bbwexCU@public.gmane.org \
--cc=kronos.it-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=kvm-devel-TtF/mJH4Jtrk1uMJSBkQmQ@public.gmane.org \
--cc=qemu-devel-qX2TKyscuCcdnm+yROfE0A@public.gmane.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 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.