From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.34) id 1BPpOC-00022d-GF for qemu-devel@nongnu.org; Mon, 17 May 2004 17:11:12 -0400 Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.34) id 1BPpNc-0001re-Kd for qemu-devel@nongnu.org; Mon, 17 May 2004 17:11:08 -0400 Received: from [193.252.22.30] (helo=mwinf0102.wanadoo.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1BPpNc-0001r1-5W for qemu-devel@nongnu.org; Mon, 17 May 2004 17:10:36 -0400 Received: from bellard.org (ATuileries-112-1-3-148.w81-48.abo.wanadoo.fr [81.48.134.148]) by mwinf0102.wanadoo.fr (SMTP Server) with ESMTP id 84D821BFD38F for ; Mon, 17 May 2004 23:10:34 +0200 (CEST) Message-ID: <40A92AD5.3090504@bellard.org> Date: Mon, 17 May 2004 23:12:53 +0200 From: Fabrice Bellard MIME-Version: 1.0 Subject: Re: [Qemu-devel] Speed up hack References: <200405170918.i4H9I4OR001702@treas.simtreas.ru> <40A8E6C4.6050105@simtreas.ru> In-Reply-To: <40A8E6C4.6050105@simtreas.ru> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Can you estimate the speed gains ? I am especially interested by the poll() overhead. For the rest, optimizing DMA_run() would be simpler and more efficient. Fabrice. Vladimir N. Oleynik wrote: > Hi. > > I generate little speed up hack: > > 1) new TICKS_BEFORE_POLL constant from make cpu loop before > call poll(). > 2) call DMA_run() if sb16 or floppy present > 3) also, for extreme overclocker: if change MAX_FD from 2 to 1, > you can make very little speed up also ;-) > > > --- vl.c~ 2004-05-17 20:15:26.000000000 +0400 > +++ vl.c 2004-05-17 19:52:44.000000000 +0400 > @@ -1634,6 +1634,8 @@ > } > } > > +#define TICKS_BEFORE_POLL 100 > + > int main_loop(void) > { > #ifndef _WIN32 > @@ -1641,6 +1643,7 @@ > IOHandlerRecord *ioh, *ioh_next; > uint8_t buf[4096]; > int n, max_size; > + int tick_before_poll=TICKS_BEFORE_POLL; > #endif > int ret, timeout; > CPUState *env = global_env; > @@ -1670,6 +1673,11 @@ > Sleep(timeout); > #else > > + if(tick_before_poll!=0 && timeout==0) { > + tick_before_poll--; > + goto ltick_before_poll; > + } > + tick_before_poll=TICKS_BEFORE_POLL; > /* poll any events */ > /* XXX: separate device handlers from system ones */ > pf = ufds; > @@ -1741,6 +1749,7 @@ > } > #endif > > + ltick_before_poll: > #endif > > if (vm_running) { > @@ -1750,10 +1759,18 @@ > if (audio_enabled) { > /* XXX: add explicit timer */ > SB16_run(); > - } > + DMA_run(); > + } else { > + int i; > > - /* run dma transfers, if any */ > - DMA_run(); > + /* run dma transfers, if any */ > + for(i = 0; i < MAX_FD; i++) { > + if(fd_table[i]) { > + DMA_run(); > + break; > + } > + } > + } > } > > /* real time timers */ > > > --w > vodz > > > _______________________________________________ > Qemu-devel mailing list > Qemu-devel@nongnu.org > http://mail.nongnu.org/mailman/listinfo/qemu-devel >