Add two more sw events that are common to many cpus. Alignment faults: When a load or store is not aligned properly.
Emulation faults: When an instruction is emulated in software. Both cause a very significant slowdown (100x or worse), so identifying and fixing them is very important. Signed-off-by: Anton Blanchard <an...@samba.org> --- Index: linux.trees.git/include/linux/perf_event.h =================================================================== --- linux.trees.git.orig/include/linux/perf_event.h 2009-10-16 11:17:17.000000000 +1100 +++ linux.trees.git/include/linux/perf_event.h 2009-10-16 11:17:29.000000000 +1100 @@ -102,6 +102,8 @@ enum perf_sw_ids { PERF_COUNT_SW_CPU_MIGRATIONS = 4, PERF_COUNT_SW_PAGE_FAULTS_MIN = 5, PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6, + PERF_COUNT_SW_ALIGNMENT_FAULTS = 7, + PERF_COUNT_SW_EMULATION_FAULTS = 8, PERF_COUNT_SW_MAX, /* non-ABI */ }; Index: linux.trees.git/include/linux/perf_counter.h =================================================================== --- linux.trees.git.orig/include/linux/perf_counter.h 2009-10-16 11:16:10.000000000 +1100 +++ linux.trees.git/include/linux/perf_counter.h 2009-10-16 11:17:29.000000000 +1100 @@ -106,6 +106,8 @@ enum perf_sw_ids { PERF_COUNT_SW_CPU_MIGRATIONS = 4, PERF_COUNT_SW_PAGE_FAULTS_MIN = 5, PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6, + PERF_COUNT_SW_ALIGNMENT_FAULTS = 7, + PERF_COUNT_SW_EMULATION_FAULTS = 8, PERF_COUNT_SW_MAX, /* non-ABI */ }; Index: linux.trees.git/kernel/perf_event.c =================================================================== --- linux.trees.git.orig/kernel/perf_event.c 2009-10-16 11:17:17.000000000 +1100 +++ linux.trees.git/kernel/perf_event.c 2009-10-16 11:17:29.000000000 +1100 @@ -4255,6 +4255,8 @@ static const struct pmu *sw_perf_event_i case PERF_COUNT_SW_PAGE_FAULTS_MAJ: case PERF_COUNT_SW_CONTEXT_SWITCHES: case PERF_COUNT_SW_CPU_MIGRATIONS: + case PERF_COUNT_SW_ALIGNMENT_FAULTS: + case PERF_COUNT_SW_EMULATION_FAULTS: if (!event->parent) { atomic_inc(&perf_swevent_enabled[event_id]); event->destroy = sw_perf_event_destroy; Index: linux.trees.git/tools/perf/design.txt =================================================================== --- linux.trees.git.orig/tools/perf/design.txt 2009-10-16 11:16:10.000000000 +1100 +++ linux.trees.git/tools/perf/design.txt 2009-10-16 11:17:29.000000000 +1100 @@ -137,6 +137,8 @@ enum sw_event_ids { PERF_COUNT_SW_CPU_MIGRATIONS = 4, PERF_COUNT_SW_PAGE_FAULTS_MIN = 5, PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6, + PERF_COUNT_SW_ALIGNMENT_FAULTS = 7, + PERF_COUNT_SW_EMULATION_FAULTS = 8, }; Counters of the type PERF_TYPE_TRACEPOINT are available when the ftrace event Index: linux.trees.git/tools/perf/util/parse-events.c =================================================================== --- linux.trees.git.orig/tools/perf/util/parse-events.c 2009-10-16 11:16:10.000000000 +1100 +++ linux.trees.git/tools/perf/util/parse-events.c 2009-10-16 11:17:29.000000000 +1100 @@ -47,6 +47,8 @@ static struct event_symbol event_symbols { CSW(PAGE_FAULTS_MAJ), "major-faults", "" }, { CSW(CONTEXT_SWITCHES), "context-switches", "cs" }, { CSW(CPU_MIGRATIONS), "cpu-migrations", "migrations" }, + { CSW(ALIGNMENT_FAULTS), "alignment-faults", "" }, + { CSW(EMULATION_FAULTS), "emulation-faults", "" }, }; #define __PERF_EVENT_FIELD(config, name) \ @@ -75,6 +77,8 @@ static const char *sw_event_names[] = { "CPU-migrations", "minor-faults", "major-faults", + "alignment-faults", + "emulation-faults", }; #define MAX_ALIASES 8 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev