Re: [PATCH 18/19] drm/i915/execlists: Direct submission (avoid tasklet/ksoftirqd)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Quoting Tvrtko Ursulin (2018-05-18 09:06:03)
> 
> On 17/05/2018 18:07, Chris Wilson wrote:
> > Quoting Tvrtko Ursulin (2018-05-17 14:13:00)
> >>
> >> On 17/05/2018 08:40, Chris Wilson wrote:
> >>> Back in commit 27af5eea54d1 ("drm/i915: Move execlists irq handler to a
> >>> bottom half"), we came to the conclusion that running our CSB processing
> >>> and ELSP submission from inside the irq handler was a bad idea. A really
> >>> bad idea as we could impose nearly 1s latency on other users of the
> >>> system, on average! Deferring our work to a tasklet allowed us to do the
> >>> processing with irqs enabled, reducing the impact to an average of about
> >>> 50us.
> >>>
> >>> We have since eradicated the use of forcewaked mmio from inside the CSB
> >>> processing and ELSP submission, bringing the impact down to around 5us
> >>> (on Kabylake); an order of magnitude better than our measurements 2
> >>> years ago on Broadwell and only about 2x worse on average than the
> >>> gem_syslatency on an unladen system.
> >>>
> >>> Comparing the impact on the maximum latency observed over a 120s interval,
> >>> repeated several times (using gem_syslatency, similar to RT's cyclictest)
> >>> while the system is fully laden with i915 nops, we see that direct
> >>> submission definitely worsens the response but not to the same outlandish
> >>> degree as before.
> >>>
> >>> x Unladen baseline
> >>> + Using tasklet
> >>> * Direct submission
> >>>
> >>> +------------------------------------------------------------------------+
> >>> |xx x          ++    +++ +                           *  * *   ** *** *  *|
> >>> ||A|              |__AM__|                               |_____A_M___|   |
> >>> +------------------------------------------------------------------------+
> >>
> >> What are these headers? This one and below, I cannot decipher them at all.
> > 
> > Ministat histogram. The headers being the label for the charts; it's a
> > bit flat so hard to tell it's a histogram.
> > 
> >>>       N           Min           Max        Median           Avg        Stddev
> >>> x  10             5            18            10           9.3     3.6530049
> >>> +  10            72           120           108         102.9     15.758243
> >>> *  10           255           348           316         305.7      28.74814
> >>
> >> In micro-seconds? so tasklet is 108us median? Direct submission 316us
> >> median?
> > 
> > Yup, more runs required so you have prettier graphs and units.
> 
> Biggest problem for me is that in these tests it is only showing as 
> significantly worse than the current tasklet. So it is kind of difficult 
> the sell the series. :)

As a reference point, on bdw from before we introduced tasklets:
gem_syslatency: cycles=20849458, latency mean=678.892us max=8308500us
gem_syslatency: cycles=22964600, latency mean=1583.312us max=5991894us
gem_syslatency: cycles=21404190, latency mean=1766.220us max=12423925us
gem_syslatency: cycles=22779405, latency mean=1698.282us max=9110117us
gem_syslatency: cycles=22021655, latency mean=1921.855us max=7193398us

Message from syslogd@broadwell at May 18 18:27:47 ...
 kernel:[ 8991.394488] NMI watchdog: BUG: soft lockup - CPU#2 stuck for
 22s! [gem_syslatency:1800]
 gem_syslatency: cycles=21218381, latency mean=1711.088us max=13932087us
 gem_syslatency: cycles=22189636, latency mean=1724.968us max=15483237us
 gem_syslatency: cycles=21941275, latency mean=1697.738us max=6065099us
 gem_syslatency: cycles=21896529, latency mean=1748.536us max=8007063us
 gem_syslatency: cycles=22053588, latency mean=1677.465us max=6604678us
 gem_syslatency: cycles=21657859, latency mean=1570.085us max=10346811us
 gem_syslatency: cycles=21627270, latency mean=1227.782us max=10489759us
 gem_syslatency: cycles=22441025, latency mean=1635.776us max=5932223us
 gem_syslatency: cycles=21890354, latency mean=1790.042us max=7956373us
 gem_syslatency: cycles=20976620, latency mean=989.215us max=11631632us
 gem_syslatency: cycles=22087242, latency mean=1723.138us max=12337920us
 gem_syslatency: cycles=22800746, latency mean=1749.050us max=7080445us

* at this point, the sata driver ate itself and took out the fs.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux