性能之巔:洞悉系統、企業與雲計算 (Systems Performance: Enterprise and the Cloud)

格雷格 (Gregg,B.)

買這商品的人也買了...

商品描述

大型網絡、雲計算、大數據和虛擬電腦系統的快速部署已經為性能優化帶來了新的挑戰。本書為此提供瞭解決方案。國際知名的性能優化專家Brendan Gregg匯集了先進的技術和工具來分析調優大型網絡或雲計算的環境。本書的內容包括現代化的性能分析和容量規劃;與雲計算相關的新性能和可靠性挑戰;方法、概念、術語、工具和指標;負載與結構問題的權衡;調整操作系統、CPU、內存、文件系統、磁盤、網絡和總線;調整虛擬系統;性能相關的編程語言問題,對C、 C++、 Java和node.js編寫的應用程序分析。

海報:

作者簡介

Brendan Gregg是Joyent公司的首席性能工程師,通過軟件棧分析性能和擴展。在Sun Microsystem公司(之後為Oracle)作為首席性能和內核工程師期間,他的工作包括開發ZFS L2ARC,這是一個利用閃速存儲器提升性能的文件系統。他還開發了許許多多的性能工具,部分工具收錄在Mac OS X和Oracle Solaris 11的發行版中。他最近從事的工作覆蓋針對Linux和illumos內核分析的性能可視化。他還是《DTrace》(Prentice Hall出版社,2011年)和《Solaris Performance and Tools》的兩書合著者。
 

目錄大綱

第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週期分析25