写在前面
BCC不是我们的终极目标,但是BCC是目前主流中最完善最流行,而且使用最广泛的框架。以及基于BCC框架开发的工具更是数不胜数。了解BCC对于我们充分利用eBPF的能力有非常大的帮助。在此之上,我们可以根据BCC的知识脉络,再结合我们的硬件平台,底层系统,我们在最终选择最合适的框架进行开发。
一,BCC再介绍
在第一章我们介绍过BCC框架,它是一个ebpf开发工具链,我们可以使用它编写python程序,并将eBPF程序嵌入其中。该框架主要用于应用程序和系统的分析/跟踪等场景,其中eBPF程序用于收集统计数据或生成事件,而用户空间中的对应程序收集数据并以易于理解的形式展示。通过运行python程序将生成eBPF字节码并将其加载到内核中去。
本章的前面几节也介绍了如何在Android中使能BCC,本章接下来会一一介绍如何使用BCC。来了解下BCC为我们提供了哪些示例和工具,如果能对这些工具有所了解,我们在今后开的eBPF开发中就会游刃有余了。
二,Tracing
2.1 示例
在BCC中,有以下示例来帮助我们最终系统的运行时指标。该实例位于BCC仓库的examples目录中。
- examples/tracing/bitehist.py: Block I/O 大小直方图。
- examples/tracing/disksnoop.py: 用于最终块设备的IO延迟。
- examples/hello_world.py: 为新进程打印 "Hello, World!" 。
- ex