系统相关
首页 > 系统相关> > 是否可以在C代码中使用Linux Perf Profiler?

是否可以在C代码中使用Linux Perf Profiler?

作者:互联网

我想测量我的C代码某些部分的L1,L2和L3缓存命中率/未命中率.我对将Perf用于整个应用程序不感兴趣. Perf可以用作C中的库吗?

int main() {
    ...
    ...
    start_profiling()
    // The part I'm interested in
    ...
    end_profiling()
    ...
    ...
}

我试了一下Intel PCM,但是遇到了两个问题.首先,它是gave me some strange numbers.其次,它不支持L1缓存配置文件.

如果Perf无法做到,那么获取该信息的最简单方法是什么?

解决方法:

听起来您想要做的就是读取一些性能计数器,这是PAPI库最理想的选择.

Example.

full list of supported counters相当长,但听起来您对PAPI_L1_TCM,PAPI_L1_TCA以及它们的L2和L3副本最感兴趣.请注意,您还可以将访问分为读/写,并且可以区分指令和数据缓存.

标签:cpu-cache,performancecounter,perf,linux,c-4
来源: https://codeday.me/bug/20191028/1951530.html