美文网首页
CPU占用分析工具之perf(二)

CPU占用分析工具之perf(二)

作者: 夜境 | 来源:发表于2017-07-28 11:06 被阅读693次

    本文章转载于搜狗测试

    在稳定性测试中发现问题后,用perf分析cpu占用的案例:

    测知乎summary遇到一个问题,summary改清空缓存时间改短为15分钟(12小时->15分钟),发现一个情况:缓存清空变为频繁后,打summary压力超过5个小时左右,summary的cpu升高从120%左右升高到300%左右,响应时间随之翻倍。这个情况由于第一次打压力时硬盘满,怀疑是硬盘将打满出现的问题,清空硬盘留出较大空间之后可以复现,排除了硬盘问题,但仍原因不明。

    现象:发压力一段时间之后cpu上升到300%,排除了词表问题,数据问题,机器其他进程的问题,IO问题。

    对照组不进行频繁的缓存清空,问题不复现。

    排查多个变量后,发现问题仍然存在,基本打4、5个小时就可以复现,遂希望直接分析cpu占用的差异所在,建议用perf进行cpu占用分析。perf可针对某个进程进行

    cpu占用分析,大致步骤是:

    (1)启动测试进程并压力运行

    (2)在稳定状态下(怀疑有问题)执行perf record -p pid

    (3)停止perf,输出报告,ctrl+c中止即可,默认perf.data文件

    (4)手动备份一下,执行perf解析报告perf report -i perf.data或者其他的报告文件

    我们把有/无问题的summary进行了对比,发现有问题的进程,第三方tcmalloc占用cpu明显增多。考虑到centos7机器上tcmalloc会导致lquery出core,我们决定先去掉summary的tcmalloc,打压力观察一下问题的原因。通过这个工具辅助,增强了我们对问题分析的能力,在这个场景下挺实用的。

    这个工具在我们常用的RHEL6下也可以正常运作,我挑了个lquery:

    从图上我们可以看到,通常情况下query的速度已经很快了,但是大部分时间仍然消耗在rank代码上

    附注:

    pref stat的项目解说,引用自IBM相关公开文档:

    https://www.ibm.com/developerworks/c...ux/l-cn-perf1/

    Task-clock-msecs:CPU利用率,该值高,说明程序的多数时间花费在CPU计算上而非IO。

    Context-switches:进程切换次数,记录了程序运行过程中发生了多少次进程切换,频繁的进程切换是应该避免的。

    Cache-misses:程序运行过程中总体的cache利用情况,如果该值过高,说明程序的cache利用不好

    CPU-migrations:表示进程t1运行过程中发生了多少次CPU迁移,即被调度器从一个CPU转移到另外一个CPU上运行。

    Cycles:处理器时钟,一条机器指令可能需要多个cycles,

    Instructions:机器指令数目。

    IPC:是Instructions/Cycles的比值,该值越大越好,说明程序充分利用了处理器的特性。

    Cache-references: cache命中的次数

    Cache-misses: cache失效的次数。

    相关文章

      网友评论

          本文标题:CPU占用分析工具之perf(二)

          本文链接:https://www.haomeiwen.com/subject/uzvdkxtx.html