I've been going through the documentation for the PEBS facility as described in the Intel software-developer manual vol 3b section 18.104.22.168
It is mentioned that, in order to use PEBS, software needs to initialize the DS_BUFFER_MANAGEMENT_AREA data structure in memory (in non-paged pool) and then store the beginning linear address of this data structure in the IA32_DS_AREA register.
Is there a sample piece of code that illustrates how this data structure initialization and setting of IA32_DS_AREA register needs to be done?
I'm a bit confused about using PEBS and haven't been able to find any useful examples of how PEBS is utilized either.
It would be quite helpful if I could refer to a piece of sample code that configures and utilizes PEBS?
I'm working on an IvyBridge machine.
Thanks in advance,
Thanks a lot Thomas!
I went through the pebs-grabber module in the pmu-tools repo and it cleared a lot of doubts.
However, I ran into an issue while trying to use the module.
Following are the commands I used to build the code and use it (I followed these commands from the comments mentioned in pebs-grabber.c):
1. make [KDIR=/lib/modules/3.13.0-46-generic/build]
2. insmod pebs-grabber.ko
3. perf record -e cycles:p,pebs_v1,pebs\_v2 ../../a.out
The third command hits an error:
invalid or unsupported event: 'cycles:p,pebs_v1,pebs_v2'
Run 'perf list' for a list of valid events
Have I missed something?
I am also trying to use this toolset.
I can get the simple-pebs driver compiled and installed.
when I try to follow the above instructions to get the pebs-grabber module installed, it fails.
pebs-grabber: PEBS version 2
pebs-grabber: Cannot register kprobe: -2
this is with kernel linux-4.2.0-19