LTT (Linux Trace Toolkit) 是一个用于跟踪系统详细运行状态和流程的工具,它可以跟踪记录系统中的特定事件。这些事件包括:
系统调用的进入和退出 陷阱/中断(Trap / Irq)的进入和退出 进程调度事件 内核定时器 进程管理相关事件:创建 ,唤醒,信号处理等等 文件系统相关事件:Open / Read / Write / Seek / Ioctl 等等 内存管理相关事件:内存分配/释放等 其他事件:IPC / Socket/ 网络 等等
此外 Ltt还提供了自定义和记录需要跟踪的事件类型的函数接口。
LTT的确是一个很有用的工具,灵活的配合其他工具的使用,如strace,time等等,可以作为分析优化系统的performance的一个可行的途径。
值得一提的是,LTT可以通过设置参数,在特定的时间段,筛选所需要记录的事件类型,还可以按进程ID等选择所跟踪的特定对象,通过合理的配置参数,可以使得其对系统所造成的额外负担减少到一个合理的程度,对系统性能的分析基本不会造成明显的干扰因素。
另外LTT提供的自定义和记录需要跟踪的事件类型的函数接口,也使它有了一些拓展能力,可以用来Debug自己编写的内核模块代码。
LTT跟踪用户空间事件的实现,是通过其内核模块中几个特定的IOCTL接口,由用户空间的一个LIB库将其包装成函数,使得其使用方法与其在内核 模块中自定义和记录事件类型的函数接口相同。应该说这是一个很巧妙的实现办法,不过对其性能个人还是有些怀疑,因为这样一来,对用户空间事件的纪录就需要 经由 用户空间-〉内核空间-〉用户空间 走一趟来实现。