From d85c15d4b9664565bf43e0b78ef976cf2dbd82f2 Mon Sep 17 00:00:00 2001 From: Rouzip <1226015390@qq.com> Date: Thu, 10 Aug 2023 21:25:29 +0800 Subject: [PATCH] fix: fix bug in perf module --- perf/collector_libpfm.go | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/perf/collector_libpfm.go b/perf/collector_libpfm.go index 2b38d5d5be..8581df0fef 100644 --- a/perf/collector_libpfm.go +++ b/perf/collector_libpfm.go @@ -209,11 +209,11 @@ func (c *collector) setup() error { // Group is prepared so we should reset and enable counting. for _, fd := range leaderFileDescriptors { - err = c.ioctlSetInt(fd, unix.PERF_EVENT_IOC_RESET, 0) + err = c.ioctlSetInt(fd, unix.PERF_EVENT_IOC_RESET, unix.PERF_IOC_FLAG_GROUP) if err != nil { return err } - err = c.ioctlSetInt(fd, unix.PERF_EVENT_IOC_ENABLE, 0) + err = c.ioctlSetInt(fd, unix.PERF_EVENT_IOC_ENABLE, unix.PERF_IOC_FLAG_GROUP) if err != nil { return err } @@ -289,14 +289,8 @@ type eventInfo struct { func (c *collector) registerEvent(event eventInfo, leaderFileDescriptors map[int]int) (map[int]int, error) { newLeaderFileDescriptors := make(map[int]int, len(c.onlineCPUs)) - var pid, flags int - if event.isGroupLeader { - pid = event.pid - flags = unix.PERF_FLAG_FD_CLOEXEC | unix.PERF_FLAG_PID_CGROUP - } else { - pid = -1 - flags = unix.PERF_FLAG_FD_CLOEXEC - } + pid := event.pid + flags := unix.PERF_FLAG_FD_CLOEXEC | unix.PERF_FLAG_PID_CGROUP setAttributes(event.config, event.isGroupLeader)