perf的统计模式: 突破口: x86_perf_event_update
之前一直以为perf的统计模式也是通过中断出发来的,于是会在中断处理函数中做处理,但是如果perf是统计模式,那么perf的寄存器就不会是溢出的模式了,这个时候,就没有pmu的中断发生,所以很奇怪呢,在使用统计模式的时候,perf是怎么做的呢?
在统计模式下,在每一次发生调度的时候,都会去读寄存器里面的值,然后把调度的值写入到寄存器中去,也就是说,这个时候内核会维护着这么一个虚机的值,然后每一次进程被调度出去的时候,会把这个值给读出来!
perf_read函数没有发生?
感觉应该是会在task_ctx_sched_out发生
看了代码,总觉得应该是在ctx_sched_in和ctx_sched_out发生的读寄存器的时,但是没发现相关的代码,在进程切进去的时候会去设置寄存器,但是在进程出来的时候会去读寄存器的值然后在代码中保存,但是好像根本就抓住这样的函数呢?
关键函数: x86_perf_event_update
所以
loop 0xffffffff81005970 : x86_perf_event_update+0x0/0x90 [kernel]
0xffffffff81005a58 : x86_pmu_stop+0x58/0xd0 [kernel]
0xffffffff81005b13 : x86_pmu_del+0x43/0x140 [kernel]
0xffffffff8117c2c8 : event_sched_out.isra.91+0xb8/0x310 [kernel]
0xffffffff8117c568 : group_sched_out+0x48/0xc0 [kernel]
0xffffffff8117c6fc : ctx_sched_out+0x11c/0x160 [kernel]
0xffffffff8117ffde : __perf_event_task_sched_out+0x17e/0x460 [kernel]
0xffffffff8181fdf2 : __schedule+0x442/0xa10 [kernel]
0xffffffff818203f5 : schedule+0x35/0x80 [kernel]
0xffffffff810031f2 : exit_to_usermode_loop+0x72/0xd0 [kernel]
0xffffffff81003c08 : prepare_exit_to_usermode+0x18/0x20 [kernel]
0xffffffff81824fe5 : retint_user+0x8/0x10 [kernel]
perf的统计模式: 突破口: x86_perf_event_update的更多相关文章
- perf的采样模式和统计模式
perf的采样模式和统计模式 统计模式和采样模式使用寄存器的方法不相同; 在统计模式下,每次调度之前设置寄存器,调度之后清理寄存器,留个下个进程使用;PMU寄存器的使用方法; 在采样模式下,每次 pm ...
- hdu5384 AC自己主动机模板题,统计模式串在给定串中出现的个数
http://acm.hdu.edu.cn/showproblem.php?pid=5384 Problem Description Danganronpa is a video game franc ...
- 使用Redis做产品统计的两种模式
http://zihua.li/2012/07/two-patterns-of-statistics-using-redis/ 产品运行过程中及时记录收集并分析统计数据对产品的持续改进有重要的指导作用 ...
- 软工结对项目之词频统计update
队友 胡展瑞 031602215 作业页面 GitHub 具体分工 111500206 赵畅:负责WordCount的升级,添加新的命令行参数支持(自定义输入输出文件,权重词频统计,词组统计等所有新功 ...
- Oracle性能优化之Oracle里的统计信息
一.什么是统计信息 oracle数据库里的统计信息是如下的一组数据:他们存储在数据字典里,且从多个维度描述了oracle数据库数据对象的详细信息. oracle数据库里的统计信息主要分为以下6种情况: ...
- 局部二值模式(Local Binary Patterns)纹理灰度与旋转不变性
Multiresolution Gray Scale and Rotation Invariant Texture Classification with Local Binary Patterns, ...
- Redis 实战篇:巧用数据类型实现亿级数据统计
在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合,同时还要对集合中的数据进行统计排序. 常见的场景如下: 给一个 userId ,判断用户登陆状态: 两亿用户最近 7 ...
- Redis 实战篇:巧用Bitmap 实现亿级海量数据统计
在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合. 常见的场景如下: 给一个 userId ,判断用户登陆状态: 显示用户某个月的签到次数和首次签到时间: 两亿用户最近 ...
- [AC自动机]【学习笔记】
Keywords Search Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)To ...
随机推荐
- asp.net页面刷新或者回发后DIV的滚动条位置不变!(转)
源文件:http://www.cnblogs.com/nyth/archive/2011/06/10/2077868.html 当把数据放在div里面,然后给div设置Scroll显示,在页面刷新后或 ...
- OAuth(开放授权)
HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RESTful API 使 ...
- c语言实现shell
shell的编写 命令行传参数 每个C语言程序都必须有一个称为main()的函数,作为程序启动的起点.当执行程序时,命令行参数(command-line argument)(由shell逐一解析)通过 ...
- 实验楼学习linux第一章第四节linux目录结构及文件基本操作
linux目录结构及文件基本操作 常用命令 切换目录 cd 当前目录 . 上一级目录 .. (.和..开头的都是隐藏文件) 查看隐藏文件 ls -a 上一级所在目录 - 当前用户home目录 ~ 获取 ...
- 20155233刘高乐 第二周课堂实践以及MyOD
1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so? 2. 提交共 ...
- 20155320 2016-2017-2 《Java程序设计》第的四周学习总结
20155320 2016-2017-2 <Java程序设计>第的四周学习总结 教材学习内容总结 继承与多态 继承就是子承父类,避免重复定义共同行为,会使用extends关键词,表示会扩展 ...
- 20155323刘威良第一次实验 Java开发环境的熟悉(Linux + IDEA)
20155323刘威良第一次实验 Java开发环境的熟悉(Linux + IDEA) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序 ...
- PyQt5 结合 matplotlib 时,如何显示其 NavigationToolbar
本文目的:展示 PyQt5 结合 matplotlib 时,如何显示其 NavigationToolbar. 本人搜遍所有网络无果,没办法,查看PyQt5源代码,最终才搞明白...特此留记. 〇.Py ...
- CF833E Caramel Clouds
题面 天上有$n$朵云,每朵云$i$会在时间$[l_i,r_i]$出现,你有$\text C$个糖果,你可以花费$c_i$个糖果让云$i$消失,同时需要保证你最多让两朵云消失.现在有$m$个独立的询问 ...
- [NOIp2018]铺设道路 贪心
LG传送门 考场上写的\(O(nlogn)\)做法,具体思想是把深度从低到高排个序,开一个标记数组,每次加入的时候标记当前位置并判断:如果当前加入的位置两边都被标记过,则下次的贡献-1,若两边都没有被 ...