写在前面
近年来,eBPF发展比较快,越来越受很多大厂的追捧,一些Top手机厂商,云厂商都有针对性的开发了一些实用工具来帮助更好的监控系统基础能力和性能。作为操作系统的从业者,我们很难不去学习,尤其在“降本增效”的当下,eBPF能为我们的开发和优化带来颠覆性的影响。虽然很难去综合地针对每一部分去拆解,去学习。但还是有一些入门的技巧。接下来我们会系统地来讨论,为什么eBPF那么地受追捧,功能那么的强大。
当然我们也会参照官网运行一些示例来帮助更好的理解eBPF的编译,加载以及校验和运行。如在经典的“HelloWorld”程序中引入eBPF概念。
大多数同学可能最关注的是如何编写用户态的eBPF程序,以及eBPF在用户空间和内核之间的接口,这个也是我们讨论的重点。也有很多开发者遇到了不断更新的eBPF演进情况下的eBPF程序的移植问题。
高阶部分我们会讨论不同类型的eBPF程序的开发与运行。关于网络相关功能的eBPF程序也是我们讨论的一部分,因为从bpf的演进路线上,network是至关重要的一环。
最后也会讨论下eBPF的发展前景。
一,学习eBPF需要具备哪些知识?
eBPF听起来门槛很高,但实际上操作起来并没有那么复杂。通过众多内核开发者的努力,eBPF已经成为了内核独立的子系统,并且具有相当大的影响力。以及各种稳定的开发工具链,这大大减轻了开发者的工作量,以及降低了入门的门槛。
但一些基本的linux shell指令是必须要熟练使用的。并且我们也要了解是如何把源码编译成可以在linux下运行的可执行程序的,也就是说要能读懂Makefile语法,接下来的实例中也会有很对例子给我们参考,你只需要比葫芦画瓢即可。
一定的语言基础也是要有的,比如Python,C和Go等。
二,eBPF是Linux专属的吗?
ePBF一开始就是为Linux开发的,因此在其他操作系统上并不兼容。当然,微软也针对起Windows系列开发了相应的eBPF模块。而我们整个系列的专栏都是针对Linux环境下的eBPF来展开的。
那么,让我们一起走进eBPF的世界吧。