産品特色
編輯推薦
適讀人群 :各個企業的網絡維護人員,高校計算機專業學生 本書是企業和雲計算環境運維人員的必備指導:係統管理員、網絡管理員、數據庫管理員和Web管理員、開發工程師以及其他專業人員。對於新接觸性能優化的學生等人員,本書還提供瞭飽含Gregg豐富的教學經驗的練習題目。
□ 現代性能分析與調優:術語、概念、模型、方法和技術
□ 動態跟蹤技術與工具,收錄DTrace、SystemTap和Perf示例
□ 內核內幕:揭示OS在做什麼
□ 如何使用係統觀測工具、接口和框架
□ 理解和監控應用程序性能
□ 優化CPU:處理器、核、硬件綫程、緩存、互聯與內核調度
□ 內存優化:虛擬內存、換頁、交換、內存架構、總綫、地址空間與分配器
□ 文件係統I/O,包括緩存
□ 存儲設備/控製器、磁盤I/O工作負載、RAID,以及內核I/O
□ 網絡相關性能問題:協議、套接字、網卡和物理連接。
□ OS和基於硬件虛擬化的性能實現,以及雲計算所遇到的新問題
□ 基準測試:如何得到精確的結果並避免一般性的錯誤
內容簡介
《性能之巔:洞悉係統、企業與雲計算》基於Linux 和Solaris 係統闡述瞭適用於所有係統的性能理論和方法,Brendan Gregg 將業界普遍承認的性能方法、工具和指標收集於本書之中。閱讀本書,你能洞悉係統運作的方式,學習到分析和提高係統與應用程序性能的方法,這些性能方法同樣適用於大型企業與雲計算這類較為復雜的環境的性能分析與調優。
作者簡介
Brendan Gregg,是Joyent公司的首席性能工程師,通過軟件棧分析性能和擴展。在Sun Microsystem公司(之後為Oracle)作為首席性能和內核工程師期間,他的工作包括開發ZFS L2ARC,這是一個利用閃速存儲器提升性能的文件係統。他還開發瞭許許多多的性能工具,部分工具收錄在Mac OS X和Oracle Solaris 11的發行版中。他最近從事的工作覆蓋針對Linux和illumos內核分析的性能可視化。他還是《DTrace》(Prentice Hall齣版社,2011年)和《Solaris Performance and Tools》的兩書閤著者。
譯者介紹:
·徐章寜,1984年生,畢業於上海交通大學,碩士畢業後一直從事軟件運維工作,在雲存儲與虛擬化領域浸沁多年,現於百度公司擔任高級運維工程師,緻力於大數據方嚮運維。鍾愛開源軟件,平日熱愛讀書和寫作,《算法謎題》《編程格調》閤譯者。
·吳寒思,2010年畢業於南京大學軟件學院,目前就職於EMC公司核心技術部從事文件係統研發工作,擁有2項文件係統方麵專利。對程序設計、係統存儲、雲計算和操作係統有濃厚興趣。
·陳磊,1979年生,畢業於同濟大學。從事網絡、係統和IT管理14年。曾就職於EMC中國卓越研發集團,任實驗室經理。目前在互聯網金融企業負責基礎架構。興趣廣泛,尤其熱愛開源軟件和其它各類新興技術的探討和研究。
內頁插圖
精彩書評
我做分布式機器學習係統有八年瞭,其間很多時候要麵對係統分析的問題。但是坦誠的說,大部分情況下我都隻能盡快地找一個“近似”方法,處在沒有時間深入琢磨上述係統問題的窘境。看到《係能之巔:洞悉係統、企業與雲計算》一書之後,不禁眼前一亮。這本書從緒論之後,就開始介紹“方法”——概念、模型、觀測和實驗手段。作者不僅利用操作係統自帶的觀測工具,還自己開發瞭一套深入分析觀測結果的腳本,這就是有名的DTrace Toolkit(大傢可以直接找來使用)。《性能之巔》一書介紹的實驗和觀測方法,包括內存、CPU、文件係統、存儲硬件、網絡等各個方麵。而且,在介紹方法之前會深入介紹係統原理——我沒法期望更多瞭!
——王益 Linkedin高級主任分析師
書的作者Gregg先生是業內性能優化方麵大名鼎鼎的人物,早年在Sun公司的時候是性能主管和內核工程師,也是大名鼎鼎的DTrace的開發人員,要知道DTrace可是眾多trace類工具中知名的,並且先後被移植到瞭很多彆的OS上。全書統篇都在討論性能優化,對於所有相關問題的認識,我相信讀者在通讀全書後會有不一樣的感覺。記住,不要隻讀一遍,每一遍都必有不同的體會。
——叢磊 新浪SAE創始人/總負責人
與軟件瑕疵類似,性能問題也可能危害巨大!更可怕的是,性能方麵的問題容易促發隱藏在軟件深處的瑕疵,直接導緻軟件崩潰或者其它無法預計的故障。不論調試,還是調優,對軟件工程師的技術要都求很高。很高興看到有這樣一本關於係統優化的好書引進到國內。
——張銀奎 專業調試專傢,《軟件調試》和《格蠹匯編》作者 2015年7月22日於上海格蠹軒
縱觀全書,作者建立瞭係統性能優化的體係框架,並且骨肉豐滿。很明顯,他不僅擅長某方麵的性能優化,更是全方位的專傢,加之作為DTrace(一種可動態檢測進程等狀態的工具)主要開發者,使得本書的說服力和含金量大增。本書讓我們有機會係統學習和掌握性能優化的各方麵,有機會建立一種高屋建瓴的全局觀,在麵對復雜係統問題時再不會手足無措,或隻能盲人摸象。Linux係統演化至今,基礎的體係架構和關鍵組件並未發生多大改變,這使得這本好書即使再曆經多年,價值毫無衰減,反而曆久彌新。
——蕭田國 觸控科技運維總監 高效運維社區創始人
《性能之巔》以一種奇妙而到位的方式,把高屋建瓴的視角和腳踏實地的實踐結閤瞭起來,對性能這一復雜、微妙甚至有些神秘的話題進行瞭外科手術式的解析,讀來真是讓人感覺豁然開朗。
全書以罕見的遍曆式結構,對軟件係統的每一個部件都如庖丁解牛般加以剖析,幾乎涉及到業務的每一個細節。然而,這些細節並非簡單的羅列,而是每一段論述都與具體的角色和場景緊密結閤,取捨之間極見智慧。方法論更是不單說理,而是通過一個又一個的具體實例,逐步地建構起來,並反復運用於各個部件之上,使讀者明白原理普適性的同時也知道怎樣舉一反三。
——高博 青年計算機學會論壇(YOCSEF)會員,文津奬得主,《研究之美》譯者
性能問題一直是個熱門話題,分布式係統時代更成為擺在開發運維人員麵前的巨大難題。本書采用瞭自下而上的結構,從底層的操作係統、CPU、磁盤等基礎元素開始,到工作原理層麵分析性能受到的各種不同影響,以及如何評估、衡量各項性能指標,讓讀者知其所以然,在麵對實際情況時能夠更有針對性地做齣判斷和決定,而不是機械地、教條地行事。本書提供案例,手把手展示實際性能問題的排查調優過程。讀者可據此結閤業務係統實際情況展開工作。本書還對常用性能分析工具的使用和擴展做瞭詳細介紹,這對日常工作效率的提升有很大的幫助。無論開發還是運維人員,無論設計、編碼或排查調優,本書都能發揮重要的參考作用,尤其適閤常備案頭。
——林應 淘寶技術部高級技術專傢
目錄
第1章 緒論 1
1.1 係統性能 1
1.2 人員 2
1.3 事情 3
1.4 視角 4
1.5 性能是充滿挑戰的 4
1.5.1 性能是主觀的 4
1.5.2 係統是復雜的 5
1.5.3 可能有多個問題並存 6
1.6 延時 6
1.7 動態跟蹤 7
1.8 雲計算 8
1.9 案例研究 8
1.9.1 緩慢的磁盤 9
1.9.2 軟件變更 10
1.9.3 更多閱讀 12
第2章 方法 13
2.1 術語 14
2.2 模型 14
2.2.1 受測係統 15
2.2.2 排隊係統 15
2.3 概念 16
2.3.1 延時 16
2.3.2 時間量級 17
2.3.3 權衡三角 18
2.3.4 調整的影響 19
2.3.5 閤適的層級 19
2.3.6 性能建議的時間點 20
2.3.7 負載vs.架構 20
2.3.8 擴展性 21
2.3.9 已知的未知 22
2.3.10 指標 23
2.3.11 使用率 24
2.3.12 飽和度 25
2.3.13 剖析 26
2.3.14 緩存 26
2.4 視角 28
2.4.1 資源分析 28
2.4.2 工作負載分析 29
2.5 方法 30
2.5.1 街燈反方法 31
2.5.2 隨機變動反方法 32
2.5.3 責怪他人反方法 32
2.5.4 ad hoc核對清單法 33
2.5.5 問題陳述法 33
2.5.6 科學法 34
2.5.7 診斷循環 35
2.5.8 工具法 35
2.5.9 USE方法 36
2.5.10 工作負載特徵歸納 42
2.5.11 嚮下挖掘分析 43
2.5.12 延時分析 44
2.5.13 R方法 45
2.5.14 事件跟蹤 45
2.5.15 基礎綫統計 47
2.5.16 靜態性能調整 47
2.5.17 緩存調優 47
2.5.18 微基準測試 48
2.6 建模 49
2.6.1 企業vs.雲 49
2.6.2 可視化識彆 49
2.6.3 Amdahl擴展定律 51
2.6.4 通用擴展定律 52
2.6.5 排隊理論 52
2.7 容量規劃 56
2.7.1 資源極限 56
2.7.2 因素分析 58
2.7.3 擴展方案 58
2.8 統計 59
2.8.1 量化性能 59
2.8.2 平均值 60
2.8.3 標準方差、百分位數、中位數 61
2.8.4 變異係數 62
2.8.5 多重模態分布 62
2.8.6 異常值 63
2.9 監視 63
2.9.1 基於時間的規律 63
2.9.2 監測産品 65
2.9.3 啓動以來的信息統計 65
2.10 可視化 65
2.10.1 綫圖 65
2.10.2 散點圖 66
2.10.3 熱圖 67
2.10.4 錶麵圖 68
2.10.5 可視化工具 69
2.11 練習 70
2.12 參考 70
第3章 操作係統 72
3.1 術語 72
3.2 背景 73
3.2.1 內核 73
3.2.2 棧 76
3.2.2 中斷和中斷綫程 77
3.2.4 中斷優先級 78
3.2.5 進程 78
3.2.6 係統調用 80
3.2.7 虛擬內存 82
3.2.8 內存管理 82
3.2.9 調度器 83
3.2.10 文件係統 84
3.2.11 緩存 86
3.2.12 網絡 87
3.2.13 設備驅動 87
3.2.14 多處理器 87
3.2.15 搶占 88
3.2.16 資源管理 88
3.2.17 觀測性 89
3.3 內核 89
3.3.1 UNIX 90
3.3.2 基於Solaris 90
3.3.3 基於Linux 93
3.3.4 差異 95
3.4 練習 96
3.5 參考 96
第4章 觀測工具 98
4.1 工具類型 98
4.1.1 計數器 99
4.1.2 跟蹤 100
4.1.3 剖析 101
4.1.4 監視(sar) 102
4.2 觀測來源 103
4.2.1 /proc 103
4.2.2 /sys 108
4.2.3 kstat 109
4.2.4 延時核算 111
4.2.5 微狀態核算 112
4.2.6 其他的觀測源 112
4.3 DTrace 114
4.3.1 靜態和動態跟蹤 115
4.3.2 探針 116
4.3.3 provider 116
4.3.4 參數 117
4.3.5 D語言 117
4.3.6 內置變量 118
4.3.7 action 118
4.3.8 變量類型 119
4.3.9 單行命令 121
4.3.10 腳本 121
4.3.11 開銷 122
4.3.12 文檔和資源 123
4.4 SystemTap 124
4.4.1 探針 124
4.4.2 tapset 125
4.4.3 action和內置變量 125
4.4.4 示例 125
4.4.5 開銷 127
4.4.6 文檔和資源 128
4.5 perf 128
4.6 觀測工具的觀測 129
4.7 練習 130
4.8 參考 130
第5章 應用程序 131
5.1 應用程序基礎 131
5.1.1 目標 132
5.1.2 常見情況的優化 133
5.1.3 觀測性 134
5.1.4 大O標記法 134
5.2 應用程序性能技術 135
5.2.1 選擇I/O尺寸 135
5.2.2 緩存 136
5.2.3 緩衝區 136
5.2.4 輪詢 136
5.2.5 並發和並行 137
5.2.6 非阻塞I/O 139
5.2.7 處理器綁定 139
5.3 編程語言 140
5.3.1 編譯語言 140
5.3.2 解釋語言 141
5.3.3 虛擬機 142
5.3.4 垃圾迴收 142
5.4 方法和分析 143
5.4.1 綫程狀態分析 143
5.4.2 CPU剖析 146
5.4.3 係統調用分析 148
5.4.4 I/O剖析 154
5.4.5 工作負載特徵歸納 155
5.4.6 USE方法 155
5.4.7 嚮下挖掘法 156
5.4.8 鎖分析 156
5.4.9 靜態性能調優 159
5.5 練習 160
5.6 參考 161
第6章 CPU 162
6.1 術語 163
6.2 模型 163
6.2.1 CPU架構 163
6.2.2 CPU內存緩存 164
6.2.3 CPU運行隊列 165
6.3 概念 165
6.3.1 時鍾頻率 165
6.3.2 指令 166
6.3.3 指令流水綫 166
6.3.4 指令寬度 167
6.3.5 CPI,IPC 167
6.3.6 使用率 167
6.3.7 用戶時間/內核時間 168
6.3.8 飽和度 168
6.3.9 搶占 168
6.3.10 優先級反轉 169
6.3.11 多進程,多綫程 169
6.3.12 字長 170
6.3.13 編譯器優化 171
6.4 架構 171
6.4.1 硬件 171
6.4.2 軟件 179
6.5 方法 184
6.5.1 工具法 184
6.5.2 USE方法 185
6.5.3 負載特徵歸納 186
6.5.4 剖析 187
6.5.5 周期分析 188
6.5.6 性能監控 189
6.5.7 靜態性能調優 189
6.5.8 優先級調優 189
6.5.9 資源控製 190
6.5.10 CPU綁定 190
6.5.11 微型基準測試 191
6.5.12 擴展 191
6.6 分析 192
6.6.1 uptime 192
6.6.2 vmstat 194
6.6.3 mpstat 195
6.6.4 sar 197
6.6.5 ps 198
6.6.6 top 199
6.6.7 prstat 200
6.6.8 pidstat 201
6.6.9 time和ptime 202
6.6.10 DTrace 203
6.5.11 SystemTap 209
6.6.12 perf 209
6.6.13 cpustat 215
6.6.14 其他工具 216
6.6.15 可視化 216
6.7 實驗 219
6.7.1 Ad Hoc 219
6.7.2 SysBench 220
6.8 調優 220
6.8.1 編譯器選項 221
6.8.2 調度優先級和調度類 221
6.8.3 調度器選項 221
6.8.4 進程綁定 223
6.8.5 獨占CPU組 224
6.8.6 資源控製 224
6.8.7 處理器選項(BIOS調優) 224
6.9 練習 225
6.10 參考資料 226
第7章 內存 228
7.1 術語 229
7.2 概念 229
7.2.1 虛擬內存 230
7.2.2 換頁 230
7.2.3 按需換頁 231
7.2.4 過度提交 233
7.2.5 交換 233
7.2.6 文件係統緩存占用 233
7.2.7 使用率和飽和度 234
7.2.8 分配器 234
7.2.9 字長 234
7.3 架構 234
7.3.1 硬件 235
7.3.2 軟件 239
7.3.3 進程地址空間 244
7.4 方法 248
7.4.1 工具法 249
7.4.2 USE方法 249
7.4.3 使用特徵歸納 250
7.4.4 周期分析 251
7.4.5 性能監測 251
7.4.6 泄漏檢測 252
7.4.7 靜態性能調優 252
7.4.8 資源控製 253
7.4.9 微基準測試 253
7.5 分析 253
7.5.1 vmstat 254
7.5.2 sar 256
7.5.3 slabtop 259
7.5.4 ::kmstat 260
7.5.5 ps 261
7.5.6 top 262
7.5.7 prstat 263
7.5.8 pmap 264
7.5.9 DTrace 265
7.5.10 SystemTap 269
7.5.11 其他工具 269
7.6 調優 270
7.6.1 可調參數 271
7.6.2 多個頁麵大小 273
7.6.3 分配器 274
7.6.4 資源控製 274
7.7 練習 274
7.8 參考資料 276
第8章
性能之巔:洞悉係統、企業與雲計算 下載 mobi epub pdf txt 電子書 格式