arch/x86/events/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Sysfs show formats of files in /sys/devices/cpu/events/ are not unified,
some end with "\n", and some do not. Modify sysfs show format of events
defined by EVENT_ATTR_STR to end with "\n".
Before:
$ ls /sys/devices/cpu/events/* | xargs -i sh -c 'echo -n "{}: "; cat -A {}; echo'
branch-instructions: event=0xc4$
branch-misses: event=0xc5$
bus-cycles: event=0x3c,umask=0x01$
cache-misses: event=0x2e,umask=0x41$
cache-references: event=0x2e,umask=0x4f$
cpu-cycles: event=0x3c$
instructions: event=0xc0$
ref-cycles: event=0x00,umask=0x03$
slots: event=0x00,umask=0x4
topdown-bad-spec: event=0x00,umask=0x81
topdown-be-bound: event=0x00,umask=0x83
topdown-fe-bound: event=0x00,umask=0x82
topdown-retiring: event=0x00,umask=0x80
After:
$ ls /sys/devices/cpu/events/* | xargs -i sh -c 'echo -n "{}: "; cat -A {}; echo'
/sys/devices/cpu/events/branch-instructions: event=0xc4$
/sys/devices/cpu/events/branch-misses: event=0xc5$
/sys/devices/cpu/events/bus-cycles: event=0x3c,umask=0x01$
/sys/devices/cpu/events/cache-misses: event=0x2e,umask=0x41$
/sys/devices/cpu/events/cache-references: event=0x2e,umask=0x4f$
/sys/devices/cpu/events/cpu-cycles: event=0x3c$
/sys/devices/cpu/events/instructions: event=0xc0$
/sys/devices/cpu/events/ref-cycles: event=0x00,umask=0x03$
/sys/devices/cpu/events/slots: event=0x00,umask=0x4$
Signed-off-by: Yang Jihong <yangjihong1@huawei.com>
---
arch/x86/events/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
index eef816fc216d..e3cc099886ab 100644
--- a/arch/x86/events/core.c
+++ b/arch/x86/events/core.c
@@ -1837,7 +1837,7 @@ ssize_t events_sysfs_show(struct device *dev, struct device_attribute *attr, cha
/* string trumps id */
if (pmu_attr->event_str)
- return sprintf(page, "%s", pmu_attr->event_str);
+ return sprintf(page, "%s\n", pmu_attr->event_str);
return x86_pmu.events_sysfs_show(page, config);
}
--
2.30.GIT
On Thu, Mar 24, 2022 at 11:19:57AM +0800, Yang Jihong wrote: > Sysfs show formats of files in /sys/devices/cpu/events/ are not unified, > some end with "\n", and some do not. Modify sysfs show format of events > defined by EVENT_ATTR_STR to end with "\n". Did you test all the userspace that consumes these fields to make sure none of them break? I suppose it's mostly perf tool, but I'm fairly sure there's others out there as well.
Hi Peter,
On 2022/3/24 18:11, Peter Zijlstra wrote:
> On Thu, Mar 24, 2022 at 11:19:57AM +0800, Yang Jihong wrote:
>> Sysfs show formats of files in /sys/devices/cpu/events/ are not unified,
>> some end with "\n", and some do not. Modify sysfs show format of events
>> defined by EVENT_ATTR_STR to end with "\n".
>
> Did you test all the userspace that consumes these fields to make sure
> none of them break? I suppose it's mostly perf tool, but I'm fairly sure
> there's others out there as well.
>
Yes, I tested "perf record" and "perf stat" commands on my machine
against the modified events, and the results are as follows:
$ perf stat -e
topdown-fetch-bubbles,topdown-recovery-bubbles,topdown-slots-issued,topdown-slots-retired,topdown-total-slots
-a sleep 1
Performance counter stats for 'system wide':
2356235 topdown-fetch-bubbles # 1211.9% frontend
bound
226132 topdown-recovery-bubbles # 182.9% bad
speculation
1073595 topdown-slots-issued # -1780.4% backend bound
944133 topdown-slots-retired # 485.6% retiring
194420 topdown-total-slots
0.987394388 seconds time elapsed
$ perf record -e
topdown-fetch-bubbles,topdown-recovery-bubbles,topdown-slots-issued,topdown-slots-retired,topdown-total-slots
-a sleep 1
Lowering default frequency rate from 4000 to 3000.
Please consider tweaking /proc/sys/kernel/perf_event_max_sample_rate.
Couldn't synthesize bpf events.
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.300 MB perf.data (2620 samples) ]
$ perf evlist
topdown-fetch-bubbles
topdown-recovery-bubbles
topdown-slots-issued
topdown-slots-retired
topdown-total-slots
dummy:HG
.
Thanks,
Jihong
> .
>
On Fri, Mar 25, 2022 at 09:38:47AM +0800, Yang Jihong wrote: > Hi Peter, > > On 2022/3/24 18:11, Peter Zijlstra wrote: > > On Thu, Mar 24, 2022 at 11:19:57AM +0800, Yang Jihong wrote: > > > Sysfs show formats of files in /sys/devices/cpu/events/ are not unified, > > > some end with "\n", and some do not. Modify sysfs show format of events > > > defined by EVENT_ATTR_STR to end with "\n". > > > > Did you test all the userspace that consumes these fields to make sure > > none of them break? I suppose it's mostly perf tool, but I'm fairly sure > > there's others out there as well. > > > Yes, I tested "perf record" and "perf stat" commands on my machine against > the modified events, and the results are as follows: Fair enough, I'll queue it for after -rc1.
The following commit has been merged into the perf/core branch of tip:
Commit-ID: 7bebfe9dd802b80abff5a43e00ab68d98893a22c
Gitweb: https://git.kernel.org/tip/7bebfe9dd802b80abff5a43e00ab68d98893a22c
Author: Yang Jihong <yangjihong1@huawei.com>
AuthorDate: Thu, 24 Mar 2022 11:19:57 +08:00
Committer: Peter Zijlstra <peterz@infradead.org>
CommitterDate: Tue, 05 Apr 2022 10:24:39 +02:00
perf/x86: Unify format of events sysfs show
Sysfs show formats of files in /sys/devices/cpu/events/ are not unified,
some end with "\n", and some do not. Modify sysfs show format of events
defined by EVENT_ATTR_STR to end with "\n".
Before:
$ ls /sys/devices/cpu/events/* | xargs -i sh -c 'echo -n "{}: "; cat -A {}; echo'
branch-instructions: event=0xc4$
branch-misses: event=0xc5$
bus-cycles: event=0x3c,umask=0x01$
cache-misses: event=0x2e,umask=0x41$
cache-references: event=0x2e,umask=0x4f$
cpu-cycles: event=0x3c$
instructions: event=0xc0$
ref-cycles: event=0x00,umask=0x03$
slots: event=0x00,umask=0x4
topdown-bad-spec: event=0x00,umask=0x81
topdown-be-bound: event=0x00,umask=0x83
topdown-fe-bound: event=0x00,umask=0x82
topdown-retiring: event=0x00,umask=0x80
After:
$ ls /sys/devices/cpu/events/* | xargs -i sh -c 'echo -n "{}: "; cat -A {}; echo'
/sys/devices/cpu/events/branch-instructions: event=0xc4$
/sys/devices/cpu/events/branch-misses: event=0xc5$
/sys/devices/cpu/events/bus-cycles: event=0x3c,umask=0x01$
/sys/devices/cpu/events/cache-misses: event=0x2e,umask=0x41$
/sys/devices/cpu/events/cache-references: event=0x2e,umask=0x4f$
/sys/devices/cpu/events/cpu-cycles: event=0x3c$
/sys/devices/cpu/events/instructions: event=0xc0$
/sys/devices/cpu/events/ref-cycles: event=0x00,umask=0x03$
/sys/devices/cpu/events/slots: event=0x00,umask=0x4$
Signed-off-by: Yang Jihong <yangjihong1@huawei.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20220324031957.135595-1-yangjihong1@huawei.com
---
arch/x86/events/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
index 54f992e..b08052b 100644
--- a/arch/x86/events/core.c
+++ b/arch/x86/events/core.c
@@ -1852,7 +1852,7 @@ ssize_t events_sysfs_show(struct device *dev, struct device_attribute *attr, cha
/* string trumps id */
if (pmu_attr->event_str)
- return sprintf(page, "%s", pmu_attr->event_str);
+ return sprintf(page, "%s\n", pmu_attr->event_str);
return x86_pmu.events_sysfs_show(page, config);
}
© 2016 - 2026 Red Hat, Inc.