Re: [PATCH RFC V2 1/1] x86, perf: Add a freq pmu driver

Andy Lutomirski
2015-07-21T06:02:00Z

On Mon, Jul 20, 2015 at 8:10 PM, Stephane Eranian <eranian@google.com> wrote:
> On Mon, Jul 20, 2015 at 8:49 AM, Kan Liang <kan.liang@intel.com> wrote:
>> From: Andy Lutomirski <luto@kernel.org>
>>
>> This patch adds freq PMU to support time and freq related counters
>> includes TSC, IA32_APERF, IA32_MPERF and IA32_PPERF.
>>
>> The events are exposed in sysfs for use by perf stat and other tools.
>> The files are under /sys/devices/freq/events/
>>
>> These events only support system-wide mode counting.
>>
>> The PMU type (attr->type) is PERF_TYPE_FREQ.
>>
>> Example:
>>
>> To caculate the CPU%
>> CPU_Utilization = CPU_CLK_UNHALTED.REF_TSC / TSC
>>
>> $ perf stat -e '{ref-cycles,freq/tsc/}' -C0 -- taskset -c 0 sleep 1
>> 3164023,,ref-cycles,1048387386,100.00
>> 2410812089,,freq/tsc/,1050022373,100.00
>> The CPU% for sleep is 0.13%.
>>
> This event is system-wide only. Thus, the kernel should return
> an error when you try to use it in per-thread mode. That would
> be more consistent with RAPL and uncore events.

I don't know enough about perf's inner workings to be sure, but can't
perf context switch free-running counters like this?

--Andy