首页 > 其他分享 >ebpf-5——实用案例汇总

ebpf-5——实用案例汇总

时间:2022-11-22 21:37:09浏览次数:34  
标签:do kprobe start ebpf 汇总 nsecs 案例 comm tid

1. 统计函数每次执行耗时

bpftrace -e 'kprobe:vfs_read { @start[tid] = nsecs; }
    kretprobe:vfs_read /@start[tid]/ {@us[pid] = nsecs - @start[tid]; delete(@start[tid]); }
    END { print(@us, 0, 1000); clear(@us); clear(@start); }'

 

2. 谁打开了特定文件

# bpftrace -e 'kprobe:do_sys_openat2 / str(uptr(arg1)) == "/dev/cpuset/top-app/tasks" / { printf("tid=%d comm=%s open file %s\n", tid, comm, str(uptr(arg1))); }'
# bpftrace -e 'kprobe:do_sys_openat2 / str(uptr(arg1)) == "/dev/cpuset/top-app/tasks" / { printf("tid=%d comm=%s open file %s, ustack: %s\n", tid,  comm, str(uptr(arg1)), ustack(perf)); }'

 

3. 一个进程休眠了多长时间

(1) 所有进程

# bpftrace -e 'kprobe:do_nanosleep { @start[tid] = nsecs; } 
  kretprobe:do_nanosleep /@start[tid] != 0/ { printf("tid=%d, comm=%s, slept for %d ms\n", tid, comm, (nsecs - @start[tid]) / 1000000); delete(@start[tid]); }'

(2) 指定单个线程

# bpftrace -e 'kprobe:do_nanosleep / tid == 1681 / { @start[tid] = nsecs; } 
  kretprobe:do_nanosleep /@start[tid] != 0 /{ printf("tid=%d, comm=%s, slept for %d us\n", tid, comm, (nsecs - @start[tid]) / 1000); delete(@start[tid]); }' Attaching 2 probes... tid=1681, comm=surfaceflinger, slept for 844 us ^C

 

标签:do,kprobe,start,ebpf,汇总,nsecs,案例,comm,tid
From: https://www.cnblogs.com/hellokitty2/p/16916502.html

相关文章

  • JavaScript对象_Global和案例1_点灯开关
    JavaScript对象_Global:Global:1.特点:全局对象,这个Global中封装的方法不需要对象就可以直接调用。方法名();2.方法:encodeURI():url编码decodeURI():url解码encodeUR......
  • 面经汇总--校招--金山办公
    参考链接:https://www.nowcoder.com/experience/639用于汇总Java后端各个校招、社招、实习面经,附自己答案目录......
  • ebpf-4——reference_guide.md翻译与实验
    https://github.com/iovisor/bpftrace/blob/master/docs/reference_guide.md一、说明bpftrace参考指南有关参考摘要,请参阅README.md中有关探测器类型的部分以及本指......
  • ebpf-2——Android中的eBPF程序
    一、简介1.Android从9.0版本开始全面支持eBPF,其主要用在流量统计上。此外,eBPF可以与内核的kprobe/tracepoints/skfilter等模块相结合,hook内核事件从而监控相应的系统......
  • ebpf-1——ebpf初探
    一、简介1.eBPF提供可基于系统或程序事件高效安全执行一段特定代码的通用能力,涵盖了性能分析、系统追踪、网络优化等方面。2.eBPF有以下优势强安全:BPF验证器(verif......
  • DOM_Node对象与案例4_动态表格_添加
    DOM_Node对象节点可以是元素节点、属性节点、文本节点,或者也可以是"节点类型"那一节中所介绍的任何一种节点。请注意,虽然所有的对象均能继承用于处理父节点和子节点的属性......
  • Java实现网络爬虫 案例代码
    Java实现网络爬虫案例代码需求说明搭建开发环境,实现《三国演义》全文保存在本地 步骤分析访问网址:http://www.shicimingju.com/book/sanguoyanyi.html分析网站URL......
  • python使用httpHandler处理请求案例
    #coding=utf-8#HTTPHandler&opener#更高级一些功能,可以高仿模拟浏览器importurllib.requestimporturllib.parseurl="https://www.baidu.com/";handler=urllib.requ......
  • python中urllib.request对象案例
    刚刚接触爬虫,基础的东西得时时回顾才行,这么全面的帖子无论如何也得厚着脸皮转过来啊!什么是Urllib库?urllib库是 ​​Python​​ 内置的HTTP请求库。urllib模块提供......
  • 6:常见异常汇总和说明
    由于return有两种作用:结束方法运行、返回值。我们一般不把return放到异常处理结构中,而是放到方法最后。【示例】return和异常结构的正确处理方式deftest01():......