oprofile源码解读.docxVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
oprofile源码解读

oprofile代码分析-1??Oprofile由应用层和内核模块构成其中应用层有如下程序Opcontrol, oprofiled, opreport..内核由 kernel/arch/mips/oprofile和kernel/driver/oprofile构成。?Oprofile的原理?我们先来看oprofile内核模块。Kernel/driver/oprofile它是oprofile的框架,与体系结构无关,也是模块的起点buffer_sync:这个文件主要是把存储在每个CPU buffer中的采样,做一些处理后,存储在event buffer中,这个文件是模块的核心,也是分析的重点。cpu_buffer这个文件提供接口给CPU采样,在mips采到一次采样后,它必须把采样信息存储起来,于是调用这个文件的函数,就完成了采样的最原始信息的存储。event_buffer这个文件提供读写接口给用户层的demon程序oprofiled。在cpu_buffer的采样信息被buffer_sync转换后,存储在event_buffer中,然后等待着oprofiled读取。OprofOprofile内核模块的起始文件,它做的事情就是初始化。初始化mips的采样操作,初始化各个buffer等。oprofile_filesoprofilefs以上两个提供了各种文件供opcontrol进行操作,以便达到对采样进行配置。?oprofile_stats一些统计信息timer_int如果体系结构没有提供performance counter,那我们还是可以profile,这个时候我们借助于时钟中断,但它并没有performance counter那么精确了。?前者只是框架,但具体如何profile,它当然与体系结构有关,因为它需要用到cpu的performance count。在kernel/arch/mips/oprofile中Common.c这个文件提供了与kernel/driver/oprofile相联系的接口。op_model_mipsxx.c这个文件完成了具体的采样,它与具体体系结构相关,MIPS CPU也有很多类型,例如24K, 74K都使用这个文件。?1???????? 初始化代码很简单了这里会初始化几个文件接口,位于/dev/oprofile1???????? enable开始profile,它会调用体系层的start函数,然后开始采样2???????? dump强制执行wq_sync_buffer函数,使oprofiled醒来读数据。一般来说,event_buffer的数据量要达到buffer_watershed,才会唤醒oprofiled。3???????? buffer只读的,oprofiled正是从这个文件读event_buffer数据。4???????? buffer_sizeevent_buffer的大小5???????? buffer_watershedevent_buffer的门限值,大于这个值将唤醒oprofiled。6???????? cpu_buffer_sizecpu_buffer的大小7???????? cpu_type8???????? backtrace_depth没有用到,对于mips来说9???????? pointer_size只读的,对于32位系统来说,等于410???? 0,1此外,还会存在0,1,2,3等文件夹,这是用来配置performance counter,有多少个counter就有多少个文件夹.它的创建与体系结构有关。11???? enabled该counter是否使能12???? event该counter使用哪种事件13???? count该counter触发中断的门限14???? kernel是否采样内核15???? user是否采样用户层16???? exl是否采样EXL置位17???? unit_mask对于MIPS来说,没用用处。以上这些文件都由opcontrol来进行配置。?2 如何进行采样2.1 设置采样performance counter看MD00090-2B-MIPS32PRA-AFP-03.05 P180看MD00343-2B-24K-SUM-03.11 P196看MD00355-2B-24KPRG-PRG-04.63 P92?第一个文档是MIPS32的描述,第二,三个文档是对24k的描述。第三个文档包括对event的详细描述。?强调如下:1时钟中断和performance中断是同一个中断线,对于MIPS R2以后,可以通过CAUSE[PCI]来进行判断2 Control寄存器中的U,K等并不是对所有事件都有效的,比如说cycle, U,K并不生效。3 每个co

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档