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

  • 相关阅读:
    用charles工具 mock数据(原创)
    css img图片和背景图片按容器大小自适应大小(居中裁切)
    js 实现图片上传
    Java基础之接口
    Java基础之字符串
    Java基础之常用API
    Java基础之面向对象
    Java基础之方法与流程控制
    Java基础之常量、变量、数据类型、运算符
    Java基础之JVM、JRE、JDK
  • 原文地址:https://www.cnblogs.com/honpey/p/8960850.html
Copyright © 2011-2022 走看看