官术网_书友最值得收藏!

Preface
前言

為什么要寫這本書

在當今快速發展的技術領域,Linux內核作為開源操作系統的核心,面臨著越來越多的挑戰。而eBPF作為Linux內核中的一項革命性技術,為我們提供了一種全新的方式來觀察和微調系統的狀態與行為。隨著大模型和人工智能(AI)的迅猛發展,理解和優化操作系統的性能變得尤為重要,這不僅影響著應用程序的表現,還決定著我們如何利用大規模計算資源。

與此同時,隨著云原生技術和微服務應用的不斷進步,可觀測性的技術基石——日志、鏈路追蹤和監控指標,尤其是近年來備受推崇的持續性能優化能力,幾乎都在利用eBPF來實現對應用和服務的觀測。行業中涌現出了如Pixie、OpenTelemetry等優秀的開源項目。在網絡領域,著名的Cilium項目是基于eBPF開發的,而在安全領域,eBPF的LSM技術正在被應用于開源的安全項目(如Falco)中。eBPF技術已成為云原生社區備受矚目的技術話題之一。

盡管eBPF技術備受關注,但人們對其底層原理,特別是它與內核的關系,理解得并不充分。市場上關于這方面的書籍非常少,特別是專門討論eBPF技術在Linux內核各子系統中應用的書籍更是鳳毛麟角。為此,我們編寫了本書,內容涵蓋eBPF的指令架構、CO-RE編程原理,并結合Linux內核層面的應用、網絡、內存、I/O、調度、安全進行原理和代碼級別的深入探討,使讀者能夠知其所以然。

本書特色

本書具有以下特色。

1.為專業開發者量身定制

本書專為從事可觀測系統開發、云原生應用系統及操作系統開發、網絡及安全領域開發工作的eBPF用戶打造。本書將深入探討eBPF的底層工作原理,詳細介紹Linux各個子系統的關鍵技術和數據結構。結合eBPF技術,本書將幫助你解決系統運維中遇到的性能瓶頸和故障定位等問題,并提供豐富的實戰案例。

2.滿足現代開發需求

許多開發者使用Java、Go等高級語言構建上層應用,但往往忽略了底層系統的重要性,面對CPU性能瓶頸等問題時,常常感到無從下手。本書將幫助你在開發可觀測性系統時,更好地定位和解決內核層面的問題。

3.深入Linux內核,掌握核心技術

本書不僅深入探討eBPF的指令架構和開發方式,還將結合Linux的網絡、I/O、內存和調度子系統進行實踐。你不僅能深入了解Linux內核的數據結構,還能通過eBPF掌握解析Linux內核狀態和行為的方法,特別是復雜的定位和性能分析技巧。

4.結合實際案例,提升系統效能

在探索eBPF時,我們將不局限于技術層面的介紹,還會結合實際案例展示如何利用eBPF監測和優化Linux內核的性能,進而支持系統的高效運作。底層系統的良好運作是實現高效業務的基礎。

讀者對象

本書的目標讀者包括應用開發者、eBPF技術愛好者及可觀測領域、操作系統領域的從業人員。

如何閱讀本書

雖然在介紹每個Linux子系統可觀測實踐之前,本書盡量概述了該子系統的技術原理以及eBPF程序可能用到的數據結構,但還是建議讀者在閱讀之前,先行了解操作系統的一些基礎概念,比如進程創建、虛擬文件系統、內存分配和釋放、socket通信等內容。

本書從邏輯上分為兩大部分,共9章。

第一部分為eBPF基礎(第1~3章),介紹eBPF的應用場景和發展歷程、指令架構及eBPF的編程方法。

第1章概述了eBPF技術的發展歷程,介紹了它在網絡、安全、故障診斷和性能分析等領域的應用場景,并闡述了eBPF的基礎架構。本章旨在讓讀者全面了解eBPF是什么、能實現哪些功能,以及如何將其應用到各自的學習、研究和工作中。

第2章詳細介紹了eBPF關鍵特性解析,包括eBPF指令集、輔助函數和程序類型設計原理,幫助讀者更深刻地理解和認識eBPF底層原理,特別是在Linux內核中的具體實現。

第3章介紹如何使用libbpf、BCC、eunomia-bpf、Coolbpf等開源項目開發eBPF程序,特別是詳細介紹了BTF和CO-RE技術,幫助讀者進一步掌握獨立開發eBPF程序的技能。

第二部分為eBPF可觀測性實踐(第4~9章),介紹eBPF在Linux的用戶態應用、內核網絡、內存、I/O、調度及安全方面的可觀測實踐案例。

第4章介紹如何使用eBPF在用戶應用層面進行可觀測實踐,如Java應用的GC觀測,幫助讀者掌握使用eBPF分析微服務應用的性能、延遲、報文數據的方法,進一步理解eBPF的能力。

第5章介紹內核網絡的收發包流程、網絡抖動問題分析,以及內核網絡的可觀測性實踐,幫助讀者掌握使用eBPF分析網絡抖動的方法。

第6章主要介紹內存性能瓶頸的優化方法,幫助讀者掌握使用eBPF對內存分配延遲、內存泄漏等常見問題進行觀測的方法。

第7章介紹I/O子系統的原理和性能瓶頸點,幫助讀者掌握使用eBPF對I/O延遲分布、I/O卡頓等問題進行觀測的方法。

第8章介紹eBPF在調度系統上的觀測實踐,如長時間關中斷、持續性能追蹤等,幫助讀者掌握使用eBPF對調度延遲進行分析的方法。

第9章介紹eBPF在系統安全上的實踐,如使用LSM進行安全防御以及監控進程的各種行為等。

勘誤和支持

因筆者水平有限,書中難免存在一些不足,如果讀者在閱讀過程中發現疏漏,或者遇到難以理解的知識點,可以發電子郵件到maowawilliam@gmail.com反饋。

參考資料

本書很多內容來自公眾號“酷玩BPF”,這是廣大eBPF愛好者共同學習的平臺。同時,本書也參考了很多國內外的論文、演講稿。當然,參考最多的還是Linux內核的開源代碼。

致謝

感謝龍蜥社區eBPF技術探索SIG的專家們,在撰寫本書期間他們提供了大量素材和技術支持。特別感謝來自獵聘的劉特利,貢獻了非常優質的實踐案例。在寫作過程中,我也結交了許多朋友,大家共同探討eBPF落地中的各種疑難問題與解決方案。

特別感謝西安郵電大學陳莉君教授在操作系統和eBPF技術領域的悉心指導。陳老師一直激勵我勇往直前,是我堅持在Linux和eBPF領域探索的強大支柱。

特別感謝龍蜥社區理事長馬濤先生和龍蜥社區運維聯盟委員會主席馮富秋先生。他們在工作和生活中給予了諸多指導,并提供了各種資源,為本書的寫作提供了寶貴意見和建議。

感謝我的同事們在寫作期間給予的理解和支持。同時,在可觀測性、智能運維和操作系統內核等領域,他們與我分享了許多優秀的實踐經驗。

最后,特別感謝我的家人。為了寫作本書,我犧牲了許多陪伴他們的時間。正是因為他們的關懷和鼓勵,我才能夠專心致志地完成本書內容的編寫。

毛文安

主站蜘蛛池模板: 郴州市| 乐陵市| 黔江区| 舒兰市| 邓州市| 崇义县| 万安县| 运城市| 旺苍县| 彰武县| 祁连县| 唐河县| 大化| 东兴市| 荣成市| 阳曲县| 兴文县| 普洱| 宜黄县| 贵南县| 拜泉县| 拉萨市| 高阳县| 孟州市| 镇康县| 湘西| 民县| 潼南县| 城步| 保德县| 商都县| 调兵山市| 红安县| 禹城市| 日照市| 太和县| 马山县| 上高县| 斗六市| 垫江县| 海宁市|