1fed8332bSIan Rogers"""Type stubs for the perf Python module.""" 2*b9514a9aSIan Rogersfrom typing import Callable, Dict, List, Optional, Any, Iterator, Union 3fed8332bSIan Rogers 4fed8332bSIan Rogersdef config_get(name: str) -> Optional[str]: 5fed8332bSIan Rogers """Get a configuration value from perf config. 6fed8332bSIan Rogers 7fed8332bSIan Rogers Args: 8fed8332bSIan Rogers name: The configuration variable name (e.g., 'colors.top'). 9fed8332bSIan Rogers 10fed8332bSIan Rogers Returns: 11fed8332bSIan Rogers The configuration value as a string, or None if not set. 12fed8332bSIan Rogers """ 13fed8332bSIan Rogers ... 14fed8332bSIan Rogers 15*b9514a9aSIan Rogersdef metrics() -> List[Dict[str, Union[str, List[str]]]]: 16fed8332bSIan Rogers """Get a list of available metrics. 17fed8332bSIan Rogers 18fed8332bSIan Rogers Returns: 19fed8332bSIan Rogers A list of dictionaries, each describing a metric. 20fed8332bSIan Rogers """ 21fed8332bSIan Rogers ... 22fed8332bSIan Rogers 23fed8332bSIan Rogersdef syscall_name(id: int, *, elf_machine: Optional[int] = None) -> str: 24fed8332bSIan Rogers """Convert a syscall number to its name. 25fed8332bSIan Rogers 26fed8332bSIan Rogers Args: 27fed8332bSIan Rogers sc_id: The syscall number. 28fed8332bSIan Rogers elf_machine: Optional ELF machine type. 29fed8332bSIan Rogers 30fed8332bSIan Rogers Returns: 31fed8332bSIan Rogers The name of the syscall. 32fed8332bSIan Rogers """ 33fed8332bSIan Rogers ... 34fed8332bSIan Rogers 35fed8332bSIan Rogersdef syscall_id(name: str, *, elf_machine: Optional[int] = None) -> int: 36fed8332bSIan Rogers """Convert a syscall name to its number. 37fed8332bSIan Rogers 38fed8332bSIan Rogers Args: 39fed8332bSIan Rogers name: The syscall name. 40fed8332bSIan Rogers elf_machine: Optional ELF machine type. 41fed8332bSIan Rogers 42fed8332bSIan Rogers Returns: 43fed8332bSIan Rogers The number of the syscall. 44fed8332bSIan Rogers """ 45fed8332bSIan Rogers ... 46fed8332bSIan Rogers 47fed8332bSIan Rogersdef parse_events( 48fed8332bSIan Rogers event_string: str, 49fed8332bSIan Rogers cpus: Optional[cpu_map] = None, 50fed8332bSIan Rogers threads: Optional['thread_map'] = None 51fed8332bSIan Rogers) -> 'evlist': 52fed8332bSIan Rogers """Parse an event string and return an evlist. 53fed8332bSIan Rogers 54fed8332bSIan Rogers Args: 55fed8332bSIan Rogers event_string: The event string (e.g., 'cycles,instructions'). 56fed8332bSIan Rogers cpus: Optional CPU map to bind events to. 57fed8332bSIan Rogers threads: Optional thread map to bind events to. 58fed8332bSIan Rogers 59fed8332bSIan Rogers Returns: 60fed8332bSIan Rogers An evlist containing the parsed events. 61fed8332bSIan Rogers """ 62fed8332bSIan Rogers ... 63fed8332bSIan Rogers 64fed8332bSIan Rogersdef parse_metrics( 65fed8332bSIan Rogers metrics_string: str, 66fed8332bSIan Rogers pmu: Optional[str] = None, 67fed8332bSIan Rogers cpus: Optional[cpu_map] = None, 68fed8332bSIan Rogers threads: Optional['thread_map'] = None 69fed8332bSIan Rogers) -> 'evlist': 70fed8332bSIan Rogers """Parse a string of metrics or metric groups and return an evlist.""" 71fed8332bSIan Rogers ... 72fed8332bSIan Rogers 73fed8332bSIan Rogersdef tracepoint(sys: str, name: str) -> int: 74fed8332bSIan Rogers """Returns the tracepoint ID for a given system and name.""" 75fed8332bSIan Rogers ... 76fed8332bSIan Rogers 77fed8332bSIan Rogersdef pmus() -> Iterator[Any]: 78fed8332bSIan Rogers """Returns a sequence of pmus.""" 79fed8332bSIan Rogers ... 80fed8332bSIan Rogers 81fed8332bSIan Rogersclass data: 82fed8332bSIan Rogers """Represents a perf data file.""" 83fed8332bSIan Rogers def __init__(self, path: str = ..., fd: int = ...) -> None: ... 84fed8332bSIan Rogers 85fed8332bSIan Rogersclass thread: 86fed8332bSIan Rogers """Represents a thread in the system.""" 87fed8332bSIan Rogers def comm(self) -> str: 88fed8332bSIan Rogers """Get the command name of the thread.""" 89fed8332bSIan Rogers ... 90fed8332bSIan Rogers pid: int 91fed8332bSIan Rogers tid: int 92fed8332bSIan Rogers ppid: int 93fed8332bSIan Rogers cpu: int 94fed8332bSIan Rogers 95fed8332bSIan Rogersclass counts_values: 96fed8332bSIan Rogers """Raw counter values.""" 97fed8332bSIan Rogers id: int 98fed8332bSIan Rogers val: int 99fed8332bSIan Rogers ena: int 100fed8332bSIan Rogers run: int 101fed8332bSIan Rogers lost: int 102fed8332bSIan Rogers values: List[int] 103fed8332bSIan Rogers 104fed8332bSIan Rogersclass thread_map: 105fed8332bSIan Rogers """Map of threads being monitored.""" 106fed8332bSIan Rogers def __init__(self, pid: int = -1, tid: int = -1) -> None: 107fed8332bSIan Rogers """Initialize a thread map. 108fed8332bSIan Rogers 109fed8332bSIan Rogers Args: 110fed8332bSIan Rogers pid: Process ID to monitor (-1 for all). 111fed8332bSIan Rogers tid: Thread ID to monitor (-1 for all). 112fed8332bSIan Rogers """ 113fed8332bSIan Rogers ... 114fed8332bSIan Rogers def __len__(self) -> int: ... 115fed8332bSIan Rogers def __getitem__(self, index: int) -> int: ... 116fed8332bSIan Rogers def __iter__(self) -> Iterator[int]: ... 117fed8332bSIan Rogers 118fed8332bSIan Rogersclass evsel: 119fed8332bSIan Rogers """Event selector, represents a single event being monitored.""" 120fed8332bSIan Rogers def __init__( 121fed8332bSIan Rogers self, 122fed8332bSIan Rogers type: int = ..., 123fed8332bSIan Rogers config: int = ..., 124fed8332bSIan Rogers sample_freq: int = ..., 125fed8332bSIan Rogers sample_period: int = ..., 126fed8332bSIan Rogers sample_type: int = ..., 127fed8332bSIan Rogers read_format: int = ..., 128fed8332bSIan Rogers disabled: bool = ..., 129fed8332bSIan Rogers inherit: bool = ..., 130fed8332bSIan Rogers pinned: bool = ..., 131fed8332bSIan Rogers exclusive: bool = ..., 132fed8332bSIan Rogers exclude_user: bool = ..., 133fed8332bSIan Rogers exclude_kernel: bool = ..., 134fed8332bSIan Rogers exclude_hv: bool = ..., 135fed8332bSIan Rogers exclude_idle: bool = ..., 136fed8332bSIan Rogers mmap: bool = ..., 137fed8332bSIan Rogers context_switch: bool = ..., 138fed8332bSIan Rogers comm: bool = ..., 139fed8332bSIan Rogers freq: bool = ..., 140fed8332bSIan Rogers inherit_stat: bool = ..., 141fed8332bSIan Rogers enable_on_exec: bool = ..., 142fed8332bSIan Rogers task: bool = ..., 143fed8332bSIan Rogers watermark: int = ..., 144fed8332bSIan Rogers precise_ip: int = ..., 145fed8332bSIan Rogers mmap_data: bool = ..., 146fed8332bSIan Rogers sample_id_all: bool = ..., 147fed8332bSIan Rogers wakeup_events: int = ..., 148fed8332bSIan Rogers bp_type: int = ..., 149fed8332bSIan Rogers bp_addr: int = ..., 150fed8332bSIan Rogers bp_len: int = ..., 151fed8332bSIan Rogers idx: int = ..., 152fed8332bSIan Rogers ) -> None: ... 153fed8332bSIan Rogers def __str__(self) -> str: 154fed8332bSIan Rogers """Return string representation of the event.""" 155fed8332bSIan Rogers ... 156fed8332bSIan Rogers def open(self) -> None: 157fed8332bSIan Rogers """Open the event selector file descriptor table.""" 158fed8332bSIan Rogers ... 159fed8332bSIan Rogers def read(self, cpu: int, thread: int) -> counts_values: 160fed8332bSIan Rogers """Read counter values for a specific CPU and thread.""" 161fed8332bSIan Rogers ... 162fed8332bSIan Rogers ids: List[int] 163fed8332bSIan Rogers def cpus(self) -> cpu_map: 164fed8332bSIan Rogers """Get CPU map for this event.""" 165fed8332bSIan Rogers ... 166fed8332bSIan Rogers def threads(self) -> thread_map: 167fed8332bSIan Rogers """Get thread map for this event.""" 168fed8332bSIan Rogers ... 169fed8332bSIan Rogers tracking: bool 170fed8332bSIan Rogers config: int 171fed8332bSIan Rogers read_format: int 172fed8332bSIan Rogers sample_period: int 173fed8332bSIan Rogers sample_type: int 174fed8332bSIan Rogers size: int 175fed8332bSIan Rogers type: int 176fed8332bSIan Rogers wakeup_events: int 177fed8332bSIan Rogers 178fed8332bSIan Rogers 179fed8332bSIan Rogersclass _sample_members: 180fed8332bSIan Rogers sample_pid: int 181fed8332bSIan Rogers sample_tid: int 182fed8332bSIan Rogers sample_time: int 183fed8332bSIan Rogers sample_id: int 184fed8332bSIan Rogers sample_stream_id: int 185fed8332bSIan Rogers sample_period: int 186fed8332bSIan Rogers sample_cpu: int 187fed8332bSIan Rogers 188fed8332bSIan Rogersclass sample_event(_sample_members): 189fed8332bSIan Rogers """Represents a sample event from perf.""" 190fed8332bSIan Rogers evsel: evsel 191fed8332bSIan Rogers sample_ip: int 192fed8332bSIan Rogers sample_addr: int 193fed8332bSIan Rogers sample_phys_addr: int 194fed8332bSIan Rogers sample_weight: int 195fed8332bSIan Rogers sample_data_src: int 196fed8332bSIan Rogers sample_insn_count: int 197fed8332bSIan Rogers sample_cyc_count: int 198fed8332bSIan Rogers type: int 199fed8332bSIan Rogers raw_buf: bytes 200fed8332bSIan Rogers dso: str 201fed8332bSIan Rogers dso_long_name: str 202fed8332bSIan Rogers dso_bid: Optional[bytes] 203fed8332bSIan Rogers map_start: int 204fed8332bSIan Rogers map_end: int 205fed8332bSIan Rogers map_pgoff: int 206fed8332bSIan Rogers symbol: str 207fed8332bSIan Rogers sym_start: int 208fed8332bSIan Rogers sym_end: int 209fed8332bSIan Rogers brstack: Optional['branch_stack'] 210fed8332bSIan Rogers callchain: Optional['callchain'] 211fed8332bSIan Rogers def srccode(self) -> str: ... 212fed8332bSIan Rogers def insn(self) -> str: ... 213fed8332bSIan Rogers def __getattr__(self, name: str) -> Any: ... 214fed8332bSIan Rogers 215fed8332bSIan Rogersclass mmap_event(_sample_members): 216fed8332bSIan Rogers """Represents a mmap event from perf.""" 217fed8332bSIan Rogers type: int 218fed8332bSIan Rogers misc: int 219fed8332bSIan Rogers pid: int 220fed8332bSIan Rogers tid: int 221fed8332bSIan Rogers start: int 222fed8332bSIan Rogers len: int 223fed8332bSIan Rogers pgoff: int 224fed8332bSIan Rogers filename: str 225fed8332bSIan Rogers evsel: Optional['evsel'] 226fed8332bSIan Rogers 227fed8332bSIan Rogersclass mmap2_event(_sample_members): 228fed8332bSIan Rogers """Represents a mmap2 event from perf.""" 229fed8332bSIan Rogers type: int 230fed8332bSIan Rogers misc: int 231fed8332bSIan Rogers pid: int 232fed8332bSIan Rogers tid: int 233fed8332bSIan Rogers start: int 234fed8332bSIan Rogers len: int 235fed8332bSIan Rogers pgoff: int 236fed8332bSIan Rogers prot: int 237fed8332bSIan Rogers flags: int 238fed8332bSIan Rogers filename: str 239fed8332bSIan Rogers maj: Optional[int] 240fed8332bSIan Rogers min: Optional[int] 241fed8332bSIan Rogers ino: Optional[int] 242fed8332bSIan Rogers ino_generation: Optional[int] 243fed8332bSIan Rogers build_id: Optional[bytes] 244fed8332bSIan Rogers evsel: Optional['evsel'] 245fed8332bSIan Rogers 246fed8332bSIan Rogersclass lost_event(_sample_members): 247fed8332bSIan Rogers """Represents a lost events record.""" 248fed8332bSIan Rogers type: int 249fed8332bSIan Rogers id: int 250fed8332bSIan Rogers lost: int 251fed8332bSIan Rogers evsel: Optional['evsel'] 252fed8332bSIan Rogers 253fed8332bSIan Rogersclass comm_event(_sample_members): 254fed8332bSIan Rogers """Represents a COMM record.""" 255fed8332bSIan Rogers type: int 256fed8332bSIan Rogers pid: int 257fed8332bSIan Rogers tid: int 258fed8332bSIan Rogers comm: str 259fed8332bSIan Rogers evsel: Optional['evsel'] 260fed8332bSIan Rogers 261fed8332bSIan Rogersclass task_event(_sample_members): 262fed8332bSIan Rogers """Represents an EXIT or FORK record.""" 263fed8332bSIan Rogers type: int 264fed8332bSIan Rogers pid: int 265fed8332bSIan Rogers ppid: int 266fed8332bSIan Rogers tid: int 267fed8332bSIan Rogers ptid: int 268fed8332bSIan Rogers time: int 269fed8332bSIan Rogers evsel: Optional['evsel'] 270fed8332bSIan Rogers 271fed8332bSIan Rogersclass throttle_event(_sample_members): 272fed8332bSIan Rogers """Represents a THROTTLE or UNTHROTTLE record.""" 273fed8332bSIan Rogers type: int 274fed8332bSIan Rogers time: int 275fed8332bSIan Rogers id: int 276fed8332bSIan Rogers stream_id: int 277fed8332bSIan Rogers evsel: Optional['evsel'] 278fed8332bSIan Rogers 279fed8332bSIan Rogersclass read_event(_sample_members): 280fed8332bSIan Rogers """Represents a READ record.""" 281fed8332bSIan Rogers type: int 282fed8332bSIan Rogers pid: int 283fed8332bSIan Rogers tid: int 284fed8332bSIan Rogers evsel: Optional['evsel'] 285fed8332bSIan Rogers 286fed8332bSIan Rogersclass switch_event(_sample_members): 287fed8332bSIan Rogers """Represents a SWITCH or SWITCH_CPU_WIDE record.""" 288fed8332bSIan Rogers type: int 289fed8332bSIan Rogers next_prev_pid: int 290fed8332bSIan Rogers next_prev_tid: int 291fed8332bSIan Rogers evsel: Optional['evsel'] 292fed8332bSIan Rogers 293fed8332bSIan Rogersclass branch_entry: 294fed8332bSIan Rogers """Represents a branch entry in the branch stack. 295fed8332bSIan Rogers 296fed8332bSIan Rogers Attributes: 297fed8332bSIan Rogers from_ip: Source address of the branch (corresponds to 'from' keyword in C). 298fed8332bSIan Rogers to_ip: Destination address of the branch. 299fed8332bSIan Rogers mispred: True if the branch was mispredicted. 300fed8332bSIan Rogers predicted: True if the branch was predicted. 301fed8332bSIan Rogers in_tx: True if the branch was in a transaction. 302fed8332bSIan Rogers abort: True if the branch was an abort. 303fed8332bSIan Rogers cycles: Number of cycles since the last branch. 304fed8332bSIan Rogers type: Type of branch. 305fed8332bSIan Rogers """ 306fed8332bSIan Rogers from_ip: int 307fed8332bSIan Rogers to_ip: int 308fed8332bSIan Rogers mispred: bool 309fed8332bSIan Rogers predicted: bool 310fed8332bSIan Rogers in_tx: bool 311fed8332bSIan Rogers abort: bool 312fed8332bSIan Rogers cycles: int 313fed8332bSIan Rogers type: int 314fed8332bSIan Rogers 315fed8332bSIan Rogersclass branch_stack: 316fed8332bSIan Rogers """Sequence of branch entries in the branch stack.""" 317fed8332bSIan Rogers def __len__(self) -> int: ... 318fed8332bSIan Rogers def __getitem__(self, index: int) -> branch_entry: ... 319fed8332bSIan Rogers 320fed8332bSIan Rogersclass callchain_node: 321fed8332bSIan Rogers """Represents a frame in the callchain.""" 322fed8332bSIan Rogers ip: int 323fed8332bSIan Rogers symbol: Optional[str] 324fed8332bSIan Rogers dso: Optional[str] 325fed8332bSIan Rogers 326fed8332bSIan Rogersclass callchain: 327fed8332bSIan Rogers """Sequence of callchain frames.""" 328fed8332bSIan Rogers def __len__(self) -> int: ... 329fed8332bSIan Rogers def __getitem__(self, index: int) -> callchain_node: ... 330fed8332bSIan Rogers 331fed8332bSIan Rogersclass stat_event(_sample_members): 332fed8332bSIan Rogers """Represents a stat event from perf.""" 333fed8332bSIan Rogers type: int 334fed8332bSIan Rogers id: int 335fed8332bSIan Rogers cpu: int 336fed8332bSIan Rogers thread: int 337fed8332bSIan Rogers val: int 338fed8332bSIan Rogers ena: int 339fed8332bSIan Rogers run: int 340fed8332bSIan Rogers evsel: Optional['evsel'] 341fed8332bSIan Rogers 342fed8332bSIan Rogersclass stat_round_event(_sample_members): 343fed8332bSIan Rogers """Represents a stat round event from perf.""" 344fed8332bSIan Rogers type: int 345fed8332bSIan Rogers time: int 346fed8332bSIan Rogers stat_round_type: int 347fed8332bSIan Rogers evsel: Optional['evsel'] 348fed8332bSIan Rogers 349fed8332bSIan Rogersclass cpu_map: 350fed8332bSIan Rogers """Map of CPUs being monitored.""" 351fed8332bSIan Rogers def __init__(self, cpustr: Optional[str] = None) -> None: ... 352fed8332bSIan Rogers def __len__(self) -> int: ... 353fed8332bSIan Rogers def __getitem__(self, index: int) -> int: ... 354fed8332bSIan Rogers def __iter__(self) -> Iterator[int]: ... 355fed8332bSIan Rogers 356fed8332bSIan Rogers 357fed8332bSIan Rogersclass evlist: 358fed8332bSIan Rogers def __init__(self, cpus: cpu_map, threads: thread_map) -> None: ... 359fed8332bSIan Rogers def open(self) -> None: 360fed8332bSIan Rogers """Open the events in the list.""" 361fed8332bSIan Rogers ... 362fed8332bSIan Rogers def close(self) -> None: 363fed8332bSIan Rogers """Close the events in the list.""" 364fed8332bSIan Rogers ... 365fed8332bSIan Rogers def mmap(self) -> None: 366fed8332bSIan Rogers """Memory map the event buffers.""" 367fed8332bSIan Rogers ... 368fed8332bSIan Rogers def poll(self, timeout: int) -> int: 369fed8332bSIan Rogers """Poll for events. 370fed8332bSIan Rogers 371fed8332bSIan Rogers Args: 372fed8332bSIan Rogers timeout: Timeout in milliseconds. 373fed8332bSIan Rogers 374fed8332bSIan Rogers Returns: 375fed8332bSIan Rogers Number of events ready. 376fed8332bSIan Rogers """ 377fed8332bSIan Rogers ... 378fed8332bSIan Rogers def read_on_cpu(self, cpu: int) -> Optional[Any]: 379fed8332bSIan Rogers """Read a sample event from a specific CPU. 380fed8332bSIan Rogers 381fed8332bSIan Rogers Args: 382fed8332bSIan Rogers cpu: The CPU number. 383fed8332bSIan Rogers 384fed8332bSIan Rogers Returns: 385fed8332bSIan Rogers A sample_event or other event type if available, or None. 386fed8332bSIan Rogers """ 387fed8332bSIan Rogers ... 388fed8332bSIan Rogers def all_cpus(self) -> cpu_map: 389fed8332bSIan Rogers """Get a cpu_map of all CPUs in the system.""" 390fed8332bSIan Rogers ... 391fed8332bSIan Rogers def metrics(self) -> List[str]: 392fed8332bSIan Rogers """Get a list of metric names within the evlist.""" 393fed8332bSIan Rogers ... 394fed8332bSIan Rogers def compute_metric(self, metric: str, cpu: int, thread: int) -> float: 395fed8332bSIan Rogers """Compute metric for given name, cpu and thread. 396fed8332bSIan Rogers 397fed8332bSIan Rogers Args: 398fed8332bSIan Rogers metric: The metric name. 399fed8332bSIan Rogers cpu: The CPU number. 400fed8332bSIan Rogers thread: The thread ID. 401fed8332bSIan Rogers 402fed8332bSIan Rogers Returns: 403fed8332bSIan Rogers The computed metric value. 404fed8332bSIan Rogers """ 405fed8332bSIan Rogers ... 406fed8332bSIan Rogers def config(self) -> None: 407fed8332bSIan Rogers """Configure the events in the list.""" 408fed8332bSIan Rogers ... 409fed8332bSIan Rogers def disable(self) -> None: 410fed8332bSIan Rogers """Disable all events in the list.""" 411fed8332bSIan Rogers ... 412fed8332bSIan Rogers def enable(self) -> None: 413fed8332bSIan Rogers """Enable all events in the list.""" 414fed8332bSIan Rogers ... 415fed8332bSIan Rogers def get_pollfd(self) -> List[int]: 416fed8332bSIan Rogers """Get a list of file descriptors for polling.""" 417fed8332bSIan Rogers ... 418fed8332bSIan Rogers def add(self, evsel: evsel) -> int: 419fed8332bSIan Rogers """Add an event to the list.""" 420fed8332bSIan Rogers ... 421fed8332bSIan Rogers def __iter__(self) -> Iterator[evsel]: 422fed8332bSIan Rogers """Iterate over the events (evsel) in the list.""" 423fed8332bSIan Rogers ... 424fed8332bSIan Rogers 425fed8332bSIan Rogers 426fed8332bSIan Rogersclass session: 427fed8332bSIan Rogers def __init__( 428fed8332bSIan Rogers self, 429fed8332bSIan Rogers data: data, 430fed8332bSIan Rogers sample: Optional[Callable[[sample_event], None]] = None, 431fed8332bSIan Rogers stat: Optional[Callable[[Any, Optional[str]], None]] = None 432fed8332bSIan Rogers ) -> None: 433fed8332bSIan Rogers """Initialize a perf session. 434fed8332bSIan Rogers 435fed8332bSIan Rogers Args: 436fed8332bSIan Rogers data: The perf data file to read. 437fed8332bSIan Rogers sample: Callback for sample events. 438fed8332bSIan Rogers stat: Callback for stat events. 439fed8332bSIan Rogers """ 440fed8332bSIan Rogers ... 441fed8332bSIan Rogers def process_events(self) -> None: 442fed8332bSIan Rogers """Process all events in the session.""" 443fed8332bSIan Rogers ... 444fed8332bSIan Rogers def find_thread(self, pid: int) -> thread: 445fed8332bSIan Rogers """Returns the thread associated with a pid.""" 446fed8332bSIan Rogers ... 447fed8332bSIan Rogers 448fed8332bSIan Rogers# Event Types 449fed8332bSIan RogersTYPE_HARDWARE: int 450fed8332bSIan Rogers"""Hardware event.""" 451fed8332bSIan Rogers 452fed8332bSIan RogersTYPE_SOFTWARE: int 453fed8332bSIan Rogers"""Software event.""" 454fed8332bSIan Rogers 455fed8332bSIan RogersTYPE_TRACEPOINT: int 456fed8332bSIan Rogers"""Tracepoint event.""" 457fed8332bSIan Rogers 458fed8332bSIan RogersTYPE_HW_CACHE: int 459fed8332bSIan Rogers"""Hardware cache event.""" 460fed8332bSIan Rogers 461fed8332bSIan RogersTYPE_RAW: int 462fed8332bSIan Rogers"""Raw hardware event.""" 463fed8332bSIan Rogers 464fed8332bSIan RogersTYPE_BREAKPOINT: int 465fed8332bSIan Rogers"""Breakpoint event.""" 466fed8332bSIan Rogers 467fed8332bSIan Rogers 468fed8332bSIan Rogers# Hardware Counters 469fed8332bSIan RogersCOUNT_HW_CPU_CYCLES: int 470fed8332bSIan Rogers"""Total cycles. Be wary of what happens during CPU frequency scaling.""" 471fed8332bSIan Rogers 472fed8332bSIan RogersCOUNT_HW_INSTRUCTIONS: int 473fed8332bSIan Rogers"""Retired instructions. Be careful, these can be affected by various issues, 474fed8332bSIan Rogersmost notably hardware interrupt counts.""" 475fed8332bSIan Rogers 476fed8332bSIan RogersCOUNT_HW_CACHE_REFERENCES: int 477fed8332bSIan Rogers"""Cache accesses. Usually this indicates Last Level Cache accesses but this 478fed8332bSIan Rogersmay vary depending on your CPU.""" 479fed8332bSIan Rogers 480fed8332bSIan RogersCOUNT_HW_CACHE_MISSES: int 481fed8332bSIan Rogers"""Cache misses. Usually this indicates Last Level Cache misses.""" 482fed8332bSIan Rogers 483fed8332bSIan RogersCOUNT_HW_BRANCH_INSTRUCTIONS: int 484fed8332bSIan Rogers"""Retired branch instructions.""" 485fed8332bSIan Rogers 486fed8332bSIan RogersCOUNT_HW_BRANCH_MISSES: int 487fed8332bSIan Rogers"""Mispredicted branch instructions.""" 488fed8332bSIan Rogers 489fed8332bSIan RogersCOUNT_HW_BUS_CYCLES: int 490fed8332bSIan Rogers"""Bus cycles, which can be different from total cycles.""" 491fed8332bSIan Rogers 492fed8332bSIan RogersCOUNT_HW_STALLED_CYCLES_FRONTEND: int 493fed8332bSIan Rogers"""Stalled cycles during issue [This event is an alias of idle-cycles-frontend].""" 494fed8332bSIan Rogers 495fed8332bSIan RogersCOUNT_HW_STALLED_CYCLES_BACKEND: int 496fed8332bSIan Rogers"""Stalled cycles during retirement [This event is an alias of idle-cycles-backend].""" 497fed8332bSIan Rogers 498fed8332bSIan RogersCOUNT_HW_REF_CPU_CYCLES: int 499fed8332bSIan Rogers"""Total cycles; not affected by CPU frequency scaling.""" 500fed8332bSIan Rogers 501fed8332bSIan Rogers 502fed8332bSIan Rogers# Cache Counters 503fed8332bSIan RogersCOUNT_HW_CACHE_L1D: int 504fed8332bSIan Rogers"""Level 1 data cache.""" 505fed8332bSIan Rogers 506fed8332bSIan RogersCOUNT_HW_CACHE_L1I: int 507fed8332bSIan Rogers"""Level 1 instruction cache.""" 508fed8332bSIan Rogers 509fed8332bSIan RogersCOUNT_HW_CACHE_LL: int 510fed8332bSIan Rogers"""Last Level Cache.""" 511fed8332bSIan Rogers 512fed8332bSIan RogersCOUNT_HW_CACHE_DTLB: int 513fed8332bSIan Rogers"""Data TLB.""" 514fed8332bSIan Rogers 515fed8332bSIan RogersCOUNT_HW_CACHE_ITLB: int 516fed8332bSIan Rogers"""Instruction TLB.""" 517fed8332bSIan Rogers 518fed8332bSIan RogersCOUNT_HW_CACHE_BPU: int 519fed8332bSIan Rogers"""Branch Processing Unit.""" 520fed8332bSIan Rogers 521fed8332bSIan RogersCOUNT_HW_CACHE_OP_READ: int 522fed8332bSIan Rogers"""Read accesses.""" 523fed8332bSIan Rogers 524fed8332bSIan RogersCOUNT_HW_CACHE_OP_WRITE: int 525fed8332bSIan Rogers"""Write accesses.""" 526fed8332bSIan Rogers 527fed8332bSIan RogersCOUNT_HW_CACHE_OP_PREFETCH: int 528fed8332bSIan Rogers"""Prefetch accesses.""" 529fed8332bSIan Rogers 530fed8332bSIan RogersCOUNT_HW_CACHE_RESULT_ACCESS: int 531fed8332bSIan Rogers"""Accesses.""" 532fed8332bSIan Rogers 533fed8332bSIan RogersCOUNT_HW_CACHE_RESULT_MISS: int 534fed8332bSIan Rogers"""Misses.""" 535fed8332bSIan Rogers 536fed8332bSIan Rogers 537fed8332bSIan Rogers# Software Counters 538fed8332bSIan RogersCOUNT_SW_CPU_CLOCK: int 539fed8332bSIan Rogers"""CPU clock event.""" 540fed8332bSIan Rogers 541fed8332bSIan RogersCOUNT_SW_TASK_CLOCK: int 542fed8332bSIan Rogers"""Task clock event.""" 543fed8332bSIan Rogers 544fed8332bSIan RogersCOUNT_SW_PAGE_FAULTS: int 545fed8332bSIan Rogers"""Page faults.""" 546fed8332bSIan Rogers 547fed8332bSIan RogersCOUNT_SW_CONTEXT_SWITCHES: int 548fed8332bSIan Rogers"""Context switches.""" 549fed8332bSIan Rogers 550fed8332bSIan RogersCOUNT_SW_CPU_MIGRATIONS: int 551fed8332bSIan Rogers"""CPU migrations.""" 552fed8332bSIan Rogers 553fed8332bSIan RogersCOUNT_SW_PAGE_FAULTS_MIN: int 554fed8332bSIan Rogers"""Minor page faults.""" 555fed8332bSIan Rogers 556fed8332bSIan RogersCOUNT_SW_PAGE_FAULTS_MAJ: int 557fed8332bSIan Rogers"""Major page faults.""" 558fed8332bSIan Rogers 559fed8332bSIan RogersCOUNT_SW_ALIGNMENT_FAULTS: int 560fed8332bSIan Rogers"""Alignment faults.""" 561fed8332bSIan Rogers 562fed8332bSIan RogersCOUNT_SW_EMULATION_FAULTS: int 563fed8332bSIan Rogers"""Emulation faults.""" 564fed8332bSIan Rogers 565fed8332bSIan RogersCOUNT_SW_DUMMY: int 566fed8332bSIan Rogers"""Dummy event.""" 567fed8332bSIan Rogers 568fed8332bSIan Rogers 569fed8332bSIan Rogers# Sample Fields 570fed8332bSIan RogersSAMPLE_IP: int 571fed8332bSIan Rogers"""Instruction pointer.""" 572fed8332bSIan Rogers 573fed8332bSIan RogersSAMPLE_TID: int 574fed8332bSIan Rogers"""Process and thread ID.""" 575fed8332bSIan Rogers 576fed8332bSIan RogersSAMPLE_TIME: int 577fed8332bSIan Rogers"""Timestamp.""" 578fed8332bSIan Rogers 579fed8332bSIan RogersSAMPLE_ADDR: int 580fed8332bSIan Rogers"""Sampled address.""" 581fed8332bSIan Rogers 582fed8332bSIan RogersSAMPLE_READ: int 583fed8332bSIan Rogers"""Read barcode.""" 584fed8332bSIan Rogers 585fed8332bSIan RogersSAMPLE_CALLCHAIN: int 586fed8332bSIan Rogers"""Call chain.""" 587fed8332bSIan Rogers 588fed8332bSIan RogersSAMPLE_ID: int 589fed8332bSIan Rogers"""Unique ID.""" 590fed8332bSIan Rogers 591fed8332bSIan RogersSAMPLE_CPU: int 592fed8332bSIan Rogers"""CPU number.""" 593fed8332bSIan Rogers 594fed8332bSIan RogersSAMPLE_PERIOD: int 595fed8332bSIan Rogers"""Sample period.""" 596fed8332bSIan Rogers 597fed8332bSIan RogersSAMPLE_STREAM_ID: int 598fed8332bSIan Rogers"""Stream ID.""" 599fed8332bSIan Rogers 600fed8332bSIan RogersSAMPLE_RAW: int 601fed8332bSIan Rogers"""Raw sample.""" 602fed8332bSIan Rogers 603fed8332bSIan Rogers 604fed8332bSIan Rogers# Format Fields 605fed8332bSIan RogersFORMAT_TOTAL_TIME_ENABLED: int 606fed8332bSIan Rogers"""Total time enabled.""" 607fed8332bSIan Rogers 608fed8332bSIan RogersFORMAT_TOTAL_TIME_RUNNING: int 609fed8332bSIan Rogers"""Total time running.""" 610fed8332bSIan Rogers 611fed8332bSIan RogersFORMAT_ID: int 612fed8332bSIan Rogers"""Event ID.""" 613fed8332bSIan Rogers 614fed8332bSIan RogersFORMAT_GROUP: int 615fed8332bSIan Rogers"""Event group.""" 616fed8332bSIan Rogers 617fed8332bSIan Rogers 618fed8332bSIan Rogers# Record Types 619fed8332bSIan RogersRECORD_MMAP: int 620fed8332bSIan Rogers"""MMAP record. Contains header, pid, tid, addr, len, pgoff, filename, and sample_id.""" 621fed8332bSIan Rogers 622fed8332bSIan RogersRECORD_LOST: int 623fed8332bSIan Rogers"""Lost events record. Contains header, id, lost count, and sample_id.""" 624fed8332bSIan Rogers 625fed8332bSIan RogersRECORD_COMM: int 626fed8332bSIan Rogers"""COMM record. Contains header, pid, tid, comm, and sample_id.""" 627fed8332bSIan Rogers 628fed8332bSIan RogersRECORD_EXIT: int 629fed8332bSIan Rogers"""EXIT record. Contains header, pid, ppid, tid, ptid, time, and sample_id.""" 630fed8332bSIan Rogers 631fed8332bSIan RogersRECORD_THROTTLE: int 632fed8332bSIan Rogers"""THROTTLE record. Contains header, time, id, stream_id, and sample_id.""" 633fed8332bSIan Rogers 634fed8332bSIan RogersRECORD_UNTHROTTLE: int 635fed8332bSIan Rogers"""UNTHROTTLE record. Contains header, time, id, stream_id, and sample_id.""" 636fed8332bSIan Rogers 637fed8332bSIan RogersRECORD_FORK: int 638fed8332bSIan Rogers"""FORK record. Contains header, pid, ppid, tid, ptid, time, and sample_id.""" 639fed8332bSIan Rogers 640fed8332bSIan RogersRECORD_READ: int 641fed8332bSIan Rogers"""READ record. Contains header, and read values.""" 642fed8332bSIan Rogers 643fed8332bSIan RogersRECORD_SAMPLE: int 644fed8332bSIan Rogers"""SAMPLE record. Contains header, and sample data requested by sample_type.""" 645fed8332bSIan Rogers 646fed8332bSIan RogersRECORD_MMAP2: int 647fed8332bSIan Rogers"""MMAP2 record. Contains header, pid, tid, addr, len, pgoff, maj, min, ino, 648fed8332bSIan Rogersino_generation, prot, flags, filename, and sample_id.""" 649fed8332bSIan Rogers 650fed8332bSIan RogersRECORD_AUX: int 651fed8332bSIan Rogers"""AUX record. Contains header, aux_offset, aux_size, flags, and sample_id.""" 652fed8332bSIan Rogers 653fed8332bSIan RogersRECORD_ITRACE_START: int 654fed8332bSIan Rogers"""ITRACE_START record. Contains header, pid, tid, and sample_id.""" 655fed8332bSIan Rogers 656fed8332bSIan RogersRECORD_LOST_SAMPLES: int 657fed8332bSIan Rogers"""LOST_SAMPLES record. Contains header, lost count, and sample_id.""" 658fed8332bSIan Rogers 659fed8332bSIan RogersRECORD_SWITCH: int 660fed8332bSIan Rogers"""SWITCH record. Contains header, and sample_id.""" 661fed8332bSIan Rogers 662fed8332bSIan RogersRECORD_SWITCH_CPU_WIDE: int 663fed8332bSIan Rogers"""SWITCH_CPU_WIDE record. Contains header, and sample_id.""" 664fed8332bSIan Rogers 665fed8332bSIan RogersRECORD_STAT: int 666fed8332bSIan Rogers"""STAT record.""" 667fed8332bSIan Rogers 668fed8332bSIan RogersRECORD_STAT_ROUND: int 669fed8332bSIan Rogers"""STAT_ROUND record.""" 670fed8332bSIan Rogers 671fed8332bSIan RogersRECORD_MISC_SWITCH_OUT: int 672fed8332bSIan Rogers"""MISC_SWITCH_OUT record.""" 673