容器实战高手课
李程远
eBay 总监级工程师,云平台架构师
24647 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 31 讲
容器实战高手课
15
15
1.0x
00:00/00:00
登录|注册

加餐06 | BCC:入门eBPF的前端工具

编译出来的程序可以在不同版本内核上运行
适用于不同版本的内核
Compile Once – Run Everywhere
集成clang/llvm编译器
用户态代码
C代码
softirqs
opensnoop
ebpf-exporter
bpftrace
尝试编译和运行BCC项目中的工具
libbpf+BPF CO-RE
BPF CO-RE技术
libbcc库
代码结构
BCC工具示例
安装BCC软件包
提供Python/Lua/C++接口
提供完整工具集
其他eBPF前端工具
思考题
BCC工具的发展
BCC工具的工作原理
使用BCC工具
前端工具
BCC

该思维导图由 AI 生成,仅供参考

你好,我是程远。
今天是我们专题加餐的最后一讲,明天就是春节了,我想给还在学习的你点个赞。这里我先给你拜个早年,祝愿你牛年工作顺利,健康如意!
上一讲,我们学习了 eBPF 的基本概念,以及 eBPF 编程的一个基本模型。在理解了这些概念之后,从理论上来说,你就能自己写出 eBPF 的程序,对 Linux 系统上的一些问题做跟踪和调试了。
不过,从上一讲的例子里估计你也发现了,eBPF 的程序从编译到运行还是有些复杂。
为了方便我们用 eBPF 的程序跟踪和调试系统,社区有很多 eBPF 的前端工具。在这些前端工具中,BCC 提供了最完整的工具集,以及用于 eBPF 工具开发的 Python/Lua/C++ 的接口。那么今天我们就一起来看看,怎么使用 BCC 这个 eBPF 的前端工具。

如何使用 BCC 工具

BCC(BPF Compiler Collection)这个社区项目开始于 2015 年,差不多在内核中支持了 eBPF 的特性之后,BCC 这个项目就开始了。
BCC 的目标就是提供一个工具链,用于编写、编译还有内核加载 eBPF 程序,同时 BCC 也提供了大量的 eBPF 的工具程序,这些程序能够帮我们做 Linux 的性能分析和跟踪调试。
这里我们可以先尝试用几个 BCC 的工具,通过实际操作来了解一下 BCC。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

BCC工具链是一个强大的eBPF工具,提供Python/Lua/C++接口,方便开发者编写、编译和加载eBPF程序,用于Linux系统的性能分析和跟踪调试。安装BCC软件包后,用户可以获得100多个小工具,覆盖了Linux内核中各个模块,可用于最基本的profile。BCC工具的输出模式主要包括事件模式和直方图模式,分别用于事件跟踪和执行时间统计。其工作原理是基于eBPF内核态的代码,以Python字符串的形式加在代码中,定义了eBPF Maps和eBPF Programs的函数。未来发展趋势是向BPF CO-RE模式转变,实现编译出来的eBPF程序可以在不同版本的内核上运行。除了BCC,还有其他eBPF前端工具如bpftrace和ebpf-exporter,它们可以帮助用户对容器云平台上的节点做内核级别的监控与诊断。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《容器实战高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 莫名
    老师提到过一个比较好用的网络包追踪工具:https://github.com/yadutaf/tracepkt。 不过这个是基于 BCC 编写的,阅读起来有些晦涩。假期抽空编写了一个简单的 bpftrace 版本(修复了 network ns 为 0、interface 为空的问题,不过没有根据 pid 过滤),供大家参考下:https://github.com/xingfeng2510/mybpf/blob/main/tracepkt.bt bpftrace 作为更高级的 eBPF 语言,写起来简单很多,而且容易看懂。

    作者回复: 是的,用bpftrace入门要简单些。

    2021-02-18
    9
  • chon
    看完了,谢谢老师,收获很多,后面还要刷2次并动手实验才能掌握好。

    作者回复: @chon 是的,动手实验很重要。

    2021-02-24
    5
  • JianXu
    不禁想起以前志腾说 很多事情都是从论文开始的,一篇论文然后演化出一门技术,接着围绕这门技术演化出一个产品,逐步演化出一家公司。我总觉得这背后有一些规律,只是自己还没有掌握这门规律。
    2022-08-27归属地:上海
    2
  • 事已至此开始撤退
    为什么没有评分呀,这门课,满分无疑了,全部干货,没有虚的东西。
    2023-03-08归属地:上海
    1
  • 我来也
    祝老师新年快乐!
    2021-02-12
    1
  • Joe Black
    春节快乐!学完课程后,感觉终究还是有必要认认真真看看内核的数据,还是需要系统化的学习下。
    2021-02-11
    1
  • 无名氏
    春节快乐
    2021-02-10
    1
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部