menu

hjk41的日志

Avatar

pfmon在x86下安装成功,呵呵

pfmon跟VTune之类的东西一样,是做性能分析的工具。它利用CPU的performance counter对采集程序的性能特征,从而有利于更好的理解程序的运行,帮助我们有针对性的对程序进行优化。

pfmon的底层实现依靠libpfmon和perfmon。

perfmon是最底层的API,现在很多内核发行版本都内嵌了perfmon,比如Itanium下的Redhat AS4。但是因为发行版本相对滞后,所以他们带的perfmon版本一般都比较低,对新架构的支持不好,比如Core 2,Itanium 2。所以要在这样的机器上装perfmon就得自己打kernel patch。我用的是2.6.21,及相应的perfmon patch。2.6.21还是比较好装的,打完patch直接"make menuconfig",什么都不用改就能"make"。不过perfmon在"make menuconfig"的时候是默认关闭的,所以还得自己打开。它的选项在 "Processor Type and ... -> Performance Monitoring..."里。注意得把perfmon编到内核里,要不然用pfmon会出 "function not implemented"之类的错误。如果忘了把perfmon编进去,装libpfmon会出 "kernel does not support ..." 的错误。

然后装libpfmon和pfmon。libpfmon是对perfmon进行封装以后的函数库,而pfmon是利用libpfmon和perfmon进行性能分析的一个命令行工具。装这两个东西很容易,就是 "make; make install"。不过装完libpfmon以后要设置 LD_LIBRARY_PATH,把生成的动态库加到路径里(库文件的默认路径是 /usr/local/lib)。

总之,感觉装pfmon总体上比PAPI要简单的多了。PAPI的团队维护的不好,到现在还只支持2.6.16内核,而且安装的时候问题也多一些。而pfmon除了perfmon麻烦一些之外,其它两个东西都很好装。

不过还是要说,这种东西出了错实在很难办,用的人太少了,google不到有用的信息。昨天就因为 "function not implemented"搞了很久

评论已关闭