From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1INtvO-0000Cd-1U for qemu-devel@nongnu.org; Wed, 22 Aug 2007 13:23:22 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1INtvL-0000CR-Jp for qemu-devel@nongnu.org; Wed, 22 Aug 2007 13:23:20 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1INtvL-0000CO-Ez for qemu-devel@nongnu.org; Wed, 22 Aug 2007 13:23:19 -0400 Received: from nz-out-0506.google.com ([64.233.162.232]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1INtvL-0007eE-5b for qemu-devel@nongnu.org; Wed, 22 Aug 2007 13:23:19 -0400 Received: by nz-out-0506.google.com with SMTP id f1so490295nzc for ; Wed, 22 Aug 2007 10:23:18 -0700 (PDT) Message-ID: <68676e00708221023m352c2de3y3b19188dbb9ef49e@mail.gmail.com> Date: Wed, 22 Aug 2007 19:23:17 +0200 From: Luca In-Reply-To: <46CC680C.1030307@qumranet.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <20070817231149.544849769@gmail.com> <46C89A8E.7040609@qumranet.com> <20070820212058.GA6713@dreamland.darkstar.lan> <46CAD607.2080504@qumranet.com> <20070821193834.GB13544@dreamland.darkstar.lan> <46CBC34F.6060601@qumranet.com> <20070822161211.GA30147@dreamland.darkstar.lan> <46CC6285.3090904@qumranet.com> <68676e00708220938y57c07edas705fc8360aefcb78@mail.gmail.com> <46CC680C.1030307@qumranet.com> Subject: [Qemu-devel] Re: [kvm-devel] [PATCH 0/4] Rework alarm timer infrastrucure - take2 Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: Dan Kenigsberg , kvm-devel@lists.sf.net, qemu-devel@nongnu.org On 8/22/07, Avi Kivity wrote: > Luca wrote: > >>> This is QEMU, with dynticks and HPET: > >>> > >>> % time seconds usecs/call calls errors syscall > >>> ------ ----------- ----------- --------- --------- ---------------- > >>> 52.10 0.002966 0 96840 clock_gettime > >>> 19.50 0.001110 0 37050 timer_gettime > >>> 10.66 0.000607 0 20086 timer_settime > >>> 10.40 0.000592 0 8985 2539 sigreturn > >>> 4.94 0.000281 0 8361 2485 select > >>> 2.41 0.000137 0 8362 gettimeofday > >>> ------ ----------- ----------- --------- --------- ---------------- > >>> 100.00 0.005693 179684 5024 total > >>> > >>> > >> This looks like 250 Hz? > >> > > > > Nope: > > > > # CONFIG_NO_HZ is not set > > # CONFIG_HZ_100 is not set > > # CONFIG_HZ_250 is not set > > # CONFIG_HZ_300 is not set > > CONFIG_HZ_1000=y > > CONFIG_HZ=1000 > > > > and I'm reading it from /proc/config.gz on the guest. > > > > Yeah, thought so -- so dyntick is broken at present. I see a lot of sub ms timer_settime(). Many of them are the result of ->expire_time being less than the current qemu_get_clock(). This results into 250us timer due to MIN_TIMER_REARM_US; this happens only for the REALTIME timer. Other sub-ms timers are generated by the VIRTUAL timer. This first issue is easily fixed; if expire_time < current time then the timer has expired and hasn't been reprogrammed (and thus can be ignored). VIRTUAL just becomes more accurate with dyntics, before multiple timers were batched together. > Or maybe your host kernel can't support such a high rate. I don't know... a simple printf tells me that the signal handler is called about 1050 times per second, which sounds about right. Luca