Linux support for various PMUs

This lists Linux support for various chips and various kernel interfaces.

The "perf_event" column tells which Linux kernel first supported the chip using the perf_event subsystem. Note this is complicated by distributions like RHEL which backports newe CPU support back to older kernels.

The "perfctr" column says whether the current "perfctr" patch supports this chip.

The "libpfm3" and "libpfm4" columns say whether those respective libraries support the events for the chip.

The "PAPI" column says whether the current version of PAPI supports things (in general PAPI should support any chip that has both libpfm4 and perf_event support. Adding support tends to be just adding the proper preset events in the papi_events.csv file).

x86

x86 AMD

NameFamilyModel perf_event perfctr libpfm32 libpfm4 PAPI
Athlon K7 6 * 2.6.31 yes yes yes yes
Opteron K8 15 * 2.6.31 yes yes yes yes
Family 10h Rev B (Barcelona)16 1,2,3 2.6.31 yes yesyes yes
Family 10h Rev C (Shanghai) 16 4,5,6 2.6.31 yes yesyes yes
Family 10h Rev D (Istanbul) 16 8 2.6.31 yes yesyes yes
Family 10h Rev D (Magny Cours) 16 9,10 2.6.31 yes yesyes yes
Family 10h Rev E (???) 16 ?? 2.6.31 yes yesyes yes
Family 11h Turion 17 * 2.6.31 yes no yesyes
Family 12h Llano 18 * 2.6.31 no no yesyes
Family 14h Bobcat 20 * 2.6.31? no noyesyes
Family 15h Bulldozer, Piledriver, Steamroller 21 * 2.6.391 no yes yes yes
Family 16h Jaguar 22 * ?1 no no no no
Notes:
  1. Northbridge (AMD's equivalent of uncore) not supported until 3.9
  2. As shipped with PAPI
A more complete list of northbridge support can be found here.

x86 Intel

NameFamilyModel perf_event perfctr libpfm36 libpfm4 PAPI
Pentium 5 1,2,4 no yes no no no
Pentium Pro 6 1 2.6.31 yes yesyesyes
Pentium II 6 3,5,6 2.6.31 yes yesyesyes
Pentium III 6 7,8,10,11 2.6.31 yes yesyesyes
Pentium M 6 9,13 2.6.31 yes yesyesyes
Pentium 4 150,1,2 2.6.351 yes yesyesyes
Pentium D 153,4,6 2.6.351 yes yesyesyes
Core Duo 6 14 2.6.34 yes yesyesyes
Core2 6 15,22,23,292.6.31 yes yesyesyes
Atom 6 28,38,39,53 2.6.3110 yes10 yes10 yes yes
Atom Cedarview6 54 3.6 no noyes yes
Atom Silvermont655,77 3.12 no noyes yes
Nehalem 6 26,30,312.6.317,8 yes8yes yes yes
Nehalem EX 6 46 2.6.342,3 yes yes yes yes
Westmere 6 37,44 2.6.342,3 yes yes yes yes
Westmere EX (E7) 6 47 2.6.392,3 no no yesyes
Sandy Bridge 6 42 2.6.392,3 no no yes yes
Sandy Bridge EP6 45 3.12,3 no no yesyes
Ivy Bridge 6 58 3.511 no noyes yes
Ivy Bridge EP 6 62 3.811 no noyes yes
Haswell 6 60,63,69,70,71 3.10 no noyes yes
Knights Corner 11 ?? 3.7 no noyes yes


Notes: A more complete list of uncore/offcore support can be found here.

x86 VIA

NameFamilyModel perf_event perfctr libpfm36 libpfm4 PAPI
C3 6 ? no yes no no no

x86 Cyrix

NameFamilyModel perf_event perfctr libpfm36 libpfm4 PAPI
6x86/MII/MIII 5 ? no yes no no no

ARM

NameFamily perf_event perfctr libpfm3 libpfm4 PAPI
XScale 1 ARMv5 2.6.38yes no no no
XScale 2 ARMv5 2.6.38yes no no no
??? ARMv6 2.6.34 no no no no
1176 ARMv6 2.6.34 no no yes no
Cortex A5 ARMv7 3.1 no no no no
Cortex A8 ARMv7 2.6.341 no no yes yes
Cortex A9 ARMv7 2.6.341 no no yes yes
Cortex A15 ARMv7 3.1 no no yes yes


  1. Note that Cortex A8 and Cortex A9 processors reportedly have a bug where PMU interrupts may be lost, making perf_event usage problematic.

Alpha

Name perf_event perfctr libpfm3 libpfm4 PAPI
EV5 (21164) no no no no no1
EV67 (21264) 2.6.36 no no no no1


Notes:
  1. Support removed from PAPI

AVR32


Blackfin

Name perf_event perfctr libpfm3 libpfm4 PAPI
Blackfin 3.0 no no no no



itanium

NameFamilyModel perf_event perfctr libpfm3 libpfm4 PAPI
itanium itanium * no no yesyes no
itanium2 itanium 2 * no no yesyesyes
monticeto itanium 2 ? no no yesyesyes



MIPS

Name perf_event perfctr libpfm31 libpfm4 PAPI
R10000 2.6.37 noyesyes no
R12000 no noyesyes no
RM7000 ? noyesyes no
RM9000 ? noyesyes no
SB1 2.6.37 noyesyes no
VR5432 ? noyesyes no
VR5500 ? noyesyes no
20Kc ? noyesyes no2
24K 2.6.37 noyesyes no
25Kf ? noyesyes no2
34K 2.6.37 noyesyes no2
5Kc ? noyesyes no2
74K 2.6.373 noyesyesyes
1004K 2.6.37 no no no no
Octeon 3.0? no no no no
SciCortex ? noyesyes no2


Notes:
  1. As shipped with PAPI
  2. Support removed in PAPI 4.0
  3. You really should be running a newer kernel, and multiplexing is still broken as of kernel 3.1. There are limitations with the MIPS implementation having to do with sched_clock() not being implemented.

POWER

Name perf_event perfctr libpfm32 libpfm4 PAPI
PPC604 no yes no no no1
PPC750 (G3) no yes no no no
PPC7400 (G4)2.6.31 yes no no no
PPC970 (G5)2.6.31 no yesyesyes
e500 2.6.34 no no no no
Cell ??? no yesyesyes
POWER3 no no no no no1
POWER4 2.6.31 yes 3 yesyes no1
POWER5 2.6.31 yes3 yesyesyes
POWER5+ 2.6.31 no yesyesyes
POWER6 2.6.31 no yesyesyes
POWER7 2.6.31 no yesyesyes
POWER8 ??? no nonono


Notes:
  1. Support existed but is now removed from PAPI
  2. As shipped with PAPI
  3. With the perfctr 2.7.x branch

S390

Name perf_event perfctr libpfm3 libpfm4 PAPI
S390x 3.4 no noyes no



SH

Name perf_event perfctr libpfm3 libpfm4 PAPI
SH7750 2.6.33 no no no no
SH4-A 2.6.33 no no no no



SPARC

Name perf_event perfctr libpfm3 libpfm4 PAPI
Ultra I,II no noyesyesyes
Ultra III 2.6.32 noyesyesyes
Ultra 4+ 2.6.32 noyesyesyes
Niagara 2.6.32 noyesyes yes
Niagara 2 2.6.32 noyesyes no



Last updated 3 January 2013
Back to unofficial perf_events page