• 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

  • 相关阅读:
    无题
    静心
    随笔
    skynet1.0阅读笔记2_skynet的消息投递skynet.call
    skynet1.0阅读笔记_skynet的启动
    Mysql: Connect/C++ 使用过程中发现返回 std::string 造成的内存泄露
    MySql C++调用库Connector/c++编译 和 接口封装【三】Connector/c++ 使用总结及封装
    MySql: ”Commands out of sync“Error (Connect/C++)
    Connector/c++ 查询Mysql,出现 can't fetch because not on result set 错误
    mysql 修改密码
  • 原文地址:https://www.cnblogs.com/honpey/p/8960850.html
Copyright © 2020-2023  润新知