zoukankan      html  css  js  c++  java
  • perf原理再看

    vim ./arch/x86/kernel/hw_breakpoint.c

    perf如何控制采样的频率

    perf采样不同的事件,得到的不是一样

    cycles:

    向PMU中增加不同的函数,增加不同

    使用perf默认的事件,抓不到我的用户态进程,

    cpu-cycles会抓到这个事件

    相同的事件,不同的采样频率采样到的内容也不是一样的。

    sudo perf top -c 99 -C 1 能够抓到我的loop进程

    sudo perf top -C 1      抓不到我loop进程的是

    终于让我找到了pmu的处理函数:intel_pmu_handle_irq

    我这里设置成了 -c 99,发现每隔4ms就会触发一个intel_pmu_handle_irq的中断

    设置成-c 200的时候,发现每隔4ms会出发intel_pmu中断,但是很奇怪的是,在这个4ms之内,会yo两次设置

    设置成-c 300,还是每4ms会出发一次intel——pum-handle-irq

    设置成 -c 400/500,都是每4ms会出发一次intel_pmu_handle_irq的中断,感觉这是

    如果不设置的话,精度是每2us来一次中断,但是设置成-c 10,就还是4ms来进行一次了,但是

    我在CPU1上跑了一个loop进程,应该说是能占满CPU的,但是这个CPU,按perf抓的话也应该是全量抓这个loop进程的CPU才对的,但是现在现在抓到了大量的native_sched_lock/ nmi_handler/ do_nmi /nmi / sched_lockzhe,记得之前是有大量抓到我loop进程中的函数的呢。。。。

    native_write_msr_safe

    把事件设置成cycles就能抓到了,默认的事件是cycles:pp

  • 相关阅读:
    一道关于js声明变量,var和let的面试题
    自执行匿名函数: (function() { /* code */ })();
    2017-09-26 开通博客第一天。 希望以后能够坚持更新,记录自己的成长,努力汲取各位朋友的知识见解。
    mybatis中根据日期模糊查询
    <![CDATA[文本内容]]>
    mybatis中sql标签和include标签
    Redis 安装
    Redis 简介
    从尾到头打印链表
    替换空格
  • 原文地址:https://www.cnblogs.com/honpey/p/8960850.html
Copyright © 2011-2022 走看看