Chinaunix首页 | 论坛 | 博客
  • 博客访问: 33023
  • 博文数量: 23
  • 博客积分: 890
  • 博客等级: 准尉
  • 技术积分: 190
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-05 20:26
文章分类

全部博文(23)

文章存档

2011年(1)

2010年(3)

2009年(17)

2008年(2)

我的朋友
最近访客

分类: LINUX

2009-10-10 15:43:01


1 概念

1.1 功能

LTT是一个用于跟踪系统详细运行状态和流程的工具,它可以跟踪记录系统中的特定事件。这些事件包括:

 系统调用的进入和退出
 陷阱/中断(Trap / Irq)的进入和退出
 进程调度事件
 内核定时器
 进程管理相关事件:创建 ,唤醒,信号处理等等
 文件系统相关事件:Open / Read / Write / Seek / Ioctl 等等
 内存管理相关事件:内存分配/释放等
 其他事件:IPC / Socket/ 网络 等等

此外 Ltt还提供了自定义和记录需要跟踪的事件类型的函数接口。

1.2 结构

LTT主要由4个部分组成:
 内核代码补丁:LTT目前还没有纳入正式的官方内核,在内核中的部分代码需要打Patch来获得,主要是修改了上述各类事件的相关代码,添加了Trace的调用代码
 内核模块:Trace功能的主要实现部分,记录内核事件,并和用户空间的守护进程进行交互
 用户空间的守护进程:从LTT的内核模块中获取事件相关数据,并写入文件。
 数据分析应用程序:读取守护进程生成的数据文件,加以分析,并以更加可读的方式(图表等)显示出来。
 

 除此之外,LTT还具备自定义和跟踪用户空间事件的能力。

2 使用

    所有的安转使用相关的内容,都可以在LTT的官方站点: 找到。仔细阅读里面的文档即可。
(不过,其稳定版本在我这编译起来居然有Error,修改过一些代码后,编译通过,有很多warning,或许是我的编译环境有问题,最终试用的时候图省事,没有去过多研究,使用了Montavista的Package中现成编译好的版本 8 )

3 体会

LTT的确是一个很有用的工具,灵活的配合其他工具的使用,如strace,time等等,可以作为分析优化系统的performance的一个可行的途径。

值得一提的是,LTT可以通过设置参数,在特定的时间段,筛选所需要记录的事件类型,还可以按进程ID等选择所跟踪的特定对象,通过合理的配置参数,可以使得其对系统所造成的额外负担减少到一个合理的程度,对系统性能的分析基本不会造成明显的干扰因素。

另外LTT提供的自定义和记录需要跟踪的事件类型的函数接口,也使它有了一些拓展能力,可以用来Debug自己编写的内核模块代码。

LTT跟踪用户空间事件的实现,是通过其内核模块中几个特定的IOCTL接口,由用户空间的一个LIB库将其包装成函数,使得其使用方法与其在内核 模块中自定义和记录事件类型的函数接口相同。应该说这是一个很巧妙的实现办法,不过对其性能个人还是有些怀疑,因为这样一来,对用户空间事件的纪录就需要 经由 用户空间-〉内核空间-〉用户空间 走一趟来实现。


阅读(444) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~