一、KernelShark简介
KernelShark是一个非常实用的工具,其可以搭配 trace-cmd 使用,将内核的任务执行过程以直观的形式展现出来。下面的文档中详细的介绍了KernelShark的使用方法和功能,这里不再详细描述
https://www.kernelshark.org/Documentation.html
二、必要的组件安装
安装KernelShark
sudo apt-get install kernelshark
安装trace-cmd
sudo apt-get install trace-cmd
三、获取内核任务执行信息
1.使用 trace-cmd 进行追踪(通常在root权限下)
trace-cmd 会追踪当前状态下的内核中进行的所有任务进行追踪,也可以通过特定的参数来指定不同跟踪对象,下面的文章中有详细的描述。
ftrace利器之trace-cmd和kernelshark
我们这里只对进程切换事件(sched_switch)和进程唤醒事件(sched_wakeup)进行跟踪,
trace-cmd record -e sched_switch -e sched_wakeup
追踪时进程处于阻塞状态,需要我们手动停止(Ctrl + C)
追踪结束后会在当前目录生成 trace.dat 文件,里面记录了追踪得到的结果。
2.使用 KernelShark 分析追踪结果
kernelshark 可以将 trace-cmd 生成的文件图像化,并进行相应的分析操作。
kernelshark trace.dat
图形化界面如下:
不同颜色的任务条代表着不同的任务,可以通过鼠标点击在表格中锁定该任务的详细信息,还可以对任务进行搜索和筛选,详见 KernelShark 文档 https://www.kernelshark.org/Documentation.html