настроить мониторинг производительности (set up performance monitoring)
Ошибки (баги) (Bugs)
The F_SETOWN_EX
option to fcntl(2) is needed to properly get
overflow signals in threads. This was introduced in Linux
2.6.32.
Prior to Linux 2.6.33 (at least for x86), the kernel did not
check if events could be scheduled together until read time. The
same happens on all known kernels if the NMI watchdog is enabled.
This means to see if a given set of events works you have to
perf_event_open
(), start, then read before you know for sure you
can get valid measurements.
Prior to Linux 2.6.34, event constraints were not enforced by the
kernel. In that case, some events would silently return "0" if
the kernel scheduled them in an improper counter slot.
Prior to Linux 2.6.34, there was a bug when multiplexing where
the wrong results could be returned.
Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the
kernel if "inherit" is enabled and many threads are started.
Prior to Linux 2.6.35, PERF_FORMAT_GROUP
did not work with
attached processes.
There is a bug in the kernel code between Linux 2.6.36 and Linux
3.0 that ignores the "watermark" field and acts as if a
wakeup_event was chosen if the union has a nonzero value in it.
From Linux 2.6.31 to Linux 3.4, the PERF_IOC_FLAG_GROUP
ioctl
argument was broken and would repeatedly operate on the event
specified rather than iterating across all sibling events in a
group.
From Linux 3.4 to Linux 3.11, the mmap cap_usr_rdpmc and
cap_usr_time bits mapped to the same location. Code should
migrate to the new cap_user_rdpmc and cap_user_time fields
instead.
Always double-check your results! Various generalized events
have had wrong values. For example, retired branches measured
the wrong thing on AMD machines until Linux 2.6.35.