《BPF之巔》是2020年電子工業出版社出版的圖書,作者是Brendan,Gregg(布蘭登.格雷格)。
基本介紹
- 中文名:BPF之巔
- 作者:Brendan,Gregg(布蘭登.格雷格)
- 出版時間:2020年12月1日
- 出版社:電子工業出版社
- ISBN:9787121399725
內容簡介,圖書目錄,編輯推薦,作者簡介,
內容簡介
《BPF之巔:洞悉Linux系統和套用性能》作為全面介紹 BPF 技術的圖書,從 BPF 技術的起源到未來發展方向都有涵蓋,不僅全面介紹了 BPF 的編程模型,還完整介紹了兩個主要的 BPF 前端編程框架 — BCC 和 bpftrace,更給出了一系列實現範例,生動展示了 BPF技術的實際能力和未來發展前景。
本書的另一個關注方向是 Linux 系統性能和應用程式性能的調優。內容涉及系統性能調優的策略、工具與實踐案例,不僅介紹了對應的 BPF 工具,還著重介紹了這些工具如何與 Linux 傳統性能工具進行互補,這樣讀者可以有選擇地進行使用。
本書介紹的工具小巧精緻,並提供了簡單易讀的原始碼,它們展示了 BPF 技術的魅力所在 :安全、高效、快捷的系統擴展力。未來 BPF 技術在 Linux 中的套用場景會越來越多,越來越重要。希望本書能在大家學習 BPF 技術並關注它的發展時提供幫助。
圖書目錄
第1章 引 言1
1.1 BPF和eBPF是什麼 1
1.2 跟蹤、嗅探、採樣、剖析和可觀測性分別是什麼 2
1.3 BCC、bpftrace和IO Visor 3
1.4 初識BCC:快速上手 4
1.5 BPF跟蹤的能見度 7
1.6 動態插樁:kprobes和uprobes 8
1.7 靜態插樁:tracepoint和USDT 9
1.8 初識bpftrace:跟蹤open() 10
1.9 再回到BCC:跟蹤open() 13
1.10 小結 15
第2章 技術背景16
2.1 圖釋BPF 16
2.2 BPF 17
2.3 擴展版BPF 18
2.4 調用棧回溯 41
2.5 火焰圖 44
2.6 事件源 48
2.7 kprobes 49
2.8 uprobes 53
2.9 跟蹤點 57
2.10 USDT 62
2.11 動態USDT 66
2.12 性能監控計數器 68
2.13 perf_events 69
2.14 小結 70
第3章 性能分析71
3.1 概覽 71
3.2 性能分析方法論 73
3.3 Linux 60秒分析 77
3.4 BCC工具檢查清單 84
3.5 小結 90
第4章 BCC91
4.1 BCC的組件 92
4.2 BCC的特性 92
4.3 安裝BCC 94
4.4 BCC的工具 96
4.5 funccount 100
4.6 stackcount 105
4.7 trace 110
4.8 argdist 117
4.9 工具文檔 121
4.10 開發BCC工具 126
4.11 BCC的內部實現 127
4.12 BCC的調試 128
4.13 小結 136
第5章 bpftrace137
5.1 bpftrace的組件 138
5.2 bpftrace的特性 139
5.3 bpftrace的安裝 141
5.4 bpftrace工具 143
5.5 bpftrace單行程式 145
5.6 bpftrace的文檔 146
5.7 bpftrace編程 146
5.8 bpftrace的幫助信息 155
5.9 bpftrace的探針類型 157
5.10 bpftrace的控制流 163
5.11 bpftrace的運算符 164
5.12 bpftrace的變數 165
5.13 bpftrace的函式 170
5.14 bpftrace映射表的操作函式 177
5.15 bpftrace的下一步工作 183
5.16 bpftrace的內部運作 185
5.17 bpftrace的調試 186
5.18 小結 190
第6章 CPU.191
6.1 背景知識 192
6.2 傳統工具 197
6.3 BPF工具 210
6.4 BPF單行程式 251
6.5 可選練習 253
6.6 小結 254
第7章 記憶體.255
7.1 背景知識 256
7.2 傳統工具 263
7.3 BPF工具 269
7.4 BPF單行程式 288
7.5 可選練習 289
7.6 小結 290
第8章 檔案系統291
8.1 背景知識 292
8.2 傳統工具 296
8.3 BPF工具 302
8.4 BPF單行程式 353
8.5 可選練習 359
8.6 小結 360
第9章 磁碟I/O361
9.1 背景知識 362
9.2 傳統工具 367
9.3 BPF工具 372
9.4 BPF單行程式 406
9.5 可選練習 409
9.6 小結 410
第10章 網路411
10.1 背景知識 412
10.2 傳統工具 422
10.3 BPF工具 433
10.4 BPF單行程式 507
10.5 可選練習 513
10.6 小結 515
第11章 安全516
11.1 背景知識 516
11.2 BPF工具 523
11.3 BPF單行程式 542
11.4 小結 544
第12章 程式語言.545
12.1 背景知識 545
12.2 C 551
12.3 Java 560
12.4 bash shell 601
12.5 其他語言 614
12.6 小結 619
第13章 應用程式.620
13.1 背景知識 621
13.2 BPF工具 625
13.3 BPF單行程式 662
13.4 BPF單行程式示範 664
13.5 小結 664
第14章 核心665
14.1 背景知識 666
14.2 分析策略 669
14.3 傳統工具 670
14.4 BPF工具 675
14.5 BPF單行程式 697
14.6 BPF單行程式示範 699
14.7 挑戰 700
14.8 小結 700
第15章 容器701
15.1 背景知識 701
15.1.1 BPF 的分析能力 703
15.1.2 挑戰 703
15.1.3 分析策略 706
15.2 傳統工具 706
15.2.1 從主機上分析 706
15.2.2 在容器內分析 707
15.2.3 systemd-cgtop 707
15.2.4 kubectl top 708
15.2.5 docker stats 708
15.2.6 /sys/fs/cgroups 709
15.2.7 perf 709
15.3 BPF工具 710
15.4 BPF單行程式 717
15.5 可選練習 717
15.6 小結 718
第16章 虛擬機管理器719
16.1 背景知識 719
16.2 傳統工具 722
16.3 訪客系統的BPF工具 723
16.4 宿主機BPF工具 732
16.5 小結 737
第17章 其他BPF性能工具738
17.1 Vector和Performance Co-Pilot(PCP) 738
17.2 Grafana和Performance Co-Pilot 747
17.3 Cloudflare eBPF Prometheus Exporter(配合Grafana) 750
17.4 kubectl-trace 752
17.5 其他工具 755
17.6 小結 755
第18章 建議、技巧和常見問題. 756
18.1 典型事件的頻率和額外開銷 756
18.2 以49Hz或99Hz為採樣頻率 760
18.3 黃豬和灰鼠 760
18.4 開發目標軟體 762
18.5 學習系統調用 763
18.6 保持簡單 764
18.7 事件缺失 764
18.8 調用棧缺失 766
18.9 列印時符號缺失(函式名稱) 767
18.10 跟蹤時函式缺失 768
18.11 反饋迴路 769
18.12 被丟掉的事件 769
附錄A bpftrace單行程式770
附錄B bpftrace備忘單775
附錄C BCC工具的開發778
附錄D C.BPF. 793
附錄E BPF指令812
編輯推薦
作為BPF技術的開拓者和專家,Brendan Gregg在本書中不僅展示了超過150個可以立即使用的分析工具和調試工具,對這些工具的套用場景進行了分析,還提供了開發自定義工具的分步指南。在本書中,讀者可學習到如何分析CPU、記憶體、存儲設備、檔案系統、網路、程式語言、應用程式、容器、虛擬機管理器、安全及核心。Gregg帶領讀者由淺入深地了解從基礎工具到進階工具的使用,幫助讀者收集更有用、更深入的技術信息,可以用來最佳化幾乎任何類型的Linux系統和應用程式。
◎學習必備的跟蹤知識,以及兩個核心BPF前端:BCC和bpftrace。
◎掌握超過150個強大的BPF工具的使用方法,其中包括幾十個專為本書開發的工具,全部可以下載使用。
◎掌握有效的分析策略、分析技巧,以及提高分析效率的小竅門。
◎掌握各種程式語言的分析技巧,包括編譯型、JIT編譯型、解釋型語言,如C、Java、bash shell等。
◎學習如何生成各種新的性能指標、調用棧信息,以及自定義延遲直方圖。
◎學習如何使用傳統工具配合BPF分析來快速簡單地實現目標。
◎探索基於BPF構建的高級工具:實現遠程監控的PCP和Grafana組合、eBPF導出器,以及跟蹤Kubernetes的kubectl—trace。
作者簡介
Brendan Gregg(布蘭登.格雷格)
Netflix 高級性能工程師
Brendan Gregg 是 BPF(eBPF)的主要貢獻者,他幫助開發和維護了兩個主要的 BPF 前端框架,開創了 BPF 用於可觀測性的先河,並創建了數十種基於 BPF 的性能分析工具。他編著的暢銷書有《性能之巔:洞悉系統、企業與雲計算》。
譯者介紹
孫宇聰:現任 Facebook 運維工程師經理,曾在谷歌工作多年,任谷歌高級SRE(Senior Site Reliblity Engineer),Coding.net 前技術負責人,譯有《SRE:Google運維解密》《架構整潔之道》等經典暢銷技術圖書。
呂宏利,資深SRE,現任職於谷歌基礎架構部。之前曾負責谷歌搜尋廣告和內容廣告系統運維工作,有多年分散式系統研發與運維經驗。對運維工具平台建設、監控、套用性能跟蹤及分析、數據化運維等方面有深入的研究。
劉曉舟,畢業於北京大學計算機系,現供職於位元組跳動公司系統部,任系統架構師。他在位元組跳動主持構建了基於 eBPF 的大規模性能分析和網路監控診斷平台,閒暇時間也在相關開源社區提交代碼。在加入位元組跳動之前,他有 10 年國家部委電子政務和大數據研究經歷。