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 ...
随机推荐
- svg vs canvas
http://fabricjs.com/ https://github.com/ecomfe/zrender http://raphaeljs.com/
- 2017-2018-1 20155320加分项目——pwd的实现
2017-2018-1 20155320加分项目--pwd的实现 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd ...
- [arc076F]Exhausted?
Description 传送门 Solution 额外的椅子可以放置在任意实数位置,所以该问题其实就问最多能够有多少人坐下.由于每个人的需求有<=l和>=r两个限制,并不是很好下手,我们先 ...
- 【BZOJ4016】[FJOI2014]最短路径树问题
[BZOJ4016][FJOI2014]最短路径树问题 题面 bzoj 洛谷 题解 虽然调了蛮久,但是思路还是蛮简单的2333 把最短路径树构出来,然后点分治就好啦 ps:如果树构萎了,这组数据可以卡 ...
- ES6 localStorage 类库
无意中看到的,记录下. 用到了es6语法.支持在js中写构造函数 class CovLocalDB { constructor (name) { this.LS = null this.name = ...
- springAOP之代理模式
springAOP指的是在spring中的AOP,什么是AOP,相对于java中的面向对象(oop),在面向对象中一些公共的行为,像日志记录,权限验证等如果都使用面向对象来做,会在每个业务方法中都写上 ...
- python全栈开发-面向对象-进阶
python_day_18 1,面向对象的三大特性是什么?继承,多态,封装2,什么是面向对象的新式类?什么是经典类?凡是继承object类都是新式类.凡是不继承object类都是经典类.3,面向对象为 ...
- 第四篇 Postman之Pre-request Script(前置处理器:JS之 YYYY-MM-DD HH:MM:SS)
本篇来讲讲Pre-request Script 前置处理器,定义在发送request之前需要运行的一些脚本,应用场景主要是设置全局变量和环境变量. 本例子也是项目中遇到的,需要修改与客户的预约时间,但 ...
- 《Node.js核心技术教程》读书笔记---思维导图版
书薄,挺经看!
- C#匿名参数(转载too)
匿名方法是在初始化委托时内联声明的方法. 例如下面这两个例子: 不使用匿名方法的委托: using System; using System.Collections.Generic; using Sy ...