eBPF监控工具bcc系列六工具查询列表
关于trace,argdist,funccount三个工具已有专门篇章介绍。所有脚本位于bcc/tools文件夹中。
execsnoop跟踪新进程创建,跟踪exec函数。
bashreadline打印系统中所有bash上运行的命令,通过跟踪readline()函数实现。
biolatency跟踪块设备IO,记录IO延时分布并输出直方图。
biosnoop跟踪块设备IO,为每个IO打印一行。
biotop是块IO的top命令,查看哪些进程在使用磁盘IO.
bitesize显示各个进程的请求块大小的IO分布。
bpflist用于显示哪个BPF程序在运行,并打印打开的探针。
btrfsdist跟踪btrfs文件系统的读、写、打开和同步,并总结延时的直方图。
btrfsslower跟踪btrfs文件操作:reads,writes,opens,syncs 。衡量操作的花费时间,并打印超过阈值的信息。相比btrfsdist,这个是打印超过阈值的信息。
cachestat显示页高速缓存的命中率和丢失率,包括读写命中率
cachetop是cachestat 的top显示功能
capable跟踪内核负责安全监测的cap_capable函数,并打印调用信息。
cobjnew调用uobjnew,uobjnew统计新对象的分配事件,并打印出分配频率、分配大小的统计信息。帮助诊断导致大量垃圾回收问题的普通分配路径。
cpudist统计任务的on-CPU事件,在被调用前花费了多少CPU.这个提供了有用的信息可以用来指导硬件采购。也可以统计off-CPU事件,就是等待磁盘IO、锁、定时器和其他挂住的情况。
cpuunclaimed函数采样CPU运行队列长度,确定是否有idle的cpu.
dbslower跟踪Mysql或Postgresql的查询,然后打印超出延时的,默认延时是1ms。
dbstat跟踪Mysql或PostgreSQL数据库进程查询,并显示查询延时的直方图。
dcsnoop跟踪目录缓存查询,用于dcstat之后的高级查询。
dcstat显示目录缓存静态统计。
deadlock_detector用于检测运行进程潜在的死锁,将uprobes绑定到pthread_mutex_lock和pthread_mutex_unlock。
ext4dist跟踪ext4的reads,writes,opens,fsync,总结延时并得到直方图。
ext4slower显示ext4中reads,writes,opens,fsync中延时超过阈值的操作。
filelife跟踪短命文件,就是那些创建后就被删除的文件,例如gcc等。
fileslower显示文件同步读和写超过阈值的操作。
filetop是文件读和写的top。
funclatency计时内核函数,直到ctrl+c.例如./funclatency do_sys_open
funcslower显示内核或用户函数超过阈值。如./funcslower c:open -u 1
gethostlatency跟踪主机名查找调用,如getaddrinfo(),gethostbyname(),gethostbyname2().
hardirqs跟踪硬中断,并保存其消耗时间的统计信息。
inject通过调用链和可选的谓词集,保证指定注入模式的适当错误返回。
Javacalls会调用ucalls,ucalls统计在高级语言的方法调用,例如java,python,ruby,php和系统调用。显示最常调用的方法以及其延时。
javaflow调用uflow,uflow跟踪方法入口和退出事件,并打印流程图,类似跟踪的调试器。可以用来理解高级语言的程序流,这些高级语言提供了USDT探针。
javagc调用ugc,ugc跟踪高级语言的垃圾回收事件。
javaobjnew调用uobjnew函数,统计java新对象分配事件。
javastat会调用ustat,ustat类似top工具,用于监控高级语言的事件。
javathreads会调用uthreads,uthreads跟踪java或raw threads的进程创建事件
killsnoop跟踪kill()系统调用的信号。
llcstat跟踪缓存相关信息,如缓存miss事件。这些事件定义在uapi/linux/perf_event.h中。
mdflush跟踪md驱动层的flush的信息。
memleak跟踪内存分配和回收请求,收集每次分配的调用栈。会将调用分配后没有进行释放的打印出来。
mountsnoop跟踪mount()和umount()系统调用。
mysqld_qslower跟踪Mysql的查询,并打印超过阈值延时的,默认阈值是1ms。
nfsdist跟踪NFS的reads,writes,opens,getattr,并输出其直方图。
nfsslower显示NFS的reads,writes,opens,getattr,延时超过阈值。
nodegc通过ugc跟踪node的垃圾回收。
nodestat通过ustat显示node层的监控事件,类似top工具。
offcputime显示阻塞的调用栈,以及阻塞的事件。
offwaketime显示被阻塞的任务和内核调用栈,以及唤醒他们的线程。
oomkill跟踪linux中OOM,每个显示一行。
opensnoop跟踪系统中的open系统调用.
phpcalls会调用ucalls,总结php方法的调用情况。
phpflow调用uflow,跟踪方法的入口和退出并打印其方法流。
phpstat调用ustat,类似top工具来监视php的事件。
pidpersec显示每秒新进程创建的数量。
profile是CPU的profiler,在给定时间间隔中采样堆栈.
pythoncalls调用ucalls,ucalls总结python的方法调用情况。
pythonflow调用uflow,uflow跟踪python方法的入口和出口事件,并打印流程图。
pythongc调用ugc,ugc跟踪python的垃圾回收事件。
Pythonstat调用ustat,类似top工具监控python事件。
reset-trace可能永远用不到,如果使用kill -9杀掉bcc工具,会导致bcc工具崩溃,内核跟踪会处于半使能状态。使用reset-trace来清除跟踪状态并重置和禁止激活的跟踪。
rubycalls调用ucalls,ucalls总结ruby的方法调用情况。
rubyflow调用uflow,uflow跟踪ruby方法的入口和出口事件,并打印流程图。
rubygc调用ugc,ugc跟踪ruby的垃圾回收事件。
rubyobjnew调用uobjnew,uobjnew总结新对象分配事件,并打印分配频率。
rubystat调用ustat,类似top工具监控ruby事件。
runqlat总结调度器运行队列延时的直方图,并显示器等待时间。
runqlen总结调度器队列长度的直方图。
slabratetop显示内核中内存分配缓存(SLAB,SLUB)的使用率和总大小,类似top.
softirqs跟踪软中断,保存其统计信息。
solisten当一个程序要监听TCP连接的时候,跟踪内核调用
sslsniff跟踪OpenSSL的SSL_READ和SSL_WRITE函数。
stackcount跟踪函数的使用频率和整个调用栈,如./stackcount submit_bio
statsnoop跟踪系统的stat()系统调用。
syncsnoop跟踪内核sync的调用。
syscount总结系统或指定进程的系统调用。
tcpaccept跟踪接收tcp套接字链接(accept)的内核函数。
tcpconnect跟踪活动TCP链接(connect)的内核函数
tcpconnlat跟踪活动TCP链接,及链接延时。
tcplife总结跟踪期间打开和关闭的TCP会话。
tcpretrans跟踪TCP重发函数。
tcpstates打印TCP状态改变的信息,包括每个状态的持续时间。
tcpsubnet显示目标子网的吞吐量,只在IPv4工作。可以指定子网。
tcptop类似top功能,根据主机和端口显示吞吐量。
tcptracer跟踪TCP链接(connect,accept)和关闭的内核函数。
tplist显示内核tracepoinst和USDT探针,包括他们的格式。
ttysnoop观测tty或pts设备,并打印设备上的输出。
vfscount通过跟踪vfs_开头的内核函数来记录VFS调用
vfsstat跟踪vfs调用,并输出每秒情况。
Wakeuptime衡量线程锁,显示唤醒操作线程的栈,唤醒和目标程序名字,以及总的阻塞时间。
xfsdist跟踪XFS的reads,writes,opens,fsyncs,并输出直方图。
xfsslower显示XFS的reads,writes,opens,fsyncs中超过阈值的操作。
zfsdist跟踪ZFS的reads,writes,opens,fsyncs,并输出直方图。
zfsslower显示ZFS的reads,writes,opens,fsyncs中超过阈值的操作。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Sherman-Morrison公式及其应用
Sherman-Morrison公式 Sherman-Morrison公式以 Jack Sherman 和 Winifred J. Morrison命名,在线性代数中,是求解逆矩阵的一种方法。本篇博客将介绍该公式及其应用,首先我们来看一下该公式的内容及其证明。 (Sherman-Morrison公式)假设A∈Rn×nA∈Rn×n为可逆矩阵,u,v∈Rnu,v∈Rn为列向量,则A+uvTA+uvT可逆当且仅当1+vTA−1u≠01+vTA−1u≠0, 且当A+uvTA+uvT可逆时,该逆矩阵由以下公式给出: (A+uvT)−1=A−1−A−1uvTA−11+vTA−1u.(A+uvT)−1=A−1−A−1uvTA−11+vTA−1u. 证明: (⇐)(⇐)当 1+vTA−1u≠01+vTA−1u≠0时,令 X=A+uvT,Y=A−1−A−1uvTA−11+vTA−1uX=A+uvT,Y=A−1−A−1uvTA−11+vTA−1u,则只需证明 XY=YX=IXY=YX=I即可,其中 II为n阶单位矩阵。 XY=(A+uvT)(A−1−A−1uvTA−11+vTA−1u)=AA−1+...
- 下一篇
eBPF监控工具bcc系列七开发脚本
bcc开发脚本有两种方式,一种是基于python接口,另一种是基于ruby接口,我们看的是基于python接口的。 本篇的前置条件是系统中已经安装好了bcc。 1. Hello world 输入代码如下: #!/usr/bin/env python from bcc import BPF BPF(text='int kprobe__sys_clone(void *ctx) { bpf_trace_printk("Hello, World!\\n"); return 0; }').trace_print() 执行后只要有进程执行就会输出Hello,World!字符串。 主要代码其实就是一句 BPF(text='int kprobe__sys_clone(void *ctx) { bpf_trace_printk("Hello, World!\\n"); return 0; }').trace_print() 如果是x64系统上4.17 内核版本,,可能需要将kprobe__sys_clone 替换成kprobe____x64_sys_clone。 我们看下语法: text=’’表示...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能