Using perf to monitor raw event counters

前端 未结 3 1010
轮回少年
轮回少年 2021-02-04 18:08

I am trying to measure certain hardware events on a (Intel Xeon) machine with multiple (physical) processors. Specifically, I wish to know how many requests are issued for readi

3条回答
  •  别那么骄傲
    2021-02-04 18:47

    Ok, so I guess I figured it out.

    For the the Intel machine I use, the format is as follows: where both are hexadecimal values. The leading zeros of the umask can be dropped, but not for the event selector.

    So for the event 0xB0 with the mask 0x01 I can call:

    perf record -e r1B0 ./mytestapp someargs
    

    I could not manage to find the exact parsing of it in the perf kernel code (any kernel hacker here?), but I found these sources:

    • A description of the use of perf with raw events in the c't magazine 13/03 (subscription required), which describes some raw events with their description from the Intel Architecture Software Developers Manuel (Vol 3b)
    • A patch on the kernel mailing list, discussing the proper way to document it. It specified that the pattern above was "... was x86 specific and imcomplete at that"
    • (Updated) The man page of newer versions shows an example on Intel machines: man perf-list

    Update: As pointed out in the comments (thank you!), the libpfm translator can be used to obtain the proper event descriptor. The website linked in the comments (Bojan Nikolic: How to monitor the full range of CPU performance events), discovered by user 'osgx' explains it in further detail.

提交回复
热议问题