码迷,mamicode.com
首页 > 其他好文 > 详细

高级性能调试手段(oprofile+gprofile)+内核追踪手段:LTT

时间:2016-06-08 21:37:37      阅读:1309      评论:0      收藏:0      [点我收藏+]

标签:

yum install oprofile

1、Disabling daemons (关闭 daemons)‏
2、Shutting down the GUI (关闭GUI)‏
3、Changing kernel parameters (改变内核参数)
4、Kernel parameters (内核参数)
5、Tuning the processor subsystem(处理器子系统调优)
6、Tuning the memory subsystem (内存子系统调优)
7、Tuning the file system(文件系统子系统调优)
8、Tuning the network subsystem(网络子系统调优)

 

其支持两种采样(sampling)方式:基于事件的采样(event   based)和基于时间的采样(time   based)。
基于事件的采样是oprofile只记录特定事件(比如L2   cache   miss)的发生次数,当达到用户设定的定值时oprofile   就记录一下(采一个样)。
这种方式需要CPU 内部有性能计数器(performace counter)。 基于时间的采样是oprofile 借助OS时钟中断的机制,每个时钟中断 oprofile 都会记录一次(采一次样)。
引入的目的在于,提供对没有性能计数器 CPU 的支持。其精度相对于基于事件的采样要低。因为要借助OS时钟中断的支持,对禁用中断的代码oprofile不能对其进行分析。 oprofile在Linux上分两部分,一个是内核模块(oprofile.ko),一个为用户空间的守护进程(oprofiled)。 前者负责访问性能计数器或者注册基于时间采样的函数(使用register_timer_hook注册之,使时钟中断处理程序最后执行profile_tick
时可以访问之),并采样置于内核的缓冲区内。后者在后台运行,负责从内核空间收集数据,写入文件。 步骤 a. 初始化 opcontrol
--init b. 配置 opcontrol --setup --event=... c. 启动 opcontrol --start d. 运行待分析之程序 xxx e. 取出数据 opcontrol --dump opcontrol --stop f. 分析结果 opreport -l ./xxx
Gprof功能:
打印出程序运行中各个函数消耗的时间,可以帮助程序员找出众多函数中耗时最多的函数。
产生程序运行时候的函数调用关系,包括调用次数,可以帮助程序员分析程序的运行流程。
Gprof 实现原理:
通过在编译和链接程序的时候(使用 -pg 编译和链接选项),gcc 在应用程序的每个函数中都加入名为
mcount ( or “_mcount” , or “__mcount” , 依赖于编译器或操作系统)的函数,
也就是说应用程序里的每一个函数都会调用mcount, 而mcount 会在内存中保存一张函数调用图,并通过函数调用堆栈的形式查找子函数和父函数的地址。
这张调用图也保存了所有与函数相关的调用时间,调用次数等等的所有信息。 Gprof基本用法:
1. 使用 -pg 编译和链接应用程序。 2. 执行应用程序使之生成供gprof 分析的数据。 3. 使用gprof 程序分析应用程序生成的数据。
LTT是一个用于跟踪系统详细运行状态和流程的工具,它可以跟踪记录系统中的特定事件。这些事件包括:
? 系统调用的进入和退出
? 陷阱/中断(Trap / Irq)的进入和退出
? 进程调度事件
? 内核定时器
? 进程管理相关事件:创建 ,唤醒,信号处理等等
? 文件系统相关事件:Open / Read / Write / Seek / Ioctl 等等
? 内存管理相关事件:内存分配/释放等
? 其他事件:IPC / Socket/ 网络 等等

技术分享

http://lttng.org/docs/

The Linux Trace Toolkit: next generation is an open source system software package for correlated tracing of the Linux kernel,
user applications and libraries. LTTng consists of kernel modules (for Linux kernel tracing)
and dynamically loaded libraries (for user application and library tracing). It is controlled by a session daemon,
which receives commands from a command line interface.

 

MontaVista DevRocket: 嵌入式LINUX IDE开发工具

LMbench - Tools for Performance Analysis
http://www.bitmover.com/lmbench/

技术分享

 

高级性能调试手段(oprofile+gprofile)+内核追踪手段:LTT

标签:

原文地址:http://www.cnblogs.com/zengkefu/p/5571284.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!