
包邮深入理解EBPF与可观测性

- ISBN:9787111774808
- 装帧:平装-胶订
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:336
- 出版时间:2025-03-01
- 条形码:9787111774808 ; 978-7-111-77480-8
本书特色
1)多位领域大佬联袂推荐,对内容和作者予以充分肯定,强烈推荐阅读本书。2)龙蜥社区操作系统及eBPF专家联合撰写,长期一线经验总结,让你少走弯路。3)一次性学透eBPF原理与Linux可观测性,让性能与安全问题无所遁形。4)系统介绍eBPF的技术生态、底层原理以及五大主流开发框架,并深度剖析应用、网络、内存、I/O、调度、安全六大关键Linux可观测性实践,带你解决实践难题。
内容简介
本书由龙蜥社区操作系统及eBPF专家联合撰写,带领读者一次性学透eBPF原理与Linux可观测性,让性能与安全问题无所遁形,效果立竿见影。具体来说,本书系统介绍eBPF技术生态、特性、五大主流开发框架,并深度剖析应用、网络、内存、I/O、调度、安全六大关键Linux可观测性实践。 本书共9章,从逻辑上分为两部分。**部分为eBPF基础(第1~3章):第1章概述eBPF技术的发展历程和应用场景;第2章深入解析eBPF的指令集、辅助函数及程序类型设计原理;第3章介绍如何使用libbpf、BCC、eunomia-bpf、Coolbpf等工具开发eBPF程序,尤其是BTF和CO-RE技术的应用。第二部分为eBPF可观测性实践(第4~9章),第4章探讨eBPF在用户态应用层面的可观测实践,如Java应用的GC观测;第5章讲解内核网络收发包流程及使用eBPF分析网络抖动的方法;第6章介绍内存性能瓶颈的优化方法,包括使用eBPF检测内存分配延迟和内存泄漏;第7章分析I/O子系统的原理和性能瓶颈点,并介绍使用eBPF监测I/O延迟分布和I/O卡顿问题;第8章介绍eBPF在调度系统上的观测实践,包括长时间关中断和持续性能追踪等;第9章则聚焦于eBPF在系统安全上的实践,如使用LSM进行安全防御、监控进程的各种行为等。
前言
Preface 前 言
为什么要写这本书
在当今快速发展的技术领域,Linux内核作为开源操作系统的核心,面临着越来越多的挑战。而eBPF作为Linux内核中的一项革命性技术,为我们提供了一种全新的方式来观察和微调系统的状态与行为。随着大模型和人工智能(AI)的迅猛发展,理解和优化操作系统的性能变得尤为重要,这不仅影响着应用程序的表现,还决定着我们如何利用大规模计算资源。
与此同时,随着云原生技术和微服务应用的不断进步,可观测性的技术基石—日志、链路追踪和监控指标,尤其是近年来备受推崇的持续性能优化能力,几乎都在利用eBPF来实现对应用和服务的观测。行业中涌现出了如Pixie、OpenTelemetry等优秀的开源项目。在网络领域,著名的Cilium项目是基于eBPF 开发的,而在安全领域,eBPF的LSM技术正在被应用于开源的安全项目(如Falco)中。eBPF技术已成为云原生社区备受瞩目的技术话题之一。
目录
前言
第1章 eBPF的发展与应用1
1.1 eBPF概述1
1.1.1 Linux的跟踪与诊断技术简介1
1.1.2 eBPF的发展史3
1.1.3 eBPF与cBPF的功能区别4
1.1.4 eBPF与内核模块5
1.1.5 eBPF的优势与劣势5
1.2 eBPF应用场景6
1.2.1 eBPF跟踪与性能分析7
1.2.2 eBPF与可观测8
1.2.3 eBPF与网络14
1.2.4 eBPF与安全14
1.3 eBPF基础架构16
1.3.1 eBPF加载流程和相关组件17
1.3.2 eBPF的JIT编译原理18
1.3.3 eBPF的挂载与执行22
1.4 本章小结22
第2章 eBPF的特性解析23
2.1 eBPF指令架构23
2.1.1 cBPF指令集24
2.1.2 eBPF指令集25
2.1.3 使用C语言编写eBPF程序34
2.1.4 使用汇编语言编写eBPF程序35
2.1.5 使用字节码编写eBPF程序37
2.2 eBPF系统调用40
2.2.1 eBPF系统调用的函数原型40
2.2.2 eBPF系统调用的类型40
2.2.3 eBPF系统调用的数据
结构解析41
2.3 eBPF辅助函数43
2.3.1 eBPF辅助函数的设计43
2.3.2 eBPF辅助函数的实现47
2.4 eBPF程序类型设计49
2.4.1 eBPF程序类型49
2.4.2 验证器接口设计51
2.4.3 测试接口设计52
2.4.4 卸载接口设计53
2.5 跟踪诊断类eBPF程序54
2.5.1 kprobe/kretprobe类程序55
2.5.2 uprobe/uretprobe类程序58
2.5.3 tracepoint类程序60
2.5.4 perf事件类程序63
2.6 网络处理类:XDP程序66
2.6.1 XDP基本原理67
2.6.2 XDP应用场景68
2.6.3 XDP内核解析69
2.7 本章小结73
第3章 eBPF开发框架74
3.1 libbpf74
3.1.1 使用libbpf开发eBPF程序75
3.1.2 BPF类型格式79
3.1.3 CO-RE功能82
3.2 BCC85
3.2.1 环境配置86
3.2.2 使用BCC开发eBPF程序88
3.2.3 编译运行90
3.3 bpftrace90
3.3.1 环境配置91
3.3.2 使用bpftrace开发eBPF程序92
3.3.3 编译运行95
3.4 eunomia-bpf96
3.4.1 环境配置97
3.4.2 使用eunomia-bpf?开发
eBPF程序98
3.4.3 编译运行100
3.5 Coolbpf?100
3.5.1 环境配置102
3.5.2 使用Coolbpf开发eBPF
程序102
3.5.3 编译运行103
3.6 eBPF开发框架对比104
3.7 本章小结105
第4章 基于eBPF的应用
可观测实践106
4.1 使用uprobe/USDT观测应用程序106
4.1.1 uprobe:用户空间的动态
追踪工具106
4.1.2 USDT:用户空间的静态
追踪点技术108
4.2 Nginx函数延迟观测与性能分析109
4.2.1 基于eBPF分析函数延迟110
4.2.2 Nginx中与性能相关的
关键函数113
4.2.3 测试Nginx的函数延迟115
4.3 Java应用的GC观测116
4.3.1 GC策略简介与问题
排查示例116
4.3.2 通过eBPF实现GC观测117
4.4 MySQL慢查询监测与排障实践123
4.4.1 慢查询的常见原因124
4.4.2 慢查询监测方法与示例场景124
4.4.3 利用bpftrace程序追踪
MySQL查询126
4.5 观测SSL/TLS明文数据128
4.5.1 TLS的工作原理128
4.5.2 OpenSSL API工作机制分析129
4.5.3 sslsniff的eBPF内核
代码编写130
4.5.4 sslsniff的用户态代码分析135
4.5.5 编译与运行sslsniff工具138
4.6 使用eBPF跟踪Go协程状态139
4.6.1 跟踪Go协程状态的eBPF
内核代码140
4.6.2 运行eBPF程序追踪Go
协程状态141
4.7 本章小结142
第5章 基于eBPF的网络
可观测实践143
5.1 内核网络协议栈143
5.1.1 网络发包流程143
5.1.2 网络收包流程159
5.1.3 内核网络抖动问题分析168
5.2 网络可观测实践172
5.2.1 HTTP流量统计172
5.2.2 TCP连接信息和往返
时间分析179
5.2.3 XDP实现可编程包处理187
5.2.4 基于eBPF的流量控制实践189
5.2.5 基于sockmap进行数据转发192
5.2.6 基于sockops监测服务
响应延迟205
5.2.7 Virtio网卡队列可观测213
5.3 本章小结218
第6章 基于eBPF的内存
可观测实践219
6.1 系统内存的申请流程219
6.2 内存性能瓶颈点与解决思路222
6.2.1 常见的内存性能瓶颈222
6.2.2 内存性能瓶颈诊断方法225
6.3 实战:页面错误监控227
6.3.1 什么是页面错误227
6.3.2 有关页面错误的跟踪点228
6.3.3 页面错误事件可观测
实现方案229
6.4 实战:使用cachetop分析
文件缓存233
6.4.1 使用常规方法分析文件缓存233
6.4.2 cachetop实现原理234
6.4.3 c
作者简介
毛文安:阿里云高级技术专家,龙蜥社区eBPF技术探索SIG(特别兴趣小组)及“酷玩BPF”公众号负责人,龙蜥社区“eBPF技术实践白皮书”主要作者,也是系统智能运维平台SysOM以及eBPF开发功能库Coolbpf的架构师。具有十余年Linux操作系统开发、维护及性能调优经验,目前专注内核网络、AI等新特性的研究与实践。
郑昱笙:开源维护者、UCSC博士生、eunomia-bpf开源社区共同创办人。主导开发了bpftime(用户态eBPF运行时)等项目,拓展了eBPF在用户态的应用,目前积极探索eBPF在大模型(LLM)推理优化等领域的潜在应用。长期活跃于开源社区,并多次担任KubeCon、Linux Plumber等知名会议的演讲者。
程书意:阿里云开发工程师,龙蜥社区eBPF技术探索SIG核心成员,Coolbpf项目维护者,龙蜥社区“eBPF技术实践白皮书”作者之一。专注于内核网络优化与eBPF技术,擅长系统性能调优和故障排查,热衷技术分享与推广。
廖肇燕:阿里云技术专家、龙蜥社区“eBPF技术实践白皮书”作者之一。拥有十余年Linux开发运维经验,专注于内核问题深度定位与eBPF技术创新性应用推广,擅长系统稳定性问题定位和性能优化。
-
造神:人工智能神话的起源和破除 (精装)
¥32.7¥88.0 -
大数据技术导论(第2版)
¥28.9¥41.0 -
人人都能学AI
¥40.4¥68.0 -
人工智能
¥20.3¥55.0 -
系统架构设计师教程(第2版)(全国计算机技术与软件专业技术资格(水平)考试指定用
¥102.7¥158.0 -
过程控制技术(第2版高职高专规划教材)
¥27.6¥38.0 -
数据结构基础(C语言版)(第2版)
¥41.7¥49.0 -
WPS OFFICE完全自学教程(第2版)
¥97.3¥139.0 -
智能视频目标检测与识别技术
¥43.5¥59.0 -
人工智能基础及应用
¥36.0¥48.0 -
深入浅出软件架构
¥117.2¥186.0 -
计算机网络基础(微课版)
¥39.0¥55.0 -
剪映:即梦AI绘画与视频制作从新手到高手
¥66.0¥89.0 -
红蓝攻防 技术与策略(原书第3版)
¥95.9¥139.0 -
Web前端开发基础
¥37.5¥57.0 -
软件设计的哲学(第2版)
¥52.0¥69.8 -
人工智能的底层逻辑
¥58.7¥79.0 -
软件工程理论与案例
¥63.4¥99.0 -
剪映+PREMIERE+AIGC 短视频制作速成
¥73.5¥98.0 -
剪映AI
¥52.0¥88.0