-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調優實踐之路
-
>
第一行代碼Android
-
>
JAVA持續交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
深入理解EBPF與可觀測性 版權信息
- ISBN:9787111774808
- 條形碼:9787111774808 ; 978-7-111-77480-8
- 裝幀:平裝-膠訂
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
深入理解EBPF與可觀測性 本書特色
1)多位領域大佬聯袂推薦,對內容和作者予以充分肯定,強烈推薦閱讀本書。2)龍蜥社區操作系統及eBPF專家聯合撰寫,長期一線經驗總結,讓你少走彎路。3)一次性學透eBPF原理與Linux可觀測性,讓性能與安全問題無所遁形。4)系統介紹eBPF的技術生態、底層原理以及五大主流開發框架,并深度剖析應用、網絡、內存、I/O、調度、安全六大關鍵Linux可觀測性實踐,帶你解決實踐難題。
深入理解EBPF與可觀測性 內容簡介
本書由龍蜥社區操作系統及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進行安全防御、監控進程的各種行為等。
深入理解EBPF與可觀測性深入理解EBPF與可觀測性 前言
Preface 前 言
為什么要寫這本書
在當今快速發展的技術領域,Linux內核作為開源操作系統的核心,面臨著越來越多的挑戰。而eBPF作為Linux內核中的一項革命性技術,為我們提供了一種全新的方式來觀察和微調系統的狀態與行為。隨著大模型和人工智能(AI)的迅猛發展,理解和優化操作系統的性能變得尤為重要,這不僅影響著應用程序的表現,還決定著我們如何利用大規模計算資源。
與此同時,隨著云原生技術和微服務應用的不斷進步,可觀測性的技術基石—日志、鏈路追蹤和監控指標,尤其是近年來備受推崇的持續性能優化能力,幾乎都在利用eBPF來實現對應用和服務的觀測。行業中涌現出了如Pixie、OpenTelemetry等優秀的開源項目。在網絡領域,著名的Cilium項目是基于eBPF 開發的,而在安全領域,eBPF的LSM技術正在被應用于開源的安全項目(如Falco)中。eBPF技術已成為云原生社區備受矚目的技術話題之一。
深入理解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與可觀測性 作者簡介
毛文安:阿里云高級技術專家,龍蜥社區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技術創新性應用推廣,擅長系統穩定性問題定位和性能優化。
- >
姑媽的寶刀
- >
小考拉的故事-套裝共3冊
- >
名家帶你讀魯迅:朝花夕拾
- >
唐代進士錄
- >
回憶愛瑪儂
- >
龍榆生:詞曲概論/大家小書
- >
苦雨齋序跋文-周作人自編集
- >
中國人在烏蘇里邊疆區:歷史與人類學概述