* Performance drop on XDrawRectangles()
@ 2014-01-08 15:57 Thomas Richter
2014-01-08 16:18 ` Daniel Vetter
2014-01-08 17:10 ` Chris Wilson
0 siblings, 2 replies; 6+ messages in thread
From: Thomas Richter @ 2014-01-08 15:57 UTC (permalink / raw)
To: Daniel Vetter, intel-gfx
Hi folks,
during the changes from 3.12rc7 to 3.13rc4, the performance of
XDrawRectangles() dropped considerably. Interestingly, it is not the raw
rectangles drawing operations that are slow, but it seems that the
"per-call" overhead has increased by one magnitude. In specific, if you
use the unmodified "x11pref" program:
x11pref -rect10
no substiantial changes are visible. However, if the rectangles are
drawn one by one by changing:
/* snip: old version, lines 86ff of do_rects.c of the x11perf program */
void
DoRectangles(XParms xp, Parms p, int reps)
{
int i;
for (i = 0; i != reps; i++) {
XFillRectangles(xp->d, xp->w, pgc, rects, p->objects);
if (pgc == xp->bggc)
pgc = xp->fggc;
else
pgc = xp->bggc;
CheckAbort ();
}
}
/* to the following : */
void
DoRectangles(XParms xp, Parms p, int reps)
{
int i;
int j;
for (i = 0; i != reps; i++) {
for(j = 0;j < p->objects;j++) {
XFillRectangles(xp->d, xp->w, pgc, rects+j, 1);
}
if (pgc == xp->bggc)
pgc = xp->fggc;
else
pgc = xp->bggc;
CheckAbort ();
}
}
by instead drawing the rectangles one by one, the performance is
decreased to one eigths of the original performance:
400000 trep @ 0.0687 msec ( 14600.0/sec): 10x10 rectangle (new)
2500000 trep @ 0.0107 msec ( 93900.0/sec): 10x10 rectangle (old)
Thus, apparently, not the actual hardware acceleration degraded, but
there is something in the call path that slowed down the call considerably.
Any idea what changed?
Greetings,
Thomas
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Performance drop on XDrawRectangles()
2014-01-08 15:57 Performance drop on XDrawRectangles() Thomas Richter
@ 2014-01-08 16:18 ` Daniel Vetter
2014-01-08 17:10 ` Chris Wilson
1 sibling, 0 replies; 6+ messages in thread
From: Daniel Vetter @ 2014-01-08 16:18 UTC (permalink / raw)
To: Thomas Richter; +Cc: Daniel Vetter, intel-gfx
On Wed, Jan 08, 2014 at 04:57:52PM +0100, Thomas Richter wrote:
> Hi folks,
>
> during the changes from 3.12rc7 to 3.13rc4, the performance of
> XDrawRectangles() dropped considerably. Interestingly, it is not the
> raw rectangles drawing operations that are slow, but it seems that
> the "per-call" overhead has increased by one magnitude. In specific,
> if you use the unmodified "x11pref" program:
>
> x11pref -rect10
>
> no substiantial changes are visible. However, if the rectangles are
> drawn one by one by changing:
>
> /* snip: old version, lines 86ff of do_rects.c of the x11perf program */
>
> void
> DoRectangles(XParms xp, Parms p, int reps)
> {
> int i;
>
> for (i = 0; i != reps; i++) {
> XFillRectangles(xp->d, xp->w, pgc, rects, p->objects);
> if (pgc == xp->bggc)
> pgc = xp->fggc;
> else
> pgc = xp->bggc;
> CheckAbort ();
> }
> }
>
> /* to the following : */
>
> void
> DoRectangles(XParms xp, Parms p, int reps)
> {
> int i;
> int j;
>
> for (i = 0; i != reps; i++) {
> for(j = 0;j < p->objects;j++) {
> XFillRectangles(xp->d, xp->w, pgc, rects+j, 1);
> }
> if (pgc == xp->bggc)
> pgc = xp->fggc;
> else
> pgc = xp->bggc;
> CheckAbort ();
> }
> }
>
> by instead drawing the rectangles one by one, the performance is
> decreased to one eigths of the original performance:
>
> 400000 trep @ 0.0687 msec ( 14600.0/sec): 10x10 rectangle (new)
> 2500000 trep @ 0.0107 msec ( 93900.0/sec): 10x10 rectangle (old)
>
> Thus, apparently, not the actual hardware acceleration degraded, but
> there is something in the call path that slowed down the call
> considerably.
>
> Any idea what changed?
If the ddx is indeed the same and Chris doesn't have any ideas I guess a
full bisect of the kernel should help a lot. Could very well be that some
seemingly unrelated change in e.g. the scheduler caused havoc ...
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Performance drop on XDrawRectangles()
2014-01-08 15:57 Performance drop on XDrawRectangles() Thomas Richter
2014-01-08 16:18 ` Daniel Vetter
@ 2014-01-08 17:10 ` Chris Wilson
2014-01-08 17:49 ` Thomas Richter
1 sibling, 1 reply; 6+ messages in thread
From: Chris Wilson @ 2014-01-08 17:10 UTC (permalink / raw)
To: Thomas Richter; +Cc: Daniel Vetter, intel-gfx
On Wed, Jan 08, 2014 at 04:57:52PM +0100, Thomas Richter wrote:
> Hi folks,
>
> during the changes from 3.12rc7 to 3.13rc4, the performance of
> XDrawRectangles() dropped considerably. Interestingly, it is not the
> raw rectangles drawing operations that are slow, but it seems that
> the "per-call" overhead has increased by one magnitude. In specific,
> if you use the unmodified "x11pref" program:
>
> x11pref -rect10
>
> no substiantial changes are visible. However, if the rectangles are
> drawn one by one by changing:
>
> /* snip: old version, lines 86ff of do_rects.c of the x11perf program */
>
> void
> DoRectangles(XParms xp, Parms p, int reps)
> {
> int i;
>
> for (i = 0; i != reps; i++) {
> XFillRectangles(xp->d, xp->w, pgc, rects, p->objects);
> if (pgc == xp->bggc)
> pgc = xp->fggc;
> else
> pgc = xp->bggc;
> CheckAbort ();
> }
> }
>
> /* to the following : */
>
> void
> DoRectangles(XParms xp, Parms p, int reps)
> {
> int i;
> int j;
>
> for (i = 0; i != reps; i++) {
> for(j = 0;j < p->objects;j++) {
> XFillRectangles(xp->d, xp->w, pgc, rects+j, 1);
> }
> if (pgc == xp->bggc)
> pgc = xp->fggc;
> else
> pgc = xp->bggc;
> CheckAbort ();
> }
> }
>
> by instead drawing the rectangles one by one, the performance is
> decreased to one eigths of the original performance:
>
> 400000 trep @ 0.0687 msec ( 14600.0/sec): 10x10 rectangle (new)
> 2500000 trep @ 0.0107 msec ( 93900.0/sec): 10x10 rectangle (old)
Just to be clear: new = 3.13-rc4, old = 3.12-rc7 ?
I've taken a quick look at this on an ivb i7-3270qm, and see a 296kops/s
to 248kops/s decrease. Not massive, and considering the difference in
our hardware probably a distinct issue.
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Performance drop on XDrawRectangles()
2014-01-08 17:10 ` Chris Wilson
@ 2014-01-08 17:49 ` Thomas Richter
2014-01-08 18:09 ` Chris Wilson
0 siblings, 1 reply; 6+ messages in thread
From: Thomas Richter @ 2014-01-08 17:49 UTC (permalink / raw)
To: Chris Wilson, Daniel Vetter, intel-gfx
On 01/08/2014 06:10 PM, Chris Wilson wrote:
> On Wed, Jan 08, 2014 at 04:57:52PM +0100, Thomas Richter wrote:
>> Hi folks,
>>
>> during the changes from 3.12rc7 to 3.13rc4, the performance of
>> XDrawRectangles() dropped considerably. Interestingly, it is not the
>> raw rectangles drawing operations that are slow, but it seems that
>> the "per-call" overhead has increased by one magnitude. In specific,
>> if you use the unmodified "x11pref" program:
>>
>
> Just to be clear: new = 3.13-rc4, old = 3.12-rc7 ?
Yes, exactly.
> I've taken a quick look at this on an ivb i7-3270qm, and see a 296kops/s
> to 248kops/s decrease. Not massive, and considering the difference in
> our hardware probably a distinct issue.
Well, note that a 1Ghz P-III / i830M is not an i7-3270qm. (-;
Did you made the changes in x11perf as I did? The bottleneck is not in
the actual rectangle rendering, it is somewhere in the call-path from
the application down to the hardware, i.e. the per-call overhead
increased by a factor of eight.
Kernel configuration is identical, as much as I could arrange it. X11
and higher level libraries are all identical, I only changed the kernel.
Greetings,
Thomas
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Performance drop on XDrawRectangles()
2014-01-08 17:49 ` Thomas Richter
@ 2014-01-08 18:09 ` Chris Wilson
2014-01-08 22:08 ` Chris Wilson
0 siblings, 1 reply; 6+ messages in thread
From: Chris Wilson @ 2014-01-08 18:09 UTC (permalink / raw)
To: Thomas Richter; +Cc: Daniel Vetter, intel-gfx
On Wed, Jan 08, 2014 at 06:49:40PM +0100, Thomas Richter wrote:
> On 01/08/2014 06:10 PM, Chris Wilson wrote:
> >On Wed, Jan 08, 2014 at 04:57:52PM +0100, Thomas Richter wrote:
> >I've taken a quick look at this on an ivb i7-3270qm, and see a 296kops/s
> >to 248kops/s decrease. Not massive, and considering the difference in
> >our hardware probably a distinct issue.
>
> Well, note that a 1Ghz P-III / i830M is not an i7-3270qm. (-;
>
> Did you made the changes in x11perf as I did? The bottleneck is not
> in the actual rectangle rendering, it is somewhere in the call-path
> from the application down to the hardware, i.e. the per-call
> overhead increased by a factor of eight.
Yes, I'm using the modified one rect per request test.
> Kernel configuration is identical, as much as I could arrange it.
> X11 and higher level libraries are all identical, I only changed the
> kernel.
Same. But there are a lot of factors that changed for my two kernels
(FBC, ppgtt) to name but two which should not apply to your machine.
Anyway it looks like the bisect progressing smoothly here, so I'll find
out if there is something outside of i915.ko that changed. Later, I'll
poke around on i845g as well.
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Performance drop on XDrawRectangles()
2014-01-08 18:09 ` Chris Wilson
@ 2014-01-08 22:08 ` Chris Wilson
0 siblings, 0 replies; 6+ messages in thread
From: Chris Wilson @ 2014-01-08 22:08 UTC (permalink / raw)
To: Thomas Richter, Daniel Vetter, intel-gfx
On Wed, Jan 08, 2014 at 06:09:54PM +0000, Chris Wilson wrote:
> Same. But there are a lot of factors that changed for my two kernels
> (FBC, ppgtt) to name but two which should not apply to your machine.
> Anyway it looks like the bisect progressing smoothly here, so I'll find
> out if there is something outside of i915.ko that changed. Later, I'll
> poke around on i845g as well.
Well, I managed to bark up the wrong tree on ivb. Turns out I was just
seeing RENDER vs BLT perf differences due to CONFIG_I915_FBDEV, so
irrelevant for your issue.
Will try again on i845. Albeit slowly.
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-01-08 22:08 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-08 15:57 Performance drop on XDrawRectangles() Thomas Richter
2014-01-08 16:18 ` Daniel Vetter
2014-01-08 17:10 ` Chris Wilson
2014-01-08 17:49 ` Thomas Richter
2014-01-08 18:09 ` Chris Wilson
2014-01-08 22:08 ` Chris Wilson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox