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