eBPF (扩展的伯克利数据包过滤器) 是 Linux 内核的一种革命性技术,允许用户在内核空间执行自定义程序,而不需要修改内核源代码或加载任何内核模块。这使得开发人员可以非常灵活地对 Linux 系统进行观测、修改和控…
如果您希望学习更多关于 eBPF 的知识和实践,可以访问我们的教程代码仓库https://github.com/eunomia-bpf/bpf-developer-tutorial或 网站https://eunomia.dev/zh/tutorials/
相反,对于大量顺序 I/O 的应用,如何最大化磁盘的连续读写速度则更为关键。 在本教程的后续部分,我们将详细探讨如何使用 eBPF 工具来实时监控和统计这两种类型的磁盘 I/O。这不仅可以帮助我们更好地理解系统的 I/O 行为,还可以为进一步的性能优化提供有力的数据支持。 Biopattern Biopattern 可以统计随机/顺序磁...
本文是 eBPF 入门开发实践教程的第七篇,主要介绍如何捕获 Linux 内核中进程执行的事件,并且通过 perf event array 向用户态命令行打印输出,不需要再通过查看 /sys/kernel/debug/tracing/trace_pipe 文件来查看 eBPF 程序的输出。通过 perf event array 向用户态发送信息之后,可以进行复杂的数据处理和分析。 perf buf...
ebpf入门开发实践教程 eBPF入门开发实践教程 介绍 •什么是eBPF? •eBPF的应用领域和优势 环境搭建 1.在Linux系统上安装eBPF开发环境 2.配置eBPF编译器和相关工具 编写第一个 3.编写eBPF程序的基本结构 4.加载和运行eBPF程序的方法 eBPF 5.使用eBPF捕获网络数据包 6.分析和统计网络流量 7.基于eBPF的防火墙功能...
eBPF 入门开发实践教程十一:在 eBPF 中使用 libbpf 开发用户态程序并跟踪 exec() 和 exit() 系统调用,Bootstrap是一个使用libbpf的),以了解每个进程何时退出。
本教程将指导您使用 libbpf 和 eBPF 程序进行性能分析。我们将利用内核中的 perf 机制,学习如何捕获函数的执行时间以及如何查看性能数据。 libbpf 是一个用于与 eBPF 交互的 C 库。它提供了创建、加载和使用 eBPF 程序所需的基本功能。本教程中,我们将主要使用 libbpf 完成开发工作。perf 是 Linux 内核中的性能分...
本文是 eBPF 入门开发实践教程的第六篇,主要介绍如何使用 uprobe 捕获 bash 的 readline 函数调用。 什么是uprobe uprobe是一种用户空间探针,uprobe探针允许在用户空间程序中动态插桩,插桩位置包括:函数入口、特定偏移处,以及函数返回处。当我们定义uprobe时,内核会在附加的指令上创建快速断点指令(x86机器上为int3指...
然而,用户空间应用程序的 CO-RE 实践目前尚不完善。本文将介绍一种新方法,利用 CO-RE 为用户空间应用程序确保 eBPF 程序在不同应用版本间的兼容性,从而避免了多次编译的需求。例如,在从加密流量中捕获 SSL/TLS 明文数据时,你或许不需要为每个版本的 OpenSSL 维护一个单独的 eBPF 程序。
eBPF 入门实践教程七:捕获进程执行/退出时间,通过 perf event array 向用户态打印输出 eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具,它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。 本文是 eBPF 入门开发实践指南的第七篇,主要介绍如何捕获 Linux 内核中进...