博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
eBPF监控工具bcc系列四工具argdist
阅读量:6213 次
发布时间:2019-06-21

本文共 1481 字,大约阅读时间需要 4 分钟。

argdist工具用于探测指定的函数,并收集参数到一个直方图和频率计数器。可以在没有调试器的情况下,过滤并打印敢兴趣的参数,从而理解指定参数的分布图。

例如像知道一个应用中的内存分配块大小情况,可以指向如下:

./argdist -p 2420 -c -C 'p:c:malloc(size_t size):size_t:size'

如果要变成柱状图,参数修改成-H即可。

./argdist -p 2420 -c -H 'p:c:malloc(size_t size):size_t:size'

其他函数同理:

./argdist -c -H 'p:c:write(int fd, void *buf, size_t len):size_t:len'

这个write的跟踪中,因为系统中的write会被很多进程调用,如果先想执行写到STDOUT中的write。那么可以增加过滤条件如下:

./argdist -c -H 'p:c:write(int fd, void *buf, size_t len):size_t:len:fd==1'

            更进一步的,用户的内存分配函数是malloc,在内核态也有一个和它对应的函数叫做kmalloc函数,可以使用如下:

./argdist -i 3 -n 2 -H 'p::__kmalloc(size_t size):size_t:size'

            跟踪字符串打印函数:

./argdist -i 10 -n 1 -C 'p:c:puts(char *str):char*:str'

            这个命令会输出10秒内字符串函数puts调用的次数和内容。

如果是gets函数,则使用如下命令:

./argdist -i 10 -n 1 -C 'r:c:gets():char*:(char*)$retval:$retval!=0'

同理,如果要得到read函数返回的直方图,使用如下命令

./argdist -i 10 -c 1 -H 'r:c:read()'

            更进一步找到同步延时超过0.1ms的进程

./argdist -C 'r::__vfs_read():u32:$PID:$latency > 100000'

计算malloc分配每个字节的时间

./argdist -H 'r:c:malloc(size_t size):u64:$latency/$entry(size);ns per byte' -n 1 -i 10

也可以跟踪kmalloc函数

./argdist -c -C 'p::__kmalloc(size_t size, gfp_t flags):gfp_t,size_t:flags,size'

argdist支持kernel tracepoints,内核版本之间的tracepoints变化很小,鼓励使用tracepoints.

 

 

使用argdist跟踪内核的tracepoints如下:

argdist -C 't:net:net_dev_start_xmit():u16:args->protocol'

argdist可以使用STRCMP函数来支持过滤,如下:

argdist -c -H 'r:c:open(char *file):u64:$latency/1000:STRCMP("test.txt",$entry(file))'

最后一个样例,超出系统中每个进程调用write的次数

argdist -c -C 'p:c:write():int:$PID;write per process' -n 2

 

 

转载地址:http://irdja.baihongyu.com/

你可能感兴趣的文章
PostgreSQL 快速返回表上某列的唯一值(枚举值) - pg_stats.most_common_vals ...
查看>>
阿里云MVP田亮:让大数据为业务插上翅膀
查看>>
使用DataX进行OTS实例间数据迁移
查看>>
贾跃亭不是老赖?网传贾跃亭已偿还200亿债务,你怎么看? ...
查看>>
如何将本地文件上传至阿里云ECS中
查看>>
Linux性能分析和优化思维导图
查看>>
puppet实战
查看>>
初学者怎样使用Keras进行迁移学习
查看>>
干货满满:Java、前端、PHP等九大系列资料整理,全面总结,推荐收藏 ...
查看>>
python socket传文件
查看>>
“阿里云大数据技术实战训练营”江苏省大学生万人计划学术冬令营活动成功举行...
查看>>
新Kubeflow,新征程 (一):简化部署体验
查看>>
Kubernetes集群高可用的策略和实践
查看>>
Mybatis调用MySQL存储过程
查看>>
CSS(溢出_判断IE版本)
查看>>
阿里面试90%以上会问到的数据结构;HashMap
查看>>
Jdbc模板、事务管理
查看>>
hive 异常 (Attempt to do update or delete on table terminal that does not use an )
查看>>
其实,我是这么学习的
查看>>
对标华为 GPU Turbo,OPPO 推出 Hyper Boost 手机加速引擎
查看>>