安装完systemtap相关rpm包之后,
在路径/usr/share/systemtap/testsuite/systemtap.examples/或者/usr/share/doc/systemtap-client-3.0/examples/network/中有所有可实用的脚本。
1. 网络
查看系统中每个进程的网络传输情况:
nettop.stp追踪系统中产生的网络流量。
socket-trace.stp跟踪net/socket.c文件中的所有函数,容易导致系统HUNG住。
tcp_connections.stp实时跟踪TCP链接,获取未认证的,可疑的,不需要的网络请求。
tcpdumplike.stp跟踪udp和tcp包接收,因为有点像tcpdump,但是原理是安全不一样的,tcpdump是在链路层L2的,这个是在L4层比tcpdump高层很多。
dropwatch.stp 追踪系统丢包情况,通过跟踪kfree_skb来实现,有些类似dropwatch工具,不过只显示了丢包的地址,并没有函数,可以增加参数--all-modules或者老版本的-dkernel,来显示函数名字。
2. 磁盘
disktop.stp输出读写最频繁的10个进程。
iotime.stp跟踪系统中每次open,close,read,write的系统调用并计数,同时记录读写的字节数量即花费时间,最后在close的时候来输出。
traceio.stp每秒打印一次,IO负载最严肃的前十个10进程。
traceio2.stp跟踪指定设备的vfs_read和vfs_write。设备参入通过stat -c “0x%D” dirctory来获取。 Dirctory是磁盘所在目录,例如/home.
inodewatch.stp用来实时观察一个文件的读写,需要输入3个参数,分别是文件的主设备号,次设备号,和inode,可以通过命令stat -c "%D %i" filename来获取.其中得到的设备号中低位是次设备号,高位是主设备号。
inodewatch2.stp监控进程修改文件属性。
ioblktime.stp循环打印IO阻塞时间,计算每个设备块IO的等待时间,如果请求的IO被merge了就忽略。
3. 诊断
functioncallcount.stp在监控事件函数被调用的次数。例如:stap functioncallcount.stp "*@mm/*.c,如果使用通配符容易系统奔溃。
para-callgraph.stp可以包含两个参数。第二参数用使能或关闭,只有第二个参数触发后,其相关的线程才能出发第一个参数,起到过滤的作用。
thread-times.stp列出5秒内消耗CPU时间最多的进程,列出用户空间和内核空间的消耗时间。
timeout.stp跟踪poll,select,epool,itimer,futex,nanosleep,signal系统调用过程超时的次数。
topsys.stp 用于查找使用系统调用最多的应用。
syscalls_by_proc.stp列出执行最多的系统调用。
4. 竞争
futexes.stp检测futext系统调用显示锁争用。