性能之巔(第2版):系統(tǒng)、企業(yè)與云可觀測性
鏈接:https://pan.baidu.com/s/1meZGEwvOakCUvTUJIz4R5Q?pwd=33p7?
提取碼:33p7

作者簡介
Brendan Gregg是計算性能和云計算方面的行業(yè)專家。他是Netflix的高級性能架構(gòu)師,從事性能設(shè)計、評估、分析和調(diào)優(yōu)工作。他是多本技術(shù)圖書的作者,包括《BPF之巔:洞悉Linux系統(tǒng)和應(yīng)用性能》。他曾獲得USENIX LISA系統(tǒng)管理的杰出成就獎,還曾擔(dān)任內(nèi)核工程師和性能負責(zé)人,并且是USENIX LISA 2018會議的項目聯(lián)合主席。他開發(fā)了收錄在多個操作系統(tǒng)中的性能工具,還開發(fā)了包括火焰圖在內(nèi)的用于性能分析的可視化工具和方法。
譯者簡介
徐章寧,目前就職于小紅書,擔(dān)任 SRE 專家工程師,負責(zé)混沌工程等云原生可觀測性項目的研發(fā)。曾就職于百度上海研發(fā)中心和 EMC 中國研發(fā)中心,擔(dān)任 SRE 運維工程師。對于云原生計算領(lǐng)域發(fā)生的一切變革抱有熱忱的態(tài)度,對大型系統(tǒng)運維和性能調(diào)優(yōu)有濃厚興趣。
吳寒思,目前就職于 eBay 中國研發(fā)中心,擔(dān)任軟件技術(shù)經(jīng)理,負責(zé)廣告系統(tǒng)、推薦系統(tǒng)和搜索系統(tǒng)的研發(fā)。曾就職于 EMC 中國研發(fā)中心,擔(dān)任文件系統(tǒng)研發(fā)工程師。對大數(shù)據(jù)、機器學(xué)習(xí)和性能調(diào)優(yōu)有濃厚興趣。
余亮,目前就職于百度,擔(dān)任 SRE 資深研發(fā)工程師。負責(zé)混沌工程、智能運維等穩(wěn)定性工程項目的研發(fā)。曾就職于Synopsys 上海研發(fā)中心,擔(dān)任 SWE 工程師。喜歡鉆研架構(gòu)優(yōu)化、性能調(diào)優(yōu)等技術(shù)。
精彩書評
性能測量的水相當深,斯坦福大學(xué)的 John Ousterhout 教授在“Always Measure One Level Deeper”一文(《ACM 通訊》雜志,2018 年第 7 期)中提到,在他親歷的幾十次系統(tǒng)性能評估中,沒有哪次的首批測量結(jié)果是正確的,都是先掉進坑里,再慢慢爬出來。就拿文件 I/O 來說,你測得的是真實的磁盤性能,還是操作系統(tǒng)中文件系統(tǒng)的性能?存儲是分級的。操作系統(tǒng)有頁緩存,高檔的磁盤控制器(陣列卡)有帶電池備份的寫緩存,機械硬盤上有高速緩存,混合型機械硬盤帶有 SSD 緩存,消費級 TLC SSD 上帶有 SLC 緩存。文件 I/O 的性能主要取決于讀寫操作擊中的是哪一級緩存,而緩存顛簸(thrashing)是系統(tǒng)過載時造成性能急劇下降的重要因素。如今的計算機系統(tǒng)極度復(fù)雜,性能優(yōu)劣往往違反直覺。不少人可能先入為主地認為mmap() 比 read()/write() 讀寫文件更快,因為前者減少了系統(tǒng)調(diào)用和內(nèi)存拷貝。這聽上去很有道理,也正是 20 世紀 80 年代 UNIX 引入 mmap() 的理由。但是卡內(nèi)基梅隆大學(xué)的 Andrew Crotty 等人本書作者 Brendan Gregg 是全球知名的實戰(zhàn)派性能專家,他發(fā)明的火焰圖是分析CPU 開銷的有力工具,如今已是我們?nèi)粘P阅芊治龅臉伺洹_@本書是他多年工作經(jīng)驗的總結(jié),既有理論深度,又有豐富案例,在同類圖書中是較為全面深入的,非常值得深入閱讀。這個新版本我會第一時間購買,常備案頭,隨時查閱。
——陳碩 《Linux 多線程服務(wù)端編程 :使用 muduo C++ 網(wǎng)絡(luò)庫》作者
Gregg 在 Netflix 積累了豐富的云計算環(huán)境下的性能優(yōu)化的經(jīng)驗后又加入 Intel,按他的說法,“將為從應(yīng)用程序到硅的所有領(lǐng)域開發(fā)新的性能和調(diào)試技術(shù)。這將跨越所有xPU(CPU、GPU、IPU 等),并對世界產(chǎn)生巨大影響”。本書可作為大家入門性能優(yōu)化的起點,以此為基礎(chǔ),一方面深入操作系統(tǒng)內(nèi)核,另一方面廣泛積累應(yīng)用程序的優(yōu)化經(jīng)驗,最后再回歸到硬件,你將走入一個更廣泛的世界。
——陳莉君 西安郵電大學(xué)教授
作為高性能計算和云計算系統(tǒng)的設(shè)計、開發(fā)和運維人員,任何時候討論性能優(yōu)化總是一個充滿挑戰(zhàn)卻令人期望的事情。你似乎永遠無法知道所設(shè)計的系統(tǒng)架構(gòu)、調(diào)度策略和數(shù)據(jù)結(jié)構(gòu)是否能達到最理想的狀態(tài),但經(jīng)過各種不斷嘗試后因取得的性能提升而獲得的滿足感卻是如此讓人陶醉。本書從性能分析和調(diào)優(yōu)的基礎(chǔ)概念和方法入手,沿著操作系統(tǒng)內(nèi)核、應(yīng)用、CPU、內(nèi)存、文件系統(tǒng)、磁盤、網(wǎng)絡(luò)、云計算系統(tǒng)以及調(diào)優(yōu)工具的線索,展開一幅計算機系統(tǒng)性能優(yōu)化的全棧式畫卷,向讀者介紹影響計算機系統(tǒng)性能的關(guān)鍵因素,以及深入理解如何動手去解決這些性能瓶頸。作為國家超級計算中心的總工程師,讓高性能計算機系統(tǒng)在運行時任務(wù)執(zhí)行最快、用戶在隊列的等待時間最短、系統(tǒng)平均無故障時間越長,是我追求的永恒目標。我所帶領(lǐng)的運維與系統(tǒng)開發(fā)團隊一直在為提高我國超級計算的系統(tǒng)性能努力,這本書讓我有推薦給我們運維團隊每一個成員的強烈沖動。毫無疑問,本書的內(nèi)容將有助于我們深入理解系統(tǒng)性能背后的知識,建立完整的“系統(tǒng)觀”。同時我還要將本書推薦給我的研究生們,值得每一位立志做體系結(jié)構(gòu)研究的學(xué)生將其作為入門教材,在動手進行高性能系統(tǒng)和云計算系統(tǒng)優(yōu)化研究前,對何為性能優(yōu)化有一個全面完整的認識,有助于他們在研究過程中將問題考慮得更全面。最后我要把這本書推薦給所有從事高性能計算與云計算領(lǐng)域的從業(yè)者,無論你是資深架構(gòu)師還是運維人員,相信我,本書對你重新思考系統(tǒng)設(shè)計、性能優(yōu)化將會起到很大的作用,值得一讀。
——唐卓 國家超級計算長沙中心總工程師、湖南大學(xué)教授
作為一名講授操作系統(tǒng)課程的教師,性能一直是課堂中很難的主題,因為你永遠不知道什么樣的性能問題在等著你。就在幾天前,我在部署一批機器時排查了一臺機器的性能問題,最終發(fā)現(xiàn)竟然是 USB 接口發(fā)生了短路(一個真正的物理 bug),導(dǎo)致kworker/0:0+pm 一直處于活動的狀態(tài)!正是本能地使用了 Linux 的 perf 工具(本書在第13 章中詳細介紹)幫助我瞬間定位到 xhci 相關(guān)的代碼,將性能問題指向了 USB 子系統(tǒng)。在暴力“拆除”USB 接口后,問題解除。在課堂上,我會和學(xué)生談?wù)摗袄斫庑阅芫褪抢斫獬绦蛟跁r間軸上的執(zhí)行”,但這談何容易!我們既想看得清楚,對每條指令執(zhí)行的蹤跡和所屬都了如指掌,又不想付出任何代價,因為任何插入程序中的探針都會干擾程序的執(zhí)行。在系統(tǒng)中的所有組件都成為木桶的短板之后,性能調(diào)優(yōu)更是一項艱苦卓絕,但卻對生產(chǎn)系統(tǒng)來說至關(guān)重要的任務(wù)。
幸運的是,今天我們有了許多成熟的性能分析方法和工具。我找不到任何一份資料可以和 Brendan Gregg 的這本全面、深入的書籍相提并論。Brendan Gregg 作為性能分析領(lǐng)域首屈一指的專家,毫無保留地將其真知灼見和技術(shù)細節(jié)與讀者分享。讀完本書,你就有了世界上最先進的性能分析“武器庫”,不再懼怕任何系統(tǒng)的性能分析。
——蔣炎巖 南京大學(xué)教師
當前云計算等復(fù)雜場景下的系統(tǒng)性能問題日益嚴峻,需要專業(yè)的方法才能找到瓶頸所在,然后才能有針對性地對其做優(yōu)化,以讓業(yè)務(wù)高并發(fā)地運行。本書從性能分析所需要的內(nèi)存、文件系統(tǒng)、網(wǎng)絡(luò)、CPU 等方面進行了詳細介紹,并結(jié)合豐富的案例將讀者快速帶入實戰(zhàn)狀態(tài),作者還總結(jié)了一套性能分析的理論和方法,讓讀者徹底把提高性能的法寶掌握在手中。另外,本書針對如今火到天際的 BPF 前后端技術(shù)及相應(yīng)工具也進行了介紹。本書的作者 Gregg 是國際知名的性能專家,譯者在操作系統(tǒng)和性能領(lǐng)域也是身經(jīng)百戰(zhàn)、經(jīng)驗豐富,無論你是系統(tǒng)運維人員、研發(fā)工程師,還是性能架構(gòu)師,通過閱讀本書,都能幫你打開解決性能問題的大門。強烈推薦本書!
——毛文安,龍蜥社區(qū)系統(tǒng)運維 SIG Maintainer
系統(tǒng)性能問題一直是我們面臨的難題之一。本書從系統(tǒng)性能、優(yōu)化分析到應(yīng)用程序性能及 CPU、內(nèi)存、文件系統(tǒng)、磁盤、網(wǎng)絡(luò),并結(jié)合案例由淺入深地講述了性能方面的知識。本書的作譯者都是性能優(yōu)化領(lǐng)域的專家,實戰(zhàn)經(jīng)驗豐富。本書對系統(tǒng)管理員、運維工程師、研發(fā)工程師具有極高的參考價值,閱讀本書,收獲頗多,力薦!
——田國杰(@JackTian),微信公眾號“杰哥的 IT 之旅”作者
本書詳盡地介紹了企業(yè)環(huán)境和云計算環(huán)境下的性能測試方法與工具,能為讀者帶來立竿見影的幫助?!盁o法衡量就無法管理”,本書先對組件性能進行分析與觀測,然后在此之上進行改進。書中的方法與思路能夠“授人以漁”,引領(lǐng)讀者在系統(tǒng)性能領(lǐng)域進行長期思考。優(yōu)秀的著作離不開譯者的付出,本書的譯者通過精準的翻譯,原汁原味地將這本經(jīng)典技術(shù)著作呈現(xiàn)給大家。無論你是系統(tǒng)管理員、云計算運維人員、技術(shù)愛好者,還是立志成為系統(tǒng)性能架構(gòu)師、專家,這本經(jīng)典著作都值得力薦給你。
——呂昭波,《云端架構(gòu)》作者
多年前我第一次接觸到火焰圖這種神奇的性能剖析方法時,Brendan Gregg 令我驚為天人,后來讀《性能之巔:洞悉系統(tǒng)、企業(yè)與云計算》一書更是受益良多。這次再版,作者補充了近年熱門的可觀測性、eBPF、Kubenertes 等方面的知識,并將第一版中多處分析方法進一步細化成具體的觀測工具指南。高屋建瓴的理論配合深入淺出的落地實踐,絕對是廣大 IT 工程師的案頭必備書籍。
——饒琛琳,日志易產(chǎn)品副總裁,前微博系統(tǒng)架構(gòu)師
分析性能問題需要的技術(shù)是很廣泛的,操作系統(tǒng)、數(shù)據(jù)庫、網(wǎng)絡(luò)、語言、存儲、架構(gòu)等方面的知識都需要理解和掌握。而要想具備性能瓶頸分析和定位的能力,掌握操作系統(tǒng)方面的知識是絕對跳不過去的一個環(huán)節(jié)。本書從性能分析的角度出發(fā)來理解操作系統(tǒng),對廣大開發(fā)人員梳理性能分析思路有很好的借鑒作用。本書在不同的操作系統(tǒng)模塊中提供了實用的分析思路和方法,為應(yīng)用程序、CPU、內(nèi)存、網(wǎng)絡(luò)、文件系統(tǒng)、磁盤等的性能分析提供了對應(yīng)的工具,同時給出了相應(yīng)的操作實例,最后還結(jié)合一些基準測試工具以及 BPF 工具給出進一步進行系統(tǒng)級性能分析的操作指導(dǎo)。這是一本如果要學(xué)習(xí)性能分析就必然要看的書。
——高樓,盾山科技 CEO、7DGroup 創(chuàng)始人
在計算機技術(shù)的發(fā)展長河中,性能問題一直是繞不開的話題?,F(xiàn)在市面上針對性能測試的圖書有很多,但和本書一樣面面俱到的,卻是鳳毛麟角。本書不僅從操作系統(tǒng)、CPU、內(nèi)存、文件系統(tǒng)、磁盤、網(wǎng)絡(luò)等方面介紹了計算機性能的基礎(chǔ)知識,同時還與時俱進,從云計算等當前熱門技術(shù)的角度,介紹了如何進行性能優(yōu)化。除此之外,本書還介紹了性能測試的相關(guān)方法論和性能測試工具,具有很高的實用性。本書的作譯者都是性能領(lǐng)域的專家,在業(yè)內(nèi)享有極高聲望。這本經(jīng)典的著作,非常適合研發(fā)人員、運維人員、測試人員當作性能優(yōu)化的參考書,力薦!
——臻叔,微信公眾號“程序員臻叔”,作者
本書采用自下而上的結(jié)構(gòu),從底層的操作系統(tǒng)、CPU、磁盤等基礎(chǔ)元素開始,到從工作原理層面分析性能受到的各種不同影響,以及如何評估、衡量各項性能指標,讓讀者知其然并知其所以然,在面對實際情況時能夠更有針對性地做出判斷和決定,而不是機械地、教條地行事。本書還提供了案例,一步步地展示了實際性能問題的排查調(diào)優(yōu)過程。
——林應(yīng) 淘寶技術(shù)部高級技術(shù)專家
本書以一種奇妙而到位的方式,把高屋建瓴的視角和腳踏實地的實踐結(jié)合了起來,對性能這一復(fù)雜、微妙甚至有些神秘的話題進行了外科手術(shù)般的解析,讀來真是讓人感覺豁然開朗。全書以罕見的遍歷式結(jié)構(gòu),對軟件系統(tǒng)的每一個部件都如庖丁解牛般地加以剖析,幾乎涉及業(yè)務(wù)的每一個細節(jié)。然而,對這些細節(jié)并非簡單羅列,而是每一段論述都與具體的角色和場景緊密結(jié)合,取舍之間極見智慧。方法論更不是單說理,而是通過一個又一個的具體實例,逐步地建構(gòu)起來的,并反復(fù)運用于各個部件之上,使讀者明白原理普適性的同時也知道怎樣舉一反三。本書也是難得的 UNIX/Linux 系統(tǒng)管理員和運維工程師的百科全書式參考手冊,相對于工作在 Windows 上的同行而言,他們獲得的知識更加零碎,甚至在很多場合下不得不求助于網(wǎng)絡(luò)上的只言片語,并只能通過耗時的、高風(fēng)險的生產(chǎn)環(huán)境實驗來取得一手經(jīng)驗數(shù)據(jù)。
——高博 青年計算機學(xué)會論壇(YOCSEF)會員,文津獎得主,《研究之美》譯者
縱觀全書,作者建立了系統(tǒng)性能優(yōu)化的體系框架,并且骨肉豐滿,很明顯,他不僅擅長某方面的性能優(yōu)化,而且是全方位的專家,加之他作為 DTrace(一種可動態(tài)檢測進程狀態(tài)的工具)的主要開發(fā)者,使得本書的說服力和含金量大增。本書首先提及性能優(yōu)化的方法論和常見性能檢測工具的使用,具體內(nèi)容更是涉及可能影響 Linux 系統(tǒng)性能的方方面面,從操作系統(tǒng)、應(yīng)用程序、CPU、內(nèi)存、文件系統(tǒng)、磁盤到網(wǎng)絡(luò),無所不包。在以上這些話題的探討中,作者的表述方法值得稱道—每章都程式化地介紹了術(shù)語、模型、概念、架構(gòu)、方法、分析工具和調(diào)優(yōu)建議等,這對于因長期工作形成一定強迫癥的某些技術(shù)人員,如我自己,閱讀時感到賞心悅目,這也從側(cè)面體現(xiàn)了作者深厚的技術(shù)功底和文字駕馭能力。本書提供的性能優(yōu)化方法論也令人印象深刻,包括幾種常見的錯誤思考方法,如街燈法、隨意猜測法和責(zé)怪他人法。在列舉各種不正確的方法后,作者建議采用科學(xué)法,科學(xué)法的“套路”是 :描述問題→假設(shè)→預(yù)測→實驗→分析。本書用單獨的章節(jié)系統(tǒng)性地介紹了操作系統(tǒng)、性能檢測方法和各種基準測試,還特別介紹了作者主導(dǎo)開發(fā)的 DTrace(在本書的例子中,用 DTrace 監(jiān)控 SSH 客戶端當前執(zhí)行的每個命令并實時輸出),這使得本書作為工具書的價值更得以彰顯。云計算的出現(xiàn),對系統(tǒng)優(yōu)化帶來新的挑戰(zhàn)。作者作為某云計算提供商的首席性能工程師,帶來了一個真實的云客戶案例分析,包括如何利用本書提及的技術(shù)、方法和工具,一步一步地分析和解決問題。
——蕭田國 觸控科技運維總監(jiān),高效運維社區(qū)創(chuàng)始人
學(xué)習(xí)調(diào)優(yōu)技術(shù)有很多挑戰(zhàn),很高興看到有這樣一本關(guān)于系統(tǒng)優(yōu)化的好書被引進到國內(nèi)。
——張銀奎 資深調(diào)試專家,《軟件調(diào)試》和《格蠹匯編》作者
本書的作者 Gregg 先生是業(yè)內(nèi)性能優(yōu)化方面大名鼎鼎的人物,他早年在 Sun 公司的時候是性能主管和內(nèi)核工程師,也是大名鼎鼎的 DTrace 的開發(fā)人員,要知道 DTrace 先后被移植到很多操作系統(tǒng)上。全書都在討論性能優(yōu)化,詳細介紹了諸如 DTrace、vmstat、mpstat、sar、SystemTap 等工具,如何將這些工具組合并應(yīng)用在適當?shù)膱鼍爸?,是一門學(xué)問,相信讀者會在書中找到答案。順便說一句,DTrace+SystemTap 幫助 SAE 解決過非常多的性能疑難雜癥,一定會對讀者的業(yè)務(wù)分析有所幫助!單個進程的性能分析是簡單的,因為我們可以定位到系統(tǒng)調(diào)用或者庫調(diào)用級別,然后對照代碼很快就能解決問題,但整個業(yè)務(wù)的性能分析是復(fù)雜的,這里面涉及多個業(yè)務(wù)單元、龐大的系統(tǒng)組件,隨機變動、診斷循環(huán)等多種方法,并且介紹了涉及分析的數(shù)學(xué)建模和概念,詳細討論了操作系統(tǒng),這對讀者是很有用的。因為很多時候我們在不改代碼的情況下優(yōu)化系統(tǒng),也就是優(yōu)化內(nèi)存分配比例,優(yōu)化 CPU 親密度,嘗試各種調(diào)度算法,做操作系統(tǒng)層面的各種網(wǎng)絡(luò)參數(shù)調(diào)優(yōu)等。對于上述所有問題的認識,我相信讀者在通讀全書后會有不一樣的感覺。記住,不要只讀一遍,每讀一遍都必有不同的體會。不多說了,我要趕緊再去讀一遍!
——叢磊 新浪 SAE 創(chuàng)始人 / 總負責(zé)人