39.5. SystemTap 脚本的有用示例
随 SystemTap 的安装一起分发的示例脚本可在 /usr/share/systemtap/examples
目录中找到。
您可以使用 stap
命令执行不同的 SystemTap 脚本:
- 追踪函数调用
您可以使用
para-callgraph.stp
SystemTap 脚本追踪函数调用和函数返回。# stap para-callgraph.stp argument1 argument2
脚本接受两个命令行参数:您要跟踪其进入/退出的函数的名称。可选的触发器功能,用于在每个线程上启用或禁用追踪。只要触发器功能还没有退出,每个线程中的追踪将继续。
- 监控轮询应用程序
您可以使用 timeout.stp SystemTap 脚本识别和监控哪些应用程序正在轮询。了解这一点后,您可以跟踪不必要的或大量的轮询,这有助于找出 CPU 使用率和节能方面需要改进的地方。
# stap timeout.stp
此脚本跟踪每个应用程序随着时间的推移,使用
poll
、select
、epoll
、itimer
、futex
、nanosleep
和Signal
系统调用的次数- 跟踪每个进程的系统调用量
您可以使用
syscalls_by_proc.stp
SystemTap 脚本查看哪些进程正在执行最多的系统调用。它显示执行最多系统调用的 20 个进程。# stap syscalls_by_proc.stp
- 追踪网络套接字代码中调用的函数
您可以使用
socket-trace.stp
示例 SystemTap 脚本跟踪从内核的 net/socket.c 文件中调用的功能。这帮助您详细识别每个进程在内核层面上如何与网络进行交互。# stap socket-trace.stp
- 跟踪每个文件读或写的 I/O 时间
您可以使用
iotime.stp
SystemTap 脚本监控每个进程读取或写入任何文件所需的时间。这有助于您确定系统上载入哪些文件。# stap iotime.stp
- 跟踪 IRQ 和从任务中窃取周期的其它进程
您可以使用
cycle_thief.stp
SystemTap 脚本跟踪任务运行的时间以及其没有运行的时间。这帮助您识别哪些进程正在从任务中窃取周期。# stap cycle_thief.stp -x pid
您可以在 /usr/share/systemtap/examples/index.html
文件中找到有关 SystemTap 脚本的更多示例和信息。在 Web 浏览器中打开它,以查看所有可用的脚本及其描述的列表。
其他资源
-
/usr/share/systemtap/examples
目录