Recent Posts

Systemtap examples, DISK IO - 3 Track Cumulative IO

3 minute read

背景 例子来自traceio.stp 脚本, 该脚本通过事件vfs.read.return和vfs.write.return统计进程的累计读写调用情况. 输出读写前10的进程信息以及累计的读, 写的字节数信息. 注意原始的例子中没有对devname做过滤, 所以读写包含了cache的操作, 也没有对retur...

Systemtap examples, DISK IO - 2 Tracking I/O Time For Each File Read or Write

6 minute read

背景 例子来自iotime.stp 脚本, 该脚本用以监控每个进程对文件的读写字节数以及耗费的时间. 注意syscall.read和syscall.write还提供了请求读写字节数的上下文变量($count), 脚本中没有, 我增加了请求读写字节数的输出. 修改后的脚本内容以及注解 : [root@d...

Systemtap examples, DISK IO - 1 Summarizing Disk Read/Write Traffic

7 minute read

背景 本文开始给大家讲一下linux系统中disk io相关的跟踪范例. 例子来自disktop.stp 脚本, 该脚本作者的用意是输出系统中IO请求字节数前10的进程信息以及对应的块设备信息. 但是这个脚本存在一个严重的BUG, 输出时对应的设备名其实是没有意义的, 它只是当时的设备号, 因为一个进程可...

Systemtap kernel.trace(*) events source code

3 minute read

背景 我们知道内核trace event可以使用stap -l或-L查看, 而trace的源代码则可以在/usr/src/debug/kernel-2.6.32-358.el6/linux-2.6.32-358.el6.x86_64/include/trace/events中查找到. (关注你的内核版本. 目...

Systemtap examples, Network - 5 Monitoring Network Packets Drops in Kernel

4 minute read

背景 例子来自dropwatch.stp脚本, 可用于分析网络协议栈中丢包的确切位置. 确切的位置是使用symname或者symdata将内存地址翻译出来的函数信息, 翻译必须使用stap --all-modules选项以便加载所有的模块的符号表. --all-modules ...

Systemtap examples, Network - 4 Monitoring TCP Packets

4 minute read

背景 例子来自tcpdumplike.stp脚本, 当tcp.receive事件触发后, 取出类似tcpdump输出的源ip, 目的ip, 源端口, 目的端口, 以及6个tcp包的控制比特位信息. tcp.receive alias实际上包含2个内核函数, 分别代表ipv4和ipv6. kernel.f...

Systemtap examples, Network - 1 Network Profiling

3 minute read

背景 systemtap-testsuite包收集了大量的stp脚本, 可直接用于跟踪以下分类的内容 : = AUDIT = = AUTOFS = = BACKTRACE = = CALLGRAPH = = CPU = = DEVICE = = DISK = = FILE = ...

System.map file is a symbol table used by the kernel

1 minute read

背景 System.map文件中包含了符号以及对应的在内存中的地址表信息. 例如 [root@db-172-16-3-150 ~]# less /boot/System.map-$(uname -r) [root@db-172-16-3-150 ~]# uname -r 2.6.32-358.el...