perf事件是可以按照线程按照进程统计的呢,但是/proc/接口就不提供这样的功能

hon@station6:/proc/6288$ sudo perf stat -e sched:sched_switch -p 6288
[sudo] hon 的密码:
^C
Performance counter stats for process id '6288': 473 sched:sched_switch 1.267507195 seconds time elapsed hon@station6:/proc/6288$ sudo perf stat -e sched:sched_switch -t 6291
^C
Performance counter stats for thread id '6291': 157 sched:sched_switch 1.497770188 seconds time elapsed

perf可以提供线程和进程的统计功能的,perf统计的原理是啥子呢

在perf_event_open处跟踪pid函数,发现结果是:

hon@station6:~/codebox/pthread$ sudo stap perf_event_open.stp
Begin
perf: pid:6291 perf: pid:6288
perf: pid:6289
perf: pid:6290
perf: pid:6291
perf: pid:6292

这就明白是咋回事了,一个进程的线程是如何获取的,然后进程的pid

最重要的结构体是perf_event_context和perf_event,

perf: pid:12500 group_fd:4294967295
perf perf_event_alloc
perf: find_get_context.isra.82 ffff8800a770ba00
perf: pid:12932 group_fd:4294967295
perf perf_event_alloc
perf: find_get_context.isra.82 0
perf: alloc_perf_context perf: pid:12931 group_fd:4294967295
perf perf_event_alloc
perf: find_get_context.isra.82 0
perf: alloc_perf_context
perf: pid:12932 group_fd:4294967295
perf perf_event_alloc
perf: find_get_context.isra.82 ffff88013677ee00
perf: pid:12933 group_fd:4294967295
perf perf_event_alloc
perf: find_get_context.isra.82 0
perf: alloc_perf_context
perf: pid:12934 group_fd:4294967295
perf perf_event_alloc
perf: find_get_context.isra.82 0
perf: alloc_perf_context
perf: pid:12935 group_fd:4294967295
perf perf_event_alloc
perf: find_get_context.isra.82 0
perf: alloc_perf_context

都是在第一次新建的时候创建的

最新文章

  1. Webstorm常用的快捷键
  2. C语言中,定义的含义?声明的含义?它们之间的区别是什么?
  3. Row_Number()显示行号
  4. 【C语言】C语言常量和变量
  5. NDK 通过java调用so文件
  6. js 复制网页内容,兼容各浏览器
  7. (转)兼容主流浏览器的CSS透明代码
  8. 51nod建设国家
  9. 玩转12款Linux开源机器人
  10. Android 带password输入界面的Dialog实现机制
  11. ThinkPhp知识大全(非常详细)
  12. Android的路接下来该怎么走?
  13. ECMA262学习笔记(一)
  14. ASP.NET WebAPI 双向token实现对接小程序登录逻辑
  15. php把数据转换为json格式
  16. Windows最全快捷键
  17. 51nod 1463 找朋友(线段树+离线处理)
  18. jmeter测试20个QPS下的响应时间-设置QPS限制
  19. json--pyton中obj与json的互转,js中obj与json的互转
  20. 省钱小贴士(ECS):教你如何每年省出8w+ 块

热门文章

  1. Vue 从零开始--搭建环境
  2. MySQL 重要语法
  3. Java设计模式(5)——创建型模式之建造者模式(Builder)
  4. Android开发——Context类的各种细节问题
  5. 天津市人民优步Uber司机奖励政策(9月14日~9月20日)
  6. SpringBoot-05:SpringBoot初运行以及tomcat端口号的修改
  7. quartz与Spring整合
  8. MyBatis-自定义结果映射规则
  9. javasript 字符串 数组操作
  10. pygame安装【在pycharm的IDE project下】