perf工具crash的问题

perf抓取时系统crash的情况。找前同事了解到perf工具导致系统crash的一种情况,

perf工具默认是使用cycles,这个硬件事件是使用NMI,可能会导致内核错误。

之前文档上的perf命令更新下,指定使用软件事件cpu-clock(注意:不知道perf命令还有没有别的坑,请注意生产上谨慎使用)

perf record -p `pidof mysqld` -e cpu-clock -g -o /tmp/perf.data sleep 10

 

这两个事件的区别:

cpu-clock可以用来表示程序执行经过的真实时间,而无论CPU处于什么状态(Pn(n非0)或者是C状态);

而CPU cycles则用来表示执行程序指令花费的时钟周期数,如果CPU处于Pn(n非0)或者是C状态,则cycles的产生速度会减慢。

也即,如果你想查看哪些代码消耗的真实时间多,则可以使用cpu-clock事件;而如果你想查看哪些代码消耗的时钟周期多,则可以使用CPU cycles事件。

 

参考资料:

http://github.tiankonguse.com/blog/2016/03/29/perf-record.html

 

posted @ 2018-07-02 13:30  wangdong  阅读(454)  评论(0编辑  收藏  举报