Re: [PATCH v4] drm/i915: Optimistically spin for the request completion

Chris Wilson
2015-03-21T09:49:16Z

On Fri, Mar 20, 2015 at 10:59:50PM +0000, Chris Wilson wrote:
> On Fri, Mar 20, 2015 at 04:19:02PM +0000, Chris Wilson wrote:
> > I guess one test would be to see how many 1x1 [xN overdraw, say 1x1
> > Window, but rendering internally at 1080p] clients we can run in
> > parallel whilst hitting 60fps. And then whether allowing multiple
> > spinners helps or hinders.
>
> I was thinking of a nice easy test that could demonstrate any advantage
> for spinning over waiting, and realised we already had such an igt. The
> trick is that it has to generate sufficient GPU load to actually require
> a wait, but not too high a GPU load such that we can see the impact from
> slow completion.
>
> I present igt/gem_exec_blt (modified to repeat the measurement and do an
> average over several runs):
>
> Time to blt 16384 bytes x 1: 21.000µs -> 5.800µs
> Time to blt 16384 bytes x 2: 11.500µs -> 4.500µs
> Time to blt 16384 bytes x 4: 6.750µs -> 3.750µs
> Time to blt 16384 bytes x 8: 4.950µs -> 3.375µs
> Time to blt 16384 bytes x 16: 3.825µs -> 3.175µs
> Time to blt 16384 bytes x 32: 3.356µs -> 3.000µs
> Time to blt 16384 bytes x 64: 3.259µs -> 2.909µs
> Time to blt 16384 bytes x 128: 3.083µs -> 3.095µs
> Time to blt 16384 bytes x 256: 3.104µs -> 2.979µs
> Time to blt 16384 bytes x 512: 3.080µs -> 3.089µs
> Time to blt 16384 bytes x 1024: 3.077µs -> 3.040µs
> Time to blt 16384 bytes x 2048: 3.127µs -> 3.304µs
> Time to blt 16384 bytes x 4096: 3.279µs -> 3.265µs

Then remembering to disable the cmdparser:

Time to blt 16384 bytes x 1: 4.000µs, 3.8GiB/s
Time to blt 16384 bytes x 2: 3.300µs, 4.6GiB/s
Time to blt 16384 bytes x 4: 2.850µs, 5.4GiB/s
Time to blt 16384 bytes x 8: 2.625µs, 5.8GiB/s
Time to blt 16384 bytes x 16: 2.500µs, 6.1GiB/s
Time to blt 16384 bytes x 32: 2.469µs, 6.2GiB/s
Time to blt 16384 bytes x 64: 2.447µs, 6.2GiB/s
Time to blt 16384 bytes x 128: 2.438µs, 6.3GiB/s
Time to blt 16384 bytes x 256: 2.382µs, 6.4GiB/s
Time to blt 16384 bytes x 512: 2.389µs, 6.4GiB/s
Time to blt 16384 bytes x 1024: 2.386µs, 6.4GiB/s
Time to blt 16384 bytes x 2048: 2.382µs, 6.4GiB/s
Time to blt 16384 bytes x 4096: 2.378µs, 6.4GiB/s
-Chris

--
Chris Wilson, Intel Open Source Technology Centre