On Wed, Nov 2, 2016 at 6:29 AM, sourab gupta sourab.gupta@intel.com wrote:
On Thu, 2016-10-27 at 19:14 -0700, Robert Bragg wrote:
The minimal sampling period is now configurable via a dev.i915.oa_min_timer_exponent sysctl parameter.
Following the precedent set by perf, the default is the minimum that won't (on its own) exceed the default kernel.perf_event_max_sample_rate default of 100000 samples/s.
Signed-off-by: Robert Bragg robert@sixbynine.org Reviewed-by: Matthew Auld matthew.auld@intel.com
drivers/gpu/drm/i915/i915_perf.c | 42 ++++++++++++++++++++++++++++--
1 file changed, 30 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_perf.c
b/drivers/gpu/drm/i915/i915_perf.c
index 4e42073..e3c6f51 100644 --- a/drivers/gpu/drm/i915/i915_perf.c +++ b/drivers/gpu/drm/i915/i915_perf.c @@ -82,6 +82,22 @@ static u32 i915_perf_stream_paranoid = true; #define INVALID_CTX_ID 0xffffffff
+/* for sysctl proc_dointvec_minmax of i915_oa_min_timer_exponent */ +static int oa_exponent_max = OA_EXPONENT_MAX;
+/* Theoretically we can program the OA unit to sample every 160ns but
don't
- allow that by default unless root...
- The period is derived from the exponent as:
- period = 80ns * 2^(exponent + 1)
- Referring to perf's kernel.perf_event_max_sample_rate for a
precedent
- (100000 by default); with an OA exponent of 6 we get a period of
10.240
- microseconds - just under 100000Hz
- */
+static u32 i915_oa_min_timer_exponent = 6;
For HSW, the timestamp period is 80ns, so the exponent of 6 translates to sampling rate of ~100000Hz. But the timestamp period may change for other platforms, leading to different values of oa_min_timer_exponent corresponding to sampling rate of ~100000Hz. Do we plan to have this value platform specific subsequently, or the guidance value of ~100000Hz min sampling rate needn't be strictly followed?
actually it's bothered me a bit that I've been lazy with not having this adapt for gen9+ in later patches
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.
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.
Thanks, - Robert