本文参考以下博文:
bcc/ebpf使用介绍
一文看懂eBPF、eBPF的使用(超详细)
ebpf之bcc程序入门
特此致谢!
BCC(有时也写作bcc)的全称是BPF Compiler Collection,即BPF编译器集合。BCC是一个开源项目,包含用于构建BPF软件的编译器框架和库。它是BPF(eBPF,下同)的主要前端项目,由BPF开发人员支持,通常是最新的内核跟踪BPF插件首次使用的地方。BCC还包含70多个现成的BPF性能分析和故障排除工具。
提到BCC,就不能不提到ePBF。eBPF是linux trace框架的一部分(trace的介绍可以参考linux tracers使用介绍),trace框架允许我们在内核态/用户态的代码中加钩子,并定义了一些预置的钩子函数,以实现一些基本的调试功能。而对于需要比较灵活的处理的情况,则可以使用ebpf,允许用户自定义钩子函数,进行例如信息的过滤、统计、计算等处理。
BCC的github地址是:https://github.com/iovisor/bcc。
主页面如下所示:
再来看一下官网中关于BCC的介绍:
BCC是一个用于创建高效内核跟踪和操作程序的工具包,包括一些有用的工具和示例。它使用了扩展的BPF(伯克利数据包过滤器),正式名称为eBPF,这是Linux 3.15中首次添加的一项新功能。BCC使用的大部分内容都需要Linux 4.1及更高版本。
BCC使得BPF程序更易于编写,内核使用C语言(包括LLVM的C包装器),前端使用Python和lua。它适用于许多任务,包括性能分析和网络流量控制。
BCC的总体概览图如下所示: