[Intel-gfx] [PATCH v7 0/3] Dynamic EU configuration of Slice/Sub-slice/EU

S, Srinivasan srinivasan.s at intel.com
Fri Mar 13 17:32:14 UTC 2020



> -----Original Message-----
> From: Tvrtko Ursulin <tvrtko.ursulin at linux.intel.com>
> Sent: Friday, March 13, 2020 10:48 PM
> To: S, Srinivasan <srinivasan.s at intel.com>; intel-gfx at lists.freedesktop.org;
> chris at chris-wilson.co.uk; Francisco Jerez <currojerez at riseup.net>
> Subject: Re: [Intel-gfx] [PATCH v7 0/3] Dynamic EU configuration of Slice/Sub-
> slice/EU
> 
> 
> Hi,
> 
> On 13/03/2020 11:12, srinivasan.s at intel.com wrote:
> > From: Srinivasan S <srinivasan.s at intel.com>
> >
> >        drm/i915: Context aware user agnostic EU/Slice/Sub-slice control within
> kernel
> >
> > This patch sets improves GPU power consumption on Linux kernel based OS
> such as
> > Chromium OS, Ubuntu, etc. Following are the power savings.
> >
> > Power savings on GLK-GT1 Bobba platform running on Chrome OS.
> > -----------------------------------------------|
> > App /KPI                | % Power Benefit (mW) |
> > ------------------------|----------------------|
> > Hangout Call- 20 minute |	1.8%           |
> > Youtube 4K VPB          |       14.13%         |
> > WebGL Aquarium          |       13.76%         |
> > Unity3D                 |       6.78%          |
> > 			|		       |
> > ------------------------|----------------------|
> > Chrome PLT              | BatteryLife Improves |
> > 			| by ~45 minute        |
> > -----------------------------------------------|
> >
> > Power savings on KBL-GT3 running on  Android and Ubuntu (Linux).
> > -----------------------------------------------|
> > App /KPI		| % Power Benefit (mW) |
> >                          |----------------------|
> > 			|  Android |  Ubuntu   |
> > ------------------------|----------|-----------|
> > 3D Mark (Ice storm)     | 2.30%    | N.A.      |
> > TRex On screen          | 2.49%    | 2.97%     |
> > Manhattan On screen     | 3.11%    | 4.90%     |
> > Carchase On Screen	| N.A.     | 5.06%     |
> > AnTuTu 6.1.4            | 3.42%    | N.A.      |
> > SynMark2		| N.A.     | 1.7%      |
> > -----------------------------------------------|
> 
> Have a look at the result Francisco obtained on Icelake with a different
> approach: https://patchwork.freedesktop.org/series/74540/
> 
> Not all benchmarks overlap but if you are set up to easily test his
> patches it may be for a mutual benefit.
[S, Srinivasan]  Thanks!,  Could we reuse only his gfx related patches alone as below - to focus on our gfx power saving benefits as first step, or could you please let me know the entire patch series needs to be considered or is there any dependency of GPU power on CPU?
ie., https://patchwork.freedesktop.org/patch/357098/?series=74540&rev=2
https://patchwork.freedesktop.org/patch/357103/?series=74540&rev=2
> 
> Regards,
> 
> Tvrtko
> 
> > We have also observed GPU core residencies improves by 1.035%.
> >
> > Technical Insights of the patch:
> > Current GPU configuration code for i915 does not allow us to change
> > EU/Slice/Sub-slice configuration dynamically. Its done only once while context
> > is created.
> >
> > While particular graphics application is running, if we examine the command
> > requests from user space, we observe that command density is not consistent.
> > It means there is scope to change the graphics configuration dynamically even
> > while context is running actively. This patch series proposes the solution to
> > find the active pending load for all active context at given time and based on
> > that, dynamically perform graphics configuration for each context.
> >
> > We use a hr (high resolution) timer with i915 driver in kernel to get a
> > callback every few milliseconds (this timer value can be configured through
> > debugfs, default is '0' indicating timer is in disabled state i.e. original
> > system without any intervention).In the timer callback, we examine pending
> > commands for a context in the queue, essentially, we intercept them before
> > they are executed by GPU and we update context with required number of
> EUs.
> >
> > Two questions, how did we arrive at right timer value? and what's the right
> > number of EUs? For the prior one, empirical data to achieve best performance
> > in least power was considered. For the later one, we roughly categorized
> number
> > of EUs logically based on platform. Now we compare number of pending
> commands
> > with a particular threshold and then set number of EUs accordingly with
> update
> > context. That threshold is also based on experiments & findings. If GPU is able
> > to catch up with CPU, typically there are no pending commands, the EU config
> > would remain unchanged there. In case there are more pending commands we
> > reprogram context with higher number of EUs. Please note, here we are
> changing
> > EUs even while context is running by examining pending commands every 'x'
> > milliseconds.
> >
> > Srinivasan S (3):
> >    drm/i915: Get active pending request for given context
> >    drm/i915: set optimum eu/slice/sub-slice configuration based on load
> >      type
> >    drm/i915: Predictive governor to control slice/subslice/eu
> >
> >   drivers/gpu/drm/i915/Makefile                     |   1 +
> >   drivers/gpu/drm/i915/gem/i915_gem_context.c       |  20 +++++
> >   drivers/gpu/drm/i915/gem/i915_gem_context.h       |   2 +
> >   drivers/gpu/drm/i915/gem/i915_gem_context_types.h |  38 ++++++++
> >   drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c    |   1 +
> >   drivers/gpu/drm/i915/gt/intel_deu.c               | 104
> ++++++++++++++++++++++
> >   drivers/gpu/drm/i915/gt/intel_deu.h               |  31 +++++++
> >   drivers/gpu/drm/i915/gt/intel_lrc.c               |  44 ++++++++-
> >   drivers/gpu/drm/i915/i915_drv.h                   |   6 ++
> >   drivers/gpu/drm/i915/i915_gem.c                   |   4 +
> >   drivers/gpu/drm/i915/i915_params.c                |   4 +
> >   drivers/gpu/drm/i915/i915_params.h                |   1 +
> >   drivers/gpu/drm/i915/intel_device_info.c          |  74 ++++++++++++++-
> >   13 files changed, 325 insertions(+), 5 deletions(-)
> >   create mode 100644 drivers/gpu/drm/i915/gt/intel_deu.c
> >   create mode 100644 drivers/gpu/drm/i915/gt/intel_deu.h
> >


More information about the Intel-gfx mailing list