From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NuZHv-00019r-6c for qemu-devel@nongnu.org; Wed, 24 Mar 2010 18:42:59 -0400 Received: from [140.186.70.92] (port=39889 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NuZHt-00019O-TD for qemu-devel@nongnu.org; Wed, 24 Mar 2010 18:42:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1NuZHs-0007I2-3U for qemu-devel@nongnu.org; Wed, 24 Mar 2010 18:42:57 -0400 Received: from static-71-162-243-5.phlapa.fios.verizon.net ([71.162.243.5]:45504 helo=grelber.thyrsus.com) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1NuZHr-00078b-VS for qemu-devel@nongnu.org; Wed, 24 Mar 2010 18:42:56 -0400 Received: from landley.net (localhost [127.0.0.1]) by grelber.thyrsus.com (Postfix) with ESMTP id 214319F0156 for ; Wed, 24 Mar 2010 18:02:43 -0400 (EDT) From: Rob Landley Date: Wed, 24 Mar 2010 15:34:00 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <201003241534.01219.rob@landley.net> Subject: [Qemu-devel] Significant performance regression in qemu-system-mips. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org I have a native build under qemu that gets killed if it doesn't produce a line of output for 60 seconds (hang detection enforced by the host monitoring qemu's stdout with --nographic, not from within qemu). In the most recent release version, it never came close to triggering on mips with a 30 second timeout. In the current -git version (well, as of Thursday anyway), it triggers frequently (about 90% of the time) even with a 60 second timeout. I bisected it to this: commit 1828be316f6637d43dd4c4f5f32925b17fb8107f Author: Paolo Bonzini Date: Wed Mar 10 11:38:41 2010 +0100 more alarm timer cleanup The timer_alarm_pending variable is related to the alarm timer but not placed in the struct. Also, in qemu_mod_timer the wrong flag was being tested: the timer is rearmed in the alarm timer "bottom half", so the right flag to test there is the "pending" flag. Finally, I hoisted the NULL checks from alarm_has_dynticks to host_alarm_handler. Signed-off-by: Paolo Bonzini Signed-off-by: Anthony Liguori Reverting that patch fixed it (git show HEAD | patch -R -p1), by which I mean three consecutive runs with 30 second timeout didn't trigger the hang detection. Unfortunately, I can't revert that patch in current origin/master because most of the hunks fail... Help? Rob -- Latency is more important than throughput. It's that simple. - Linus Torvalds