bpftrace 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
bpftrace 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
bpftrace 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !

软件简介

bpftrace是一种用于Linux eBPF的高级跟踪语言。bpftrace使用LLVM作为后端,LLVM将脚本编译为BPF字节码,并利用BCC与Linux BPF系统进行交互。

# Files opened by process
bpftrace -e 'tracepoint:syscalls:sys_enter_open { printf("%s %s\n", comm, str(args->filename)); }'

# Syscall count by program
bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }'

# Read bytes by process:
bpftrace -e 'tracepoint:syscalls:sys_exit_read /args->ret/ { @[comm] = sum(args->ret); }'

# Read size distribution by process:
bpftrace -e 'tracepoint:syscalls:sys_exit_read { @[comm] = hist(args->ret); }'

# Show per-second syscall rates:
bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @ = count(); } interval:s:1 { print(@); clear(@); }'

# Trace disk size by process
bpftrace -e 'tracepoint:block:block_rq_issue { printf("%d %s %d\n", pid, comm, args->bytes); }'

# Count page faults by process
bpftrace -e 'software:faults:1 { @[comm] = count(); }'

# Count LLC cache misses by process name and PID (uses PMCs):
bpftrace -e 'hardware:cache-misses:1000000 { @[comm, pid] = count(); }'

# Profile user-level stacks at 99 Hertz, for PID 189:
bpftrace -e 'profile:hz:99 /pid == 189/ { @[ustack] = count(); }'

# Files opened, for processes in the root cgroup-v2
bpftrace -e 'tracepoint:syscalls:sys_enter_openat /cgroup == cgroupid("/sys/fs/cgroup/unified/mycg")/ { printf("%s\n", str(args->filename)); }
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2021/01/10 10:55

手艺人舍bpftrace而取systemtap的代价和思考

上个礼拜我就想喷eBPF了,由于周末时间实在太紧,就准备拖延一周,但还是立了个flag,先发了个朋友圈: ebpf就像牛皮藓一样,已经遍布在linux内核的各个角落,每个调用点都看上去很随意,毫无规划,让人觉得好像自己觉得哪里需要这么一个调用点并不很难… 但实际上如果你真的去尝试在某处加一个ebpf调用点时,就会觉得这件事和清除牛皮藓的过程非常类似,修改散落在各个目录的多个文件,还得重新编译,大概率失败,还要重新做一...

0
0
发表了博客
2019/05/28 14:10

eBPF Tracing 入门教程与实例

在 LPC'18(Linux Plumber's conference) 会议上,至少有24个关于 eBPF 的演讲。 eBPF 这一实用技术,将是每个开发者需要掌握的技巧。 也许你的新年目标得再多一个了:学习 eBPF! eBPF 的名称源于 extended Berkeley Packet Filter,如果从 eBPF 的功能来说,类似 Virtual Kernel Instruction Set (VKIS) 这样的名字似乎跟贴切。 eBPF 可以用来做很多事情,比如网络性能(network performance),防火墙(firewalls),安全(securi...

0
0
发表了博客
2019/12/27 19:57

snap 方便的多平台软件包管理工具使用

snap 是一个强大,支持多语言多平台的软件包管理平台,类似苹果的app store 以下是一个安装bpftrace 的试用 Ubuntu系统使用 安装snap sudo apt update sudo apt install snapd 安装bpftrace sudo snap install bpftrace centos 系统使用 安装snap sudo yum install epel-release sudo yum install snapd sudo systemctl enable --now snapd.socket sudo ln -s /var/lib/snapd/snap /snap 安装bpftrace sudo snap install bpftra...

0
0
发表于运维专区
2019/11/29 21:26

BPF简介,以及使用kubectl trace插件为kubernetes集群运行BPF程序

转载自Linux内核之旅 0x00 文章楔子 BPF(Berkeley Packet Filter)本质上是一个运行在内核态的虚拟机,使得用户可以在内核中加载运行自定义程序的技术,其构想在1992年通过一篇论文被提出,最初被用于优化tcpdump包过滤效率。2013年开始,社区对BPF进行了大刀阔斧的改进,使其重获生机,并一跃成为了近几年Linux社区中最受人追捧的“新”技术之一。 改进后的BPF被称为eBPF,e代表extended,而旧的BPF则被保留,并改名为cBPF,c代...

0
1
2020/08/21 10:21

eBPF技术简介

“eBPF 是我见过的 Linux 中最神奇的技术,没有之一,已成为 Linux 内核中顶级子模块,从 tcpdump 中用作网络包过滤的经典 cbpf,到成为通用 Linux 内核技术的 eBPF,已经完成华丽蜕变,为应用与神奇的内核打造了一座桥梁,在系统跟踪、观测、性能调优、安全和网络等领域发挥重要的角色。为 Service Mesh 打造了具备 API 感知和安全高效的容器网络方案 Cilium,其底层正是基于 eBPF 技术” 1. BPF BPF(Berkeley Packet Filter ...

0
0
发表了博客
2020/08/21 12:11

eBPF技术简介

“eBPF 是我见过的 Linux 中最神奇的技术,没有之一,已成为 Linux 内核中顶级子模块,从 tcpdump 中用作网络包过滤的经典 cbpf,到成为通用 Linux 内核技术的 eBPF,已经完成华丽蜕变,为应用与神奇的内核打造了一座桥梁,在系统跟踪、观测、性能调优、安全和网络等领域发挥重要的角色。为 Service Mesh 打造了具备 API 感知和安全高效的容器网络方案 Cilium,其底层正是基于 eBPF 技术” 1. BPF BPF(Berkeley Packet Filter ...

0
0
发表了博客
2021/01/02 09:08

第一次使用Linux内核的Tracepoint的体验

我并不觉得丢人,一点也不。 我是说我工作这么多年做和Linux内核相关的事,竟然在上上周才第一次使用tracepoint。 这并不奇怪,我不会的东西还多着呢,比方说,我一直强调的,我不会编程,我也不会用git。 言归正传,如果这么多年我都没用过tracepoint,那么作为替代,我用什么呢? 如果我调试内核或者调试内核模块,最最最常用的方法就是在代码里加一条printk(如果是用户态程序,我就加一条printf。),我来告诉你理由: printk...

0
0
发表了博客
2020/12/20 08:25

IPv6的TSO/GRO/GSO及其Linux实现的不妥

很明确的一件事是,IPv6不允许中间设备对报文分片。具体为什么这么设计,就是为了简单高效。因此,IPv6报头简洁了不少。 但TSO貌似并未违背取消IPv6分片的初衷,硬件把一些都处理的妥妥的,在路由软件层看来,一切好像没有发生过一样。 我先简单解释一下TSO和IP分片的区别: 我们来看一个简单的实验,用IPv6从服务端拉一个大文件,服务端和客户端的抓包如下: 在客户端看来,没有IP分片,因此它不需要做分片重组的动作,它实实在...

0
0
2020/12/31 08:31

赠书:“替代Linux”?!全球技术海啸来临!

今天要给大家介绍一项不得了的新技术! 这项技术是近年来Linux 系统技术领域的一大创新,热度攀升迅速。在Linux 内核开发者圈中,甚至有人戏称: “它会替代Linux” 这项技术就是伯克利数据包过滤器,江湖人称—— BPF 技术 什么是BPF? BPF ,全称Berkeley Packet Filter(伯克利数据包过滤器)是近年来Linux 系统技术领域一个巨大的创新。 BPF 于1992 年诞生在美国劳伦斯伯克利国家实验室(B 代表伯克利),论文 The BSD Pack...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
3 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部