PMC.CORE(3)

๐Ÿ“ฆ
version 15.1 ยท 2 versions
, in freebsd 15.1

โœจ NAME โœจ

Okay so PMC.CORE(3) is the manual page for pmc.core โ€” measurement events for Intel Core Solo and Core Duo family CPUs. That's the whole readme, bestie: these are the performance-measurement events for those CPUs, and yes, it's giving very specific hardware lore. ๐Ÿ’–


๐ŸŒธ LIBRARY ๐ŸŒธ

Performance Counters Library (libpmc, -lpmc).


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

#include <pmc.h>

๐Ÿ’œ DESCRIPTION ๐Ÿ’œ

Intel Core Solo and Core Duo CPUs contain PMCs conforming to version 1 of the Intel performance measurement architecture. No cap, that's the architecture era we're in. โœจ

These PMCs are documented in โ€œVolume 3: System Programming Guideโ€, IA-32 Intelยฎ Architecture Software Developer's Manual, Order Number 253669-027US, Intel Corporation, July 2008. So if you need the official lore, that's where it lives. ๐Ÿ“š

๐Ÿ’… PMC Features ๐Ÿ’…

CPUs conforming to version 1 of the Intel performance measurement architecture contain two programmable PMCs of class PMC_CLASS_IAP. The PMCs are 40 bits width and offer the following capabilities โ€” here's the yes/no tea:

  • PMC_CAP_CASCADE โ€” No
  • PMC_CAP_EDGE โ€” Yes
  • PMC_CAP_INTERRUPT โ€” Yes
  • PMC_CAP_INVERT โ€” Yes
  • PMC_CAP_READ โ€” Yes
  • PMC_CAP_PRECISE โ€” No
  • PMC_CAP_SYSTEM โ€” Yes
  • PMC_CAP_TAGGING โ€” No
  • PMC_CAP_THRESHOLD โ€” Yes
  • PMC_CAP_USER โ€” Yes
  • PMC_CAP_WRITE โ€” Yes

๐ŸŽ€ Event Qualifiers ๐ŸŽ€

Event specifiers for these PMCs support the following common qualifiers. Periodt.

  • cmask=value โ€” Configure the PMC to increment only if the number of configured events measured in a cycle is greater than or equal to value.
  • edge โ€” Configure the PMC to count the number of de-asserted to asserted transitions of the conditions expressed by the other qualifiers. If specified, the counter will increment only once whenever a condition becomes true, irrespective of the number of clocks during which the condition remains true.
  • inv โ€” Invert the sense of comparison when the cmask qualifier is present, making the counter increment when the number of events per cycle is less than the value specified by the cmask qualifier.
  • os โ€” Configure the PMC to count events happening at processor privilege level 0.
  • usr โ€” Configure the PMC to count events occurring at privilege levels 1, 2 or 3.

If neither of the os or usr qualifiers are specified, the default is to enable both. Lowkey generous of it. ๐Ÿซถ

Events that require core-specificity to be specified use an additional qualifier core=value, where argument value is one of:

  • all โ€” Measure event conditions on all cores.
  • this โ€” Measure event conditions on this core.

The default is this.

Events that require an agent qualifier to be specified use an additional qualifier agent=value, where argument value is one of:

  • this โ€” Measure events associated with this bus agent.
  • any โ€” Measure events caused by any bus agent.

The default is this.

Events that require a hardware prefetch qualifier to be specified use an additional qualifier prefetch=value, where argument value is one of:

  • both โ€” Include all prefetches.
  • only โ€” Only count hardware prefetches.
  • exclude โ€” Exclude hardware prefetches.

The default is both.

Events that require a cache coherence qualifier to be specified use an additional qualifier cachestate=value, where argument value contains one or more of the following letters:

  • e โ€” Count cache lines in the exclusive state.
  • i โ€” Count cache lines in the invalid state.
  • m โ€” Count cache lines in the modified state.
  • s โ€” Count cache lines in the shared state.

The default is eims.


๐Ÿฆ‹ Event Specifiers ๐Ÿฆ‹

The following event names are case insensitive. Whitespace, hyphens and underscore characters in these names are ignored. Iconic, honestly. โœจ

Core PMCs support the following events:

  • BAClears โ€” (Event E6H, Umask 00H) The number of BAClear conditions asserted.
  • BTB_Misses โ€” (Event E2H, Umask 00H) The number of branches for which the branch table buffer did not produce a prediction.
  • Br_BAC_Missp_Exec โ€” (Event 8AH, Umask 00H) The number of branch instructions executed that were mispredicted at the front end.
  • Br_Bogus โ€” (Event E4H, Umask 00H) The number of bogus branches.
  • Br_Call_Exec โ€” (Event 92H, Umask 00H) The number of CALL instructions executed.
  • Br_Call_Missp_Exec โ€” (Event 93H, Umask 00H) The number of CALL instructions executed that were mispredicted.
  • Br_Cnd_Exec โ€” (Event 8BH, Umask 00H) The number of conditional branch instructions executed.
  • Br_Cnd_Missp_Exec โ€” (Event 8CH, Umask 00H) The number of conditional branch instructions executed that were mispredicted.
  • Br_Ind_Call_Exec โ€” (Event 94H, Umask 00H) The number of indirect CALL instructions executed.
  • Br_Ind_Exec โ€” (Event 8DH, Umask 00H) The number of indirect branches executed.
  • Br_Ind_Missp_Exec โ€” (Event 8EH, Umask 00H) The number of indirect branch instructions executed that were mispredicted.
  • Br_Inst_Exec โ€” (Event 88H, Umask 00H) The number of branch instructions executed including speculative branches.
  • Br_Instr_Decoded โ€” (Event E0H, Umask 00H) The number of branch instructions decoded.
  • Br_Instr_Ret โ€” (Event C4H, Umask 00H) (Alias "Branch Instruction Retired") The number of branch instructions retired. This is an architectural performance event.
  • Br_MisPred_Ret โ€” (Event C5H, Umask 00H) (Alias "Branch Misses Retired") The number of mispredicted branch instructions retired. This is an architectural performance event.
  • Br_MisPred_Taken_Ret โ€” (Event CAH, Umask 00H) The number of taken and mispredicted branches retired.
  • Br_Missp_Exec โ€” (Event 89H, Umask 00H) The number of branch instructions executed and mispredicted at execution including branches that were not predicted.
  • Br_Ret_BAC_Missp_Exec โ€” (Event 91H, Umask 00H) The number of return branch instructions that were mispredicted at the front end.
  • Br_Ret_Exec โ€” (Event 8FH, Umask 00H) The number of return branch instructions executed.
  • Br_Ret_Missp_Exec โ€” (Event 90H, Umask 00H) The number of return branch instructions executed that were mispredicted.
  • Br_Taken_Ret โ€” (Event C9H, Umask 00H) The number of taken branches retired.
  • Bus_BNR_Clocks โ€” (Event 61H, Umask 00H) The number of external bus cycles while BNR (bus not ready) was asserted.
  • Bus_DRDY_Clocks [,agent=agent] โ€” (Event 62H, Umask 00H) The number of external bus cycles while DRDY was asserted.
  • Bus_Data_Rcv โ€” (Event 64H, Umask 40H) The number of cycles during which the processor is busy receiving data.
  • Bus_Locks_Clocks [,core=core] โ€” (Event 63H) The number of external bus cycles while the bus lock signal was asserted.
  • Bus_Not_In_Use [,core=core] โ€” (Event 7DH) The number of cycles when there is no transaction from the core.
  • Bus_Req_Outstanding [,agent=agent] [,core=core] โ€” (Event 60H) The weighted cycles of cacheable bus data read requests from the data cache unit or hardware prefetcher.
  • Bus_Snoop_Stall โ€” (Event 7EH, Umask 00H) The number bus cycles while a bus snoop is stalled.
  • Bus_Snoops [,agent=agent] [,cachestate=mesi] โ€” (Event 77H) The number of snoop responses to bus transactions.
  • Bus_Trans_Any [,agent=agent] โ€” (Event 70H) The number of completed bus transactions.
  • Bus_Trans_Brd [,core=core] โ€” (Event 65H) The number of read bus transactions.
  • Bus_Trans_Burst [,agent=agent] โ€” (Event 6EH) The number of completed burst transactions. Retried transactions may be counted more than once.
  • Bus_Trans_Def [,core=core] โ€” (Event 6DH) The number of completed deferred transactions.
  • Bus_Trans_IO [,agent=agent] [,core=core] โ€” (Event 6CH) The number of completed I/O transactions counting both reads and writes.
  • Bus_Trans_Ifetch [,agent=agent] [,core=core] โ€” (Event 68H) Completed instruction fetch transactions.
  • Bus_Trans_Inval [,agent=agent] [,core=core] โ€” (Event 69H) The number completed invalidate transactions.
  • Bus_Trans_Mem [,agent=agent] โ€” (Event 6FH) The number of completed memory transactions.
  • Bus_Trans_P [,agent=agent] [,core=core] โ€” (Event 6BH) The number of completed partial transactions.
  • Bus_Trans_Pwr [,agent=agent] [,core=core] โ€” (Event 6AH) The number of completed partial write transactions.
  • Bus_Trans_RFO [,agent=agent] [,core=core] โ€” (Event 66H) The number of completed read-for-ownership transactions.
  • Bus_Trans_WB [,agent=agent] โ€” (Event 67H) The number of completed write-back transactions from the data cache unit, excluding L2 write-backs.
  • Cycles_Div_Busy โ€” (Event 14H, Umask 00H) The number of cycles the divider is busy. The event is only available on PMC0.
  • Cycles_Int_Masked โ€” (Event C6H, Umask 00H) The number of cycles while interrupts were disabled.
  • Cycles_Int_Pending_Masked โ€” (Event C7H, Umask 00H) The number of cycles while interrupts were disabled and interrupts were pending.
  • DCU_Snoop_To_Share [,core=core] โ€” (Event 78H) The number of data cache unit snoops to L1 cache lines in the shared state.
  • DCache_Cache_Lock [,cachestate=mesi] โ€” (Event 42H) The number of cacheable locked read operations to invalid state.
  • DCache_Cache_LD [,cachestate=mesi] โ€” (Event 40H) The number of cacheable L1 data read operations.
  • DCache_Cache_ST [,cachestate=mesi] โ€” (Event 41H) The number cacheable L1 data write operations.
  • DCache_M_Evict โ€” (Event 47H, Umask 00H) The number of M state data cache lines that were evicted.
  • DCache_M_Repl โ€” (Event 46H, Umask 00H) The number of M state data cache lines that were allocated.
  • DCache_Pend_Miss โ€” (Event 48H, Umask 00H) The weighted cycles an L1 miss was outstanding.
  • DCache_Repl โ€” (Event 45H, Umask 0FH) The number of data cache line replacements.
  • Data_Mem_Cache_Ref โ€” (Event 44H, Umask 02H) The number of cacheable read and write operations to L1 data cache.
  • Data_Mem_Ref โ€” (Event 43H, Umask 01H) The number of L1 data reads and writes, both cacheable and un-cacheable.
  • Dbus_Busy [,core=core] โ€” (Event 22H) The number of core cycles during which the data bus was busy.
  • Dbus_Busy_Rd [,core=core] โ€” (Event 23H) The number of cycles during which the data bus was busy transferring data to a core.
  • Div โ€” (Event 13H, Umask 00H) the number of divide operations, including speculative ones, for both integer and floating point divides. Heads up: this one can only be counted on PMC1 ๐Ÿ’…
  • Dtlb_Miss โ€” (Event 49H, Umask 00H) the number of data references that missed the TLB. gone, not found, R.I.P. ๐Ÿ˜ญ
  • ESP_Uops โ€” (Event D7H, Umask 00H) the number of ESP folding instructions decoded.
  • EST_Trans [,trans=transition] โ€” (Event 3AH) counts the number of Intel Enhanced SpeedStep transitions โœจ. That transition arg can be one of these:
    • any โ€” (Umask 00H) count all the transitions.
    • frequency โ€” (Umask 01H) count frequency transitions.

The default is any.

  • FP_Assist โ€” (Event 11H, Umask 00H) the number of floating point operations that required microcode assists. ngl this event is only available on PMC1.
  • FP_Comp_Instr_Ret โ€” (Event C1H, Umask 00H) the number of X87 floating point compute instructions retired. only available on PMC0, bestie.
  • FP_Comps_Op_Exe โ€” (Event 10H, Umask 00H) the number of floating point computational instructions executed.
  • FP_MMX_Trans โ€” (Event CCH, Umask 01H) the number of transitions from X87 to MMX. the plot twist nobody asked for ๐Ÿฆ‹
  • Fused_Ld_Uops_Ret โ€” (Event DAH, Umask 01H) the number of fused load uops retired.
  • Fused_St_Uops_Ret โ€” (Event DAH, Umask 02H) the number of fused store uops retired.
  • Fused_Uops_Ret โ€” (Event DAH, Umask 00H) the number of fused uops retired. that's it, that's the whole vibe.
  • HW_Int_Rx โ€” (Event C8H, Umask 00H) the number of hardware interrupts received. incoming ๐Ÿ“ฉ
  • ICache_Misses โ€” (Event 81H, Umask 00H) the number of instruction fetch misses in the instruction cache and streaming buffers.
  • ICache_Reads โ€” (Event 80H, Umask 00H) the number of instruction fetches from the instruction cache and streaming buffers, counting both cacheable and un-cacheable fetches ๐Ÿ‘‘
  • IFU_Mem_Stall โ€” (Event 86H, Umask 00H) the number of cycles the instruction fetch unit was stalled while waiting for data from memory. same energy as buffering, honestly ๐Ÿ’€
  • ILD_Stall โ€” (Event 87H, Umask 00H) the number of instruction length decoder stalls.
  • ITLB_Misses โ€” (Event 85H, Umask 00H) the number of instruction TLB misses.
  • Instr_Decoded โ€” (Event D0H, Umask 00H) the number of instructions decoded.
  • Instr_Ret โ€” (Event C0H, Umask 00H) (Alias "Instruction Retired") the number of instructions retired. this is an architectural performance event โญ
  • L1_Pref_Req โ€” (Event 4FH, Umask 00H) the number of L1 prefetch requests due to data cache misses.
  • L2_ADS [,core=core] โ€” (Event 21H) the number of L2 address strobes.
  • L2_IFetch [,cachestate=mesi] [,core=core] โ€” (Event 28H) the number of instruction fetches by the instruction fetch unit from L2 cache, including speculative fetches ๐Ÿ‘€
  • L2_LD [,cachestate=mesi] [,core=core] โ€” (Event 29H) the number of L2 cache reads.
  • L2_Lines_In [,core=core] [,prefetch=prefetch] โ€” (Event 24H) the number of L2 cache lines allocated.
  • L2_Lines_Out [,core=core] [,prefetch=prefetch] โ€” (Event 26H) the number of L2 cache lines evicted. bye bestie ๐Ÿ‘‹
  • L2_M_Lines_In [,core=core] โ€” (Event 25H) the number of L2 M state cache lines allocated.
  • L2_M_Lines_Out [,core=core] [,prefetch=prefetch] โ€” (Event 27H) the number of L2 M state cache lines evicted.
  • L2_No_Request_Cycles [,cachestate=mesi] [,core=core] [,prefetch=prefetch] โ€” (Event 32H) the number of cycles there was no request to access L2 cache. tumbleweed era ๐ŸŒธ
  • L2_Reject_Cycles [,cachestate=mesi] [,core=core] [,prefetch=prefetch] โ€” (Event 30H) the number of cycles the L2 cache was busy and rejecting new requests. not me, not today ๐Ÿ’…
  • L2_Rqsts [,cachestate=mesi] [,core=core] [,prefetch=prefetch] โ€” (Event 2EH) the number of L2 cache requests.
  • L2_ST [,cachestate=mesi] [,core=core] โ€” (Event 2AH) the number of L2 cache writes, including speculative writes ๐Ÿ‘‘
  • LD_Blocks โ€” (Event 03H, Umask 00H) the number of load operations delayed due to store buffer blocks.
  • LLC_Misses โ€” (Event 2EH, Umask 41H) the number of cache misses for references to the last level cache, excluding misses due to hardware prefetches. this is an architectural performance event โญ
  • LLC_Reference โ€” the number of references to the last level cache, excluding those due to hardware prefetches. this is an architectural performance event โญ (Event 2EH, Umask 4FH) โ€” yep, it really said it twice, and it is an architectural performance event ๐Ÿ˜Œ
  • MMX_Assist โ€” (Event CDH, Umask 00H) the number of EMMX instructions executed.
  • MMX_FP_Trans โ€” (Event CCH, Umask 00H) the number of transitions from MMX to X87.
  • MMX_Instr_Exec โ€” (Event B0H, Umask 00H) the number of MMX instructions executed, excluding MOVQ and MOVD stores. they said what they said ๐ŸŽ€
  • MMX_Instr_Ret โ€” (Event CEH, Umask 00H) the number of MMX instructions retired.
  • Misalign_Mem_Ref โ€” (Event 05H, Umask 00H) the number of misaligned data memory references, counting loads and stores. chaos, but make it measurable ๐Ÿ™ˆ
  • Mul โ€” (Event 12H, Umask 00H) the number of multiply operations, including speculative floating point and integer multiplies. available on PMC1 only.
  • NonHlt_Ref_Cycles โ€” (Event 3CH, Umask 01H) (Alias "Unhalted Reference Cycles") the number of non-halted bus cycles. this is an architectural performance event โญ
  • Pref_Rqsts_Dn โ€” (Event F8H, Umask 00H) the number of hardware prefetch requests issued in backward streams.
  • Pref_Rqsts_Up โ€” (Event F0H, Umask 00H) the number of hardware prefetch requests issued in forward streams.
  • Resource_Stall โ€” (Event A2H, Umask 00H) the number of cycles where there is a resource related stall.
  • SD_Drains โ€” (Event 04H, Umask 00H) the number of cycles while draining store buffers. it's giving plumbing ๐Ÿซถ
  • SIMD_FP_DP_P_Ret โ€” (Event D8H, Umask 02H) the number of SSE/SSE2 packed double precision instructions retired.
  • SIMD_FP_DP_P_Comp_Ret โ€” (Event D9H, Umask 02H) the number of SSE/SSE2 packed double precision compute instructions retired.
  • SIMD_FP_DP_S_Ret โ€” (Event D8H, Umask 03H) the number of SSE/SSE2 scalar double precision instructions retired.
  • SIMD_FP_DP_S_Comp_Ret โ€” (Event D9H, Umask 03H) the number of SSE/SSE2 scalar double precision compute instructions retired.
  • SIMD_FP_SP_P_Comp_Ret โ€” (Event D9H, Umask 00H) the number of SSE/SSE2 packed single precision compute instructions retired.
  • SIMD_FP_SP_Ret โ€” (Event D8H, Umask 00H) the number of SSE/SSE2 scalar single precision instructions retired, both packed and scalar. (yes, it says scalar and then also both packed and scalar โ€” copying the lore exactly, no cap ๐Ÿงš)
  • SIMD_FP_SP_S_Ret โ€” (Event D8H, Umask 01H) the number of SSE/SSE2 scalar single precision instructions retired.
  • SIMD_FP_SP_S_Comp_Ret โ€” (Event D9H, Umask 01H) the number of SSE/SSE2 single precision compute instructions retired.
  • SIMD_Int_128_Ret โ€” (Event D8H, Umask 04H) the number of SSE2 128-bit integer instructions retired.
  • SIMD_Int_Pari_Exec โ€” (Event B3H, Umask 20H) the number of SIMD integer packed arithmetic instructions executed.
  • SIMD_Int_Pck_Exec โ€” (Event B3H, Umask 04H) the number of SIMD integer pack operations instructions executed.
  • SIMD_Int_Plog_Exec โ€” (Event B3H, Umask 10H) the number of SIMD integer packed logical instructions executed.
  • SIMD_Int_Pmul_Exec โ€” (Event B3H, Umask 01H) the number of SIMD integer packed multiply instructions executed.
  • SIMD_Int_Psft_Exec โ€” (Event B3H, Umask 02H) the number of SIMD integer packed shift instructions executed.
  • SIMD_Int_Sat_Exec โ€” (Event B1H, Umask 00H) the number of SIMD integer saturating instructions executed.
  • SIMD_Int_Upck_Exec โ€” (Event B3H, Umask 08H) the number of SIMD integer unpack instructions executed.
  • SMC_Detected โ€” (Event C3H, Umask 00H) the number of times self-modifying code was detected. plot twist: self-inflicted ๐Ÿ˜ญ
  • SSE_NTStores_Miss โ€” (Event 4BH, Umask 03H) the number of times an SSE streaming store instruction missed all caches.
  • SSE_NTStores_Ret โ€” (Event 07H, Umask 03H) the number of SSE streaming store instructions executed.
  • SSE_PrefNta_Miss โ€” (Event 4BH, Umask 00H) the number of times PREFETCHNTA missed all caches.
  • SSE_PrefNta_Ret โ€” (Event 07H, Umask 00H) the number of PREFETCHNTA instructions retired.
  • SSE_PrefT1_Miss โ€” (Event 4BH, Umask 01H) the number of times PREFETCHT1 missed all caches.
  • SSE_PrefT1_Ret โ€” (Event 07H, Umask 01H) the number of PREFETCHT1 instructions retired.
  • SSE_PrefT2_Miss โ€” (Event 4BH, Umask 02H) the number of times PREFETCHNT2 missed all caches.
  • SSE_PrefT2_Ret โ€” (Event 07H, Umask 02H) the number of PREFETCHT2 instructions retired.
  • Seg_Reg_Loads โ€” (Event 06H, Umask 00H) the number of segment register loads.
  • Serial_Execution_Cycles โ€” (Event 3CH, Umask 02H) the number of non-halted bus cycles of this code while the other core was halted. main character energy, the other core literally took a nap ๐Ÿ’€
  • Thermal_Trip โ€” (Event 3BH, Umask C0H) the duration in a thermal trip, based on the current core clock. it's getting hot in here ๐Ÿ”ฅ
  • Unfusion โ€” (Event DBH, Umask 00H) the number of unfusion events. the breakup arc ๐Ÿ’”
  • Unhalted_Core_Cycles โ€” (Event 3CH, Umask 00H) the number of core clock cycles when the clock signal on a specific core is not halted. this is an architectural performance event โญ
  • Uops_Ret โ€” (Event C2H, Umask 00H) the number of micro-ops retired. go off, king ๐Ÿ‘‘

๐Ÿท๏ธ EVENT NAME ALIASES ๐Ÿท๏ธ

so here's the mapping between the PMC-independent aliases supported by the Performance Counters Library (libpmc, -lpmc) and the underlying hardware events they actually point at. iykyk ๐Ÿ’…

  • branches โ†’ Br_Instr_Ret
  • branch-mispredicts โ†’ Br_MisPred_Ret
  • dc-misses โ†’ (unsupported)
  • ic-misses โ†’ ICache_Misses
  • instructions โ†’ Instr_Ret
  • interrupts โ†’ HW_Int_Rx
  • unhalted-cycles โ†’ (unsupported)
fr fr: dc-misses and unhalted-cycles are (unsupported) โ€” they're listed as aliases but there's no hardware event behind them, so don't come for me when they don't work ๐Ÿ™ˆ

๐Ÿ’… PROCESSOR ERRATA ๐Ÿ’…

okay bestie, listen up โ€” these are the known problems that mess with performance measurement on these processors, and you need to know about them before you trust your counters. They're all written down in โ€œIntelยฎ CoreTM Duo Processor and Intelยฎ CoreTM Solo Processor on 65 nm Processโ€, Specification Update, Order Number 309222-017, Intel Corporation, July 2008 โ€” that's the receipts, go read it if you want the full tea ๐Ÿต

  • AE19 โ€” data prefetch performance monitoring events can only be enabled on a single core. one. uno. that's it. no cap.
  • AE25 โ€” performance monitoring counters that count external bus events may report straight-up incorrect values after processor power state transitions. so if your numbers look weird after a power state changeโ€ฆ that's why ๐Ÿ˜ญ
  • AE28 โ€” performance monitoring events for retired floating point operations (C1H) may not be accurate. the floats are lying to you, apparently ๐Ÿ’€
  • AE29 โ€” a DR3 address match on a MOVD/MOVQ/MOVNTQ memory store instruction may incorrectly increment the performance monitoring count for saturating SIMD instructions retired (Event CFH). like, it just goes and bumps the wrong counter. rude.
  • AE33 โ€” hardware prefetch performance monitoring events may be counted inaccurately. lowkey a theme here.
  • AE36 โ€” the CPU_CLK_UNHALTED performance monitoring event (Event 3CH) counts clocks when the processor is in the C1/C2 processor power states. so not exactly the vibe you asked for โœจ
  • AE39 โ€” certain performance monitoring counters related to bus, L2 cache and power management are inaccurate. not all of them! just certain ones. iconic vagueness ๐ŸŽ€
  • AE51 โ€” performance monitoring events for retired instructions (Event C0H) may not be accurate. bestie. the instruction count. ๐Ÿ˜ญ
  • AE67 โ€” performance monitoring event FP_ASSIST may not be accurate.
  • AE78 โ€” performance monitoring event for hardware prefetch requests (Event 4EH) and hardware prefetch request cache misses (Event 4FH) may not be accurate.
  • AE82 โ€” performance monitoring event FP_MMX_TRANS_TO_MMX may not count some transitions. some! which ones? mystery. ๐Ÿ•ต๏ธโ€โ™€๏ธ

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

go off, read the whole friend group: pmc(3), pmc.amd(3), pmc.atom(3), pmc.core2(3), pmc.iaf(3), pmc.soft(3), pmc.tsc(3), pmclog(3), hwpmc(4)

๐Ÿ•ฐ๏ธ HISTORY ๐Ÿ•ฐ๏ธ

the pmc library first appeared in FreeBSD 6.0. a legend was born, fr fr โญ

๐Ÿซถ AUTHORS ๐Ÿซถ

The Performance Counters Library (libpmc, -lpmc) library was written by Joseph Koshy <jkoshy@FreeBSD.org>. thank you king, we appreciate you ๐Ÿ‘‘


and that's the whole page bestie!! ๐Ÿ’– this one came from Debian, dated November 12, 2008, and it's PMC.CORE(3) โ€” go forth and count your counters responsibly, mwah ๐ŸŽ€๐Ÿ’…

๐Ÿ“ฆ where this page comes from
  • freebsd 15.1: base 15.1
  • ๐Ÿ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms