Messages in this thread | | | Subject | Re: [PATCH v9 3/5] perf utils: use pmu->is_uncore to detect PMU UNCORE devices | From | "Jin, Yao" <> | Date | Tue, 5 Dec 2017 20:35:22 +0800 |
| |
A quick test with the new patch 'fix_json_v9_2.patch' shows it working.
See the log:
root@skl:/tmp# perf stat --per-thread -p 10322 -M CPI,IPC ^C Performance counter stats for process id '10322':
vmstat-10322 1,879,654 inst_retired.any # 0.8 CPI vmstat-10322 1,565,807 cycles vmstat-10322 1,879,654 inst_retired.any # 1.2 IPC vmstat-10322 1,565,807 cpu_clk_unhalted.thread
2.850291804 seconds time elapsed
Thanks for fixing it quickly.
Thanks Jin Yao
On 12/5/2017 3:23 PM, Jin, Yao wrote: > Hi, > > I applied the diff but it's failed. > > jinyao@skl:~/skl-ws/perf-dev/lck-4594/src$ patch -p1 < 1.pat > patching file tools/perf/util/pmu.c > patch: **** malformed patch at line 41: *head, struct perf_pmu *pmu) > > Could you send the patch as attachment to me in another mail thread? > > to yao.jin@linux.intel.com > cc yao.jin@intel.com > > Thanks > Jin Yao > > On 12/5/2017 3:12 PM, Ganapatrao Kulkarni wrote: >> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c >> index 5ad8a18..57e38fd 100644 >> --- a/tools/perf/util/pmu.c >> +++ b/tools/perf/util/pmu.c >> @@ -538,6 +538,34 @@ static bool pmu_is_uncore(const char *name) >> } >> >> /* >> + * PMU CORE devices have different name other than cpu in sysfs on some >> + * platforms. looking for possible sysfs files to identify as core >> device. >> + */ >> +static int is_pmu_core(const char *name) >> +{ >> + struct stat st; >> + char path[PATH_MAX]; >> + const char *sysfs = sysfs__mountpoint(); >> + >> + if (!sysfs) >> + return 0; >> + >> + /* Look for cpu sysfs (x86 and others) */ >> + scnprintf(path, PATH_MAX, "%s/bus/event_source/devices/cpu", sysfs); >> + if ((stat(path, &st) == 0) && >> + (strncmp(name, "cpu", strlen("cpu")) == 0)) >> + return 1; >> + >> + /* Look for cpu sysfs (specific to arm) */ >> + scnprintf(path, PATH_MAX, "%s/bus/event_source/devices/%s/cpus", >> + sysfs, name); >> + if (stat(path, &st) == 0) >> + return 1; >> + >> + return 0; >> +} >> + >> +/* >> * Return the CPU id as a raw string. >> * >> * Each architecture should provide a more precise id string that >> @@ -641,7 +669,7 @@ static void pmu_add_cpu_aliases(struct list_head >> *head, struct perf_pmu *pmu) >> break; >> } >> >> - if (pmu->is_uncore) { >> + if (!is_pmu_core(name)) { >> /* check for uncore devices */ >> if (pe->pmu == NULL) >> continue;
| |