第一篇——PAPI

      一直想做一个技术blog,今天才注册了个号,准备写第一篇。希望能帮助朋友们解决一些问题。第一篇就来介绍一下PAPI这个开源软件吧

       PAPI是UTK大学研发出来的一个对程序微观行为进行观测,统计的工具。在对程序进行性能分析时非常方便。用户可以使用其提供的high/low api对程序某一段的使用时钟周期数,执行指令数,L1/L2 cache miss/access数,TLB miss数等等都统计出来,使用户能够直观的了解到程序的局部性如何。

       PAPI现在推出了3.6.0版本,比较稳定,而且能够比较准确的统计出程序的cache miss,TLB miss等一些和性能相关的数据,并且考虑了多核系统上进程在核间切换的统计。一些比较经常问得问题是:需不需要对进程和CPU进行绑定?共享的L2 cache会不会导致运行在其上的核的程序统计出的L2 cache miss不准确?答案是不需要进行内核绑定,当程序sleep被挂起,或着切换到别的核上的时候,计数器会暂定计数或者计数器会跟着迁移。

        安装问题:PAPI的安装比较繁琐,主要是因为需要对内核打补丁,重新编译。当然对经常编译内核的人来说这就是小菜一碟了。第一步打补丁,这一步是否进行却决于不同的型号的CPU,一般的AMD的CPU和INTEL的奔腾系列,至强系列都需要打补丁。补丁则使用perfctr-2.6.x。里面有说明,不过需要注意的是,当make menuconfig时需要将打补丁产生的那个编译选项钩上,编译为内核模块。补丁的编译选项是在processor type and figure中的Performance-monitoring counters support,这个在说明文档中没有写清楚,要注意。第二步就是要对内核进行编译,安装,并使用此内核重起机器(在/etc/grub中修改),并将perfctr内核模块导入,使用modprobe。第三步是建立符设备用于和计数器的通信,这个在perfctr-2.6.x的install文件中有叙述。第四步则是编译PAPI,当内核编译没有问题时,编译PAPI也不会出错。需要注意的是这个顺序不能随便更改,否则将会抱错。

        当系统重起时,需要重新加载perfctr模块,之后要删除原来的设备文件并重新建立。否则程序不能正常运行。

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值