Quoting Matthew Auld (2020-11-27 12:07:13)
From: Tvrtko Ursulin tvrtko.ursulin@intel.com
Current code uses jiffie time to do the accounting and then does:
diff = jiffies - start; msec = diff * 1000 / HZ; ... atomic_long_add(msec, &i915->time_swap_out_ms);
If we assume jiffie can be as non-granular as 10ms and that the current accounting records all evictions faster than one jiffie as infinite speed, we can end up over-estimating the reported eviction throughput.
Fix this by accumulating ktime_t and only dividing to more user friendly granularity at presentation time (debugfs read).
At the same time consolidate the code a bit and convert from multiple atomics to single seqlock per stat.
Signed-off-by: Tvrtko Ursulin tvrtko.ursulin@intel.com Cc: CQ Tang cq.tang@intel.com Cc: Sudeep Dutt sudeep.dutt@intel.com Cc: Mika Kuoppala mika.kuoppala@linux.intel.com
A lot of effort to fix up patches after the fact, might as well make it a real PMU interface. -Chris