Message ID | 20200309183129.2296-7-tvrtko.ursulin@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Per client engine busyness | expand |
Quoting Tvrtko Ursulin (2020-03-09 18:31:23) > diff --git a/drivers/gpu/drm/i915/i915_drm_client.h b/drivers/gpu/drm/i915/i915_drm_client.h > index 7825df32798d..10752107e8c7 100644 > --- a/drivers/gpu/drm/i915/i915_drm_client.h > +++ b/drivers/gpu/drm/i915/i915_drm_client.h > @@ -16,6 +16,8 @@ > #include <linux/sched.h> > #include <linux/xarray.h> > > +#include "gt/intel_engine_types.h" > + > struct i915_drm_clients { > struct mutex lock; > struct xarray xarray; > @@ -43,6 +45,11 @@ struct i915_drm_client { > struct device_attribute pid; > struct device_attribute name; > } attr; > + > + /** > + * @past_runtime: Accumulation of pphwsp runtimes from closed contexts. > + */ > + atomic64_t past_runtime[MAX_ENGINE_CLASS + 1]; Just to plant a seed: i915_drm_client_stats.[ch] ? -Chris
On 10/03/2020 18:28, Chris Wilson wrote: > Quoting Tvrtko Ursulin (2020-03-09 18:31:23) >> diff --git a/drivers/gpu/drm/i915/i915_drm_client.h b/drivers/gpu/drm/i915/i915_drm_client.h >> index 7825df32798d..10752107e8c7 100644 >> --- a/drivers/gpu/drm/i915/i915_drm_client.h >> +++ b/drivers/gpu/drm/i915/i915_drm_client.h >> @@ -16,6 +16,8 @@ >> #include <linux/sched.h> >> #include <linux/xarray.h> >> >> +#include "gt/intel_engine_types.h" >> + >> struct i915_drm_clients { >> struct mutex lock; >> struct xarray xarray; >> @@ -43,6 +45,11 @@ struct i915_drm_client { >> struct device_attribute pid; >> struct device_attribute name; >> } attr; >> + >> + /** >> + * @past_runtime: Accumulation of pphwsp runtimes from closed contexts. >> + */ >> + atomic64_t past_runtime[MAX_ENGINE_CLASS + 1]; > > Just to plant a seed: i915_drm_client_stats.[ch] ? Let it grow a bit first? :) Regards, Tvrtko
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c index 5f6861a36655..d99143dca0ab 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c @@ -316,8 +316,18 @@ static void i915_gem_context_free(struct i915_gem_context *ctx) GEM_BUG_ON(!i915_gem_context_is_closed(ctx)); - if (client) + if (client) { + unsigned int i; + + /* Transfer accumulated runtime to the parent drm client. */ + BUILD_BUG_ON(ARRAY_SIZE(client->past_runtime) != + ARRAY_SIZE(ctx->past_runtime)); + for (i = 0; i < ARRAY_SIZE(client->past_runtime); i++) + atomic64_add(atomic64_read(&ctx->past_runtime[i]), + &client->past_runtime[i]); + i915_drm_client_put(client); + } spin_lock(&ctx->i915->gem.contexts.lock); list_del(&ctx->link); diff --git a/drivers/gpu/drm/i915/i915_drm_client.h b/drivers/gpu/drm/i915/i915_drm_client.h index 7825df32798d..10752107e8c7 100644 --- a/drivers/gpu/drm/i915/i915_drm_client.h +++ b/drivers/gpu/drm/i915/i915_drm_client.h @@ -16,6 +16,8 @@ #include <linux/sched.h> #include <linux/xarray.h> +#include "gt/intel_engine_types.h" + struct i915_drm_clients { struct mutex lock; struct xarray xarray; @@ -43,6 +45,11 @@ struct i915_drm_client { struct device_attribute pid; struct device_attribute name; } attr; + + /** + * @past_runtime: Accumulation of pphwsp runtimes from closed contexts. + */ + atomic64_t past_runtime[MAX_ENGINE_CLASS + 1]; }; static inline struct i915_drm_client *