作为一名程序员,我喜欢紧随内核和估算研究方面的各类最新技术。当第一次接触到BPF和XDP(eXpressDataPath)技术时,我就被深深地吸引了。我十分高兴本书聚焦于BPF和XDP技术,让更多的人在项目中使用这么优秀的技术。
首先说说我的背景以及我为何这么喜欢研究内核。我曾与David一起兼任Docker核心维护人员,主要负责使用iptables为容器提供过滤和路由逻辑。我递交的第一个PR就是修补CentOS上不同版本iptables行参数不兼容而执行失败的问题。假如你和我一样,常常开发和使用行工具,这么你也一定会碰到过好多诸这么类的问题。除此之外,在主机上建立成千上万的规则也会让iptables不堪重负,我须要解决由此造成的性能问题。
当我接触BPF和XDP工具后,简直如获珍宝。我不再纠结于使用iptables遇见的类似问题。另外,我十分高兴地据悉内核社区甚至计划使用BPF()代替iptables,同时,容器网路工具Cilium()也正在采用BPF和XDP进行完善。
不仅可以实现愈发优秀的iptables的功能外,BPF还可以实现更多的功能,例如,帮助我们跟踪系统调用、内核函数和用户态的程序。Linux系统上的bpftrace()行工具实现了类似于DTrace的强悍的功能。bpftrace可以跟踪所有正在打开的文件句柄、打开文件的进程,统计程序的系统调用,跟踪OOMkillerarm linux,等等linux 最小内核浏览器,一切尽在把握之中。BPF和XDP也被用在Cloudflare()和Facebook的负载均衡器()上arm linux,用于防御DDoS功击。XDP在网路过滤数据包方面表现得相当出众linux 最小内核浏览器,在本书的XDP和网路部份可以了解到更多的信息。
我有幸在Kubernetes社区认识了Lorenzo,他开发的kubectl-trace()工具可以让用户在Kubernetes集群上轻松地运行多样化的跟踪程序。
就个人而言,我也十分喜欢使用BPF编撰多样化的跟踪器,向朋友证明她们编撰的软件须要进行性能优化,或要求她们降低高昂的系统调用次数以提高程序性能。不要高估通过数据协助他人进行系统调优的威力。不要担忧,本书将会指导你编撰第一个跟踪程序,并帮助你进行系统性能优化。BPF之前的工具都是通过使用有损队列,将样本集发送到用户空间进行聚合,而BPF则可以在内核空间直接基于风波源建立直方图和过滤,这些机制十分适用于生产环境。
我职业生涯的一半时间都在从事工具开发。最好的工具是提供自治,开发者可以使用工具提供的插口进行自治,工具的使用场景甚至可能超出工具开发者的设计看法。引用RichardFeynman的话:“我很早就意识到晓得事情名子和晓得事情本身的区别。”到现今为止,我们应当早已晓得了BPF的名子,并了解了BPF能给我们带来帮助。
我喜欢这本书是由于它介绍了使用BPF创建新工具所需把握的知识。阅读本书并完成练习后,你将拥有使用BPF的超级能力。你可以将BPF放置在工具箱中,在最须要时让其发挥作用。通过本书,你除了能了解到BPF技术,并且也能学习到BPF的工作原理。本书可以帮你打开思路来探求使用BPF进行各类实践的途径。
这个欣欣向荣的生态系统十分令人激动!我希望越来越多的人开始使用BPF,并将BPF的力量显得更加大大。我很愿意了解本书的读者最终会采用BPF建立哪些,无论是拿来跟踪软件错误、自定义防火墙还是编撰红外解码()的。请让我们晓得你怎么使用BPF进行完善!
—JessieFrazelle
本文原创地址://gulass.cn/lxtsdbmlhcsb.html编辑:刘遄,审核员:暂无