<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Nov 2, 2016 at 6:29 AM, sourab gupta <span dir="ltr"><<a href="mailto:sourab.gupta@intel.com" target="_blank">sourab.gupta@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Thu, 2016-10-27 at 19:14 -0700, Robert Bragg wrote:<br>
> The minimal sampling period is now configurable via a<br>
> dev.i915.oa_min_timer_exponent sysctl parameter.<br>
><br>
> Following the precedent set by perf, the default is the minimum that<br>
> won't (on its own) exceed the default kernel.perf_event_max_sample_<wbr>rate<br>
> default of 100000 samples/s.<br>
><br>
> Signed-off-by: Robert Bragg <<a href="mailto:robert@sixbynine.org">robert@sixbynine.org</a>><br>
> Reviewed-by: Matthew Auld <<a href="mailto:matthew.auld@intel.com">matthew.auld@intel.com</a>><br>
> ---<br>
>  drivers/gpu/drm/i915/i915_<wbr>perf.c | 42 ++++++++++++++++++++++++++++--<wbr>----------<br>
>  1 file changed, 30 insertions(+), 12 deletions(-)<br>
><br>
> diff --git a/drivers/gpu/drm/i915/i915_<wbr>perf.c b/drivers/gpu/drm/i915/i915_<wbr>perf.c<br>
> index 4e42073..e3c6f51 100644<br>
> --- a/drivers/gpu/drm/i915/i915_<wbr>perf.c<br>
> +++ b/drivers/gpu/drm/i915/i915_<wbr>perf.c<br>
> @@ -82,6 +82,22 @@ static u32 i915_perf_stream_paranoid = true;<br>
>  #define INVALID_CTX_ID 0xffffffff<br>
><br>
><br>
> +/* for sysctl proc_dointvec_minmax of i915_oa_min_timer_exponent */<br>
> +static int oa_exponent_max = OA_EXPONENT_MAX;<br>
> +<br>
> +/* Theoretically we can program the OA unit to sample every 160ns but don't<br>
> + * allow that by default unless root...<br>
> + *<br>
> + * The period is derived from the exponent as:<br>
> + *<br>
> + *   period = 80ns * 2^(exponent + 1)<br>
> + *<br>
> + * Referring to perf's kernel.perf_event_max_sample_<wbr>rate for a precedent<br>
> + * (100000 by default); with an OA exponent of 6 we get a period of 10.240<br>
> + * microseconds - just under 100000Hz<br>
> + */<br>
> +static u32 i915_oa_min_timer_exponent = 6;<br>
<br>
</div></div>For HSW, the timestamp period is 80ns, so the exponent of 6 translates<br>
to sampling rate of ~100000Hz. But the timestamp period may change for<br>
other platforms, leading to different values of oa_min_timer_exponent<br>
corresponding to sampling rate of ~100000Hz. Do we plan to have this<br>
value platform specific subsequently, or the guidance value of ~100000Hz<br>
min sampling rate needn't be strictly followed?<br></blockquote><div><br></div><div>actually it's bothered me a bit that I've been lazy with not having this adapt for gen9+ in later patches<br></div><div><br></div><div>I think it would probably be better to make this a Hz based threshold for userspace, otherwise any userspace policy here needs to be adapted for each system with a different timestamp frequency which isn't great.<br><br></div><div>I've updated the patch locally to make this an oa_max_sample_rate parameter in Hz, which I'll aim to test on haswell tomorrow and send out.<br></div><div><br></div>Thanks,<br></div><div class="gmail_quote">- Robert<br></div></div></div>