eBPF Tracing 入门教程与实例

本文提供了一篇关于eBPF tracing的详细教程,涵盖从初学者到高级开发者的阶段。文章介绍了eBPF、bcc、bpftrace和iovisor的基本概念,并给出了丰富的示例和工具,引导读者逐步掌握eBPF tracing技术。从运行bcc工具开始,到开发bpftrace工具,再到深入开发bcc工具并参与开源社区贡献。
摘要由CSDN通过智能技术生成

在 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),安全(security),程序分析追踪(tracing) 和 设备驱动(device drivers) 等。其中,诸如 tracing 等功能在网络上已经有很多资料。这里的术语 tracing 特指可以生成 per-event 信息的性能分析和观察工具,例如 tcpdumpstrace就是两个常用的 tracer

这篇文章将着重于 eBPF tracing 的学习,并分为 beginner, intermediate, advanced 三个阶段,大纲如下:

  • Beginner: 运行 bcc 工具
  • Intermediate: 开发 bpftrace 工具
  • Advanced: 开发 bcc 工具,并贡献社区

Beginner

1. eBPF, bcc, bpftrace, iovisor 是什么

eBPF 之于 Linux 一定程度上如同 JavaScript 之于 HTML。JavaScript 使得网页不再是静态的,它可以让你编写程序来监听鼠标点击等事件,而且程序运行在浏览器的安全虚拟环境中;类似的,有了 eBPF,内核也可以不是固定的(fixed),你可以编写程序来监听 disk I/O 事件并执行相关动作,而且程序运行在内核的安全虚拟环境中。实际上,eBPF 更像是运行 JavaScript 的 V8 引擎,而不是像 JavaScript 本身。eBPF 是 Linux Kernel 的一部分。

直接 eBPF 编码难于上青天,就好比直接编写 V8 字节码。但是没有人直接写 V8 字节码,他们用 JavaScript,或者基于 JavaScript 的框架(jQuery, Angular, React 等)。eBPF 也是一样,人们通过框架来使用 eBPF。对于 tracing 来说,主要的框架就是 bcc 和 bpftrace,这两个框架并不在内核代码中,他们在名为 iovisor 的 Linux Foundation project 中维护。

2. eBPF tracing 示例

tcplife是一个基于 eBPF 的工具,可以显示完整的 TCP session, 以及对应的进程号(PID) &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值