docs: restore tutorial introductions

This commit is contained in:
LinuxDev9002
2026-07-22 02:46:15 -07:00
parent 2cdcd8b0de
commit 237fab199f
4 changed files with 6 additions and 10 deletions

View File

@@ -1,10 +1,8 @@
# eBPF 教程:使用 fsession 追踪慢速 vfs_read 调用
当一个文件服务出现读延迟尖峰时,应用层计时只能告诉你请求变慢了,却无法区分是内核在 `vfs_read` 中耗时还是用户态逻辑耗时。真正有用的问题是:哪个线程发起了读操作、涉及哪个 VFS 对象、请求了多少字节、调用返回了什么、这一次 `vfs_read` 花了多长时间?
当一个文件服务出现读延迟尖峰时,应用层计时只能告诉你请求变慢了,却无法区分是内核在 I/O 上阻塞还是用户态逻辑耗时。真正有用的问题是:哪个线程发起了读操作、请求了多少字节、调用返回了什么、这一次 `vfs_read` 花了多长时间?
本教程展示如何使用 Linux 7.0 引入的 **fsession** 机制测量 `vfs_read` 调用延迟。fsession 是一种新的 eBPF 程序类型,它在函数进入时执行一次、返回时再执行一次,并提供内置的调用级存储来关联这两个阶段。工具会在函数进入时记录时间戳、返回时计算延迟,按进程和阈值过滤后,通过 ring buffer 上报对象类型和 `major:minor:inode` 身份。
`vfs_read` 不只处理普通文件,pipe、字符设备等文件对象也会经过它。因此慢事件表示某次 `vfs_read` 较慢,并不必然说明存储较慢。应结合输出中的 `type` 和 `major:minor:inode` 身份,区分普通文件读、FIFO 以及其他 VFS 对象。
本教程展示如何使用 Linux 7.0 引入的 **fsession** 机制测量 `vfs_read` 调用延迟。fsession 是一种新的 eBPF 程序类型,它在函数进入时执行一次、返回时再执行一次,并提供内置的调用级存储来关联这两个阶段。我们构建的工具会在函数进入时记录时间戳、返回时计算延迟,按进程和阈值过滤后,通过 ring buffer 上报慢读事件。
> 完整源码:<https://github.com/eunomia-bpf/bpf-developer-tutorial/tree/main/src/52-fsession-latency>