[Nouveau] "enable ctxprog xfer only when we need it to save power" introduces big performance regression

Martin Peres martin.peres at ensi-bourges.fr
Wed Dec 28 15:58:35 PST 2011


On 28/12/2011 22:39, Marcin Slusarz wrote:
> Heh, with page flipping enabled, regression is still there, only smaller
> (61->54, instead of 49 FPS).
>
> I want my Nouveau performance back ;)
>
> ---
> From: Marcin Slusarz<marcin.slusarz at gmail.com>
> Subject: [PATCH] drm/nv50/gr: make "xfers only in ctxprog" optional
>
> Commit fbba036a56fe0e5c5e8c91daf3fa211f88d94a03
> "drm/nv50/gr: enable ctxprog xfer only when we need it to save power"
> introduced performance regression.
>
> So revert to previous behaviour and add module option (nv50_xfer_ctxprog=0/1)
> to restore it back.
>
> Signed-off-by: Marcin Slusarz<marcin.slusarz at gmail.com>

Hi,

I'm really sorry about not following up to your many emails you sent me 
in the past.

I now have time to work on this issue and I would like a little more 
information if you don't mind. Could you do a mmiotrace and look at what 
nvidia does in their ctxprog for your specific card ?

If nVidia does the same thing as we do, well, you'll have to wait for 
something I've been thinking for some times now.

What we want is to define power consumption profiles. A simple example 
is, when on battery, you don't want to save as much power as possible 
but when you are on sector, you may want to get the full performance out 
of your card (You may also don't mind the performance loss, but one 
thing at a time).

Ben (darktama) has recently talked about introducing a kind of automatic 
reclocking kind of like what radeon does. That is to say, having 
performance profiles that are switched according to the energy source 
(battery / sector). This automatic behaviour could then be overriden by 
the user, just like radeon.

We would then turn some nobs according to the current performance 
profile. One of these nobs could be xfer on some specific cards (yours).

Would that solution suit you? Clearly, introducing a new kernel 
parameter isn't an acceptable solution to the problem.

I hope we can find a way that would suit both performance and 
battery-life while being kernel-friendly.

Martin (mupuf)


More information about the Nouveau mailing list