Bug 60911 - [ivb] performance regression with ioquake3 based engines 3.10->3.11
Summary: [ivb] performance regression with ioquake3 based engines 3.10->3.11
Status: CLOSED INVALID
Alias: None
Product: Power Management
Classification: Unclassified
Component: cpuidle (show other bugs)
Hardware: x86-64 Linux
: P1 normal
Assignee: Len Brown
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-09-07 18:34 UTC by Peter Weber
Modified: 2014-06-24 14:23 UTC (History)
3 users (show)

See Also:
Kernel Version: 3.11.0
Subsystem:
Regression: Yes
Bisected commit-id:


Attachments
lspci (1.60 KB, text/plain)
2013-09-08 10:06 UTC, Peter Weber
Details
glxinfo (15.29 KB, text/plain)
2013-09-08 10:06 UTC, Peter Weber
Details
.drirc (131 bytes, application/octet-stream)
2013-09-08 10:06 UTC, Peter Weber
Details
installed packages (pacman -Q, vanilla kernel-3.11.0 manually compiled) (14.79 KB, text/plain)
2013-09-08 10:08 UTC, Peter Weber
Details
.config of kernel-3.11.0 (broken) (82.59 KB, text/plain)
2013-09-08 10:13 UTC, Peter Weber
Details
.config of kernel-3.11.0 (working) (82.78 KB, text/plain)
2013-09-10 22:00 UTC, Peter Weber
Details

Description Peter Weber 2013-09-07 18:34:16 UTC
Hello!

It seems like from kernel 3.10.10 to kernel 3.11.0 the performance decreased around 5% to 15% in ioquake3 based games. I regulary run benchmarks with ioquake3, because it is the base for a lot of games. My setup:

file ~/.drirc # turns off vsync. don't use the driconf for this, it will set the wrong driver.

<device screen="0" driver="dri2">
	<application name="Default">
		<option name="vblank_mode" value="0"/>
	</application>
</device>

$ ./quake3
~ # opens console
timedemo 1
demo four
~ # read fps

With the last kernels and drivers I got always a framerate between 295fps-305fps. With the new kernel 3.11.0 the performance decreased to 255fps to 275fps i.e. it runs slower and the range is also bigger.

I wondered if the new WQ_POWER_EFFICIENT_DEFAULT caused this and turned it on and off, but it is not responsible. A downgrade to kernel 3.10.10 fixed the regression, so it seems not caused by the userspace-driver or unredirection (window-manager).

Phoronix is controversial resource. But in this case it confirms my own results. I should mention, that "World of Padman" is based on IOQuake3:
http://www.phoronix.com/scan.php?page=news_item&px=MTQxMTM

Thank you

PS:
Regulary the performance increases a little bit with a new kernel or userspace-driver. I'm always happy to see some fps more after running a benchmark :-)
Comment 1 Peter Weber 2013-09-08 10:06:00 UTC
Created attachment 107551 [details]
lspci
Comment 2 Peter Weber 2013-09-08 10:06:19 UTC
Created attachment 107561 [details]
glxinfo
Comment 3 Peter Weber 2013-09-08 10:06:50 UTC
Created attachment 107571 [details]
.drirc
Comment 4 Peter Weber 2013-09-08 10:08:36 UTC
Created attachment 107581 [details]
installed packages (pacman -Q, vanilla kernel-3.11.0 manually compiled)
Comment 5 Peter Weber 2013-09-08 10:13:42 UTC
Created attachment 107591 [details]
.config of kernel-3.11.0 (broken)
Comment 6 Daniel Vetter 2013-09-08 13:00:17 UTC
Hm, not a clear idea what's gone wrong here. I've looked a bit through the git logs and in the usual suspect we didn't really change anything that would affect ivb in the drm/i915 driver.

Can you please attempt to bisect this regressino?
Comment 7 Peter Weber 2013-09-08 14:57:38 UTC
I've found the reason. It not caused by your code!
The new(?) kernel option CONFIG_CPU_IDLE_GOV_MENU is causing the decreased framerate. I disabled it and the performance returned back to the old normal level.

I enabled CONFIG_CPU_IDLE_GOV_MENU because I use also the other tickless stuff in the kernel. The configuration options doesn't include an inline documentation or any warning that it can affect performance.

https://lwn.net/Articles/352180/

This change seems to be pretty old, but the "public" kernel-option seem to be new and is shown during "make oldconfig" from "3.10" to "3.11". I know it is not your stuff, but may I ask you for a guess:
Should I contact someone, for adding a explaining documentation about it?


Sorry for disrubting you during your weekend!
Thank you for your fast response.
Peter
Comment 8 Daniel Vetter 2013-09-09 08:06:09 UTC
Ok, we're off the hook it seems, reassigning to the cpuidle people. For reference can you please attach the working and broken .config for the 3.11 kernel?
Comment 9 Peter Weber 2013-09-10 08:01:58 UTC
Thanks!
The broken .config is already attached. I will upload the working .config today evening (CEST).
Comment 10 Peter Weber 2013-09-10 22:00:22 UTC
Created attachment 108101 [details]
.config of kernel-3.11.0 (working)

Includes some minor changes which can be ignored e.g. CONFIG_INTEL_RST=y and CONFIG_INTEL_SMARTCONNECT=y
Comment 11 Zhang Rui 2014-06-03 04:00:13 UTC
Hi, Peter,

does the performance regression still exist in the latest upstream kernel?
Comment 12 Peter Weber 2014-06-12 12:36:22 UTC
I will take a look at this in the next days. Something in my brain reminds me, that I turned this CONFIG_CPU_IDLE_GOV_MENU to ON a while ago and it doesn't cause this problem anymore. But I will have to take a look at my .config at home to be sure!
Comment 13 Peter Weber 2014-06-20 14:39:14 UTC
Hello!
As far as it looks I'm using CONFIG_CPU_IDLE_GOV_MENU=y since some months and it seems to work without regressions. These are my options:

#
# CPU Idle
#
CONFIG_CPU_IDLE=y
# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
CONFIG_INTEL_IDLE=y

Nonetheless I have to note, that currently - as time of writing and not in the past months - the results of the benchmarks are varying. I assume this is caused by the steadly changing releases of "xf86-video-intel-2.99.***-*". You can close this bug or resolve it, if you want. I don't know what I have to select ;-)

Note You need to log in before you can comment on or make changes to this bug.