中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折!

歡迎光臨中圖網 請 | 注冊
> >
深入理解軟件性能——一種動態視角

包郵 深入理解軟件性能——一種動態視角

出版社:人民郵電出版社出版時間:2024-01-01
開本: 16開 頁數: 618
中 圖 價:¥96.1(7.4折) 定價  ¥129.8 登錄后可看到會員價
加入購物車 收藏
開年大促, 全場包郵
?新疆、西藏除外
本類五星書更多>
買過本商品的人還買了

深入理解軟件性能——一種動態視角 版權信息

深入理解軟件性能——一種動態視角 本書特色

1.理解復雜軟件動態:本書通過介紹多種環境的優化原則和技術,幫助讀者更好地理解復雜軟件的動態。

2.提高軟件可靠性:通過解決與CPU、內存、磁盤/SSD、網絡以及它們之間如何交互有關的問題,可以大大提高軟件的可靠性。

3.修復程序運行問題:本書提供了具體的示例和技術,幫助讀者修復運行速度緩慢或無緣無故變慢的程序。

4.更有效地分析性能數據:通過介紹如何使用開源軟件工具KUtrace收集信息,讀者可以更有效地分析性能數據,了解現實與期望的差距。

5.發現問題并解決:本書幫助讀者發現問題,例如執行太多指令、指令執行緩慢、等待資源和軟件加鎖等,并提供了相應的解決方案。

深入理解軟件性能——一種動態視角 內容簡介

本書不僅介紹了如何測量CPU、內存、磁盤/SSD、網絡的性能,如何觀察、記錄、跟蹤、匯總性能指標,還討論了如何設計和創建性能測試工具KUtrace,以及如何對觀察結果進行推理。 本書不僅適合軟件開發人員閱讀,還適合計算機相關專業的師生參考。

深入理解軟件性能——一種動態視角 目錄



目  錄



第 一部分 測量



第 1章 我的程序太慢了 3

1.1 數據中心環境 3

1.2 數據中心的硬件 5

1.3 數據中心的軟件 6

1.4 長尾時延 7

1.5 思維框架 9

1.6 數量級估測 9

1.7 為什么事務很慢 10

1.8 5種基本資源 11

1.9 小結 12

第 2章 測量CPU時間 13

2.1 發展歷史 14

2.2 現狀 17

2.3 測量add指令的時延 18

2.4 直線代碼失敗 19

2.5 簡單循環、循環開銷失敗、優化編譯器失敗 19

2.6 死變量失敗 22

2.7 更好的循環 23

2.8 依賴變量 24

2.9 實際執行時延 25

2.10 更多細微差別 25

2.11 小結 26

習題 26

第3章 測量內存層次 28

3.1 內存計時 28

3.2 關于內存 29

3.3 緩存組織 30

3.4 數據對齊 32

3.5 頁表緩存組織 33

3.6 測量內存的步驟 34

3.7 測量緩存行的大小 34

3.8 問題:預取第N 1行 36

3.9 依賴加載 37

3.10 非隨機的DRAM 38

3.11 測量每個緩存級別的總大小 39

3.12 測量每個級別的緩存相聯度 41

3.13 頁表緩存時間 42

3.14 緩存利用不足 42

3.15 小結 42

習題 43

第4章 CPU與內存的交互 45

4.1 緩存交互 45

4.2 簡單矩陣乘法的動態 47

4.3 估測 47

4.4 初始化、反復核對和觀察 48

4.5 初始結果 49

4.6 更快的矩陣乘法,轉置方法 51

4.7 更快的矩陣乘法,子塊方法 53

4.8 感知緩存的計算 54

4.9 小結 55

習題 55

第5章 測量磁盤/SSD的傳輸時間 56

5.1 關于硬盤 56

5.2 關于SSD 58

5.3 軟件磁盤訪問和磁盤緩沖 60

5.4 磁盤讀取有多快 62

5.5 一次粗略估算 65

5.6 磁盤寫入有多快 66

5.7 結果 66

5.8 從磁盤讀取 67

5.9 寫入磁盤 71

5.10 從SSD讀取 74

5.11 寫入SSD 75

5.12 多次傳輸 76

5.13 小結 77

習題 77

第6章 測量網絡流量 79

6.1 關于以太網 81

6.2 關于集線器、交換機和路由器 82

6.3 關于TCP/IP 83

6.4 關于數據包 84

6.5 關于RPC 85

6.6 空程差 87

6.7 觀察網絡流量 88

6.8 示例RPC消息的定義 90

6.9 示例日志設計 92

6.10 使用RPC的示例客戶-服務器系統 93

6.11 示例服務器程序 94

6.12 自旋鎖 95

6.13 示例客戶端程序 96

6.14 測量一個示例客戶-服務器RPC 98

6.15 后處理RPC日志 99

6.16 觀察 100

6.17 小結 101

習題 102

第7章 磁盤和網絡數據庫的交互 103

7.1 時間對齊 103

7.2 多個客戶端 109

7.3 自旋鎖的應用 109

7.4 實驗1 110

7.5 磁盤數據庫 113

7.6 實驗2 113

7.7 實驗3 117

7.8 日志 119

7.9 理解事務時延的變化 120

7.10 小結 120

習題 121



第二部分 觀察



第8章 日志 125

8.1 觀察工具 125

8.2 日志 125

8.3 基本日志 126

8.4 擴展日志 127

8.5 時間戳 127

8.6 RPC ID 128

8.7 日志文件的格式 129

8.8 管理日志文件 130

8.9 小結 131

第9章 聚合措施測量 132

9.1 均勻的事件率與陣發的事件率 133

9.2 測量間隔 133

9.3 時間線 134

9.4 進一步匯總時間線 136

9.5 直方圖的時間尺度 138

9.6 聚合每個事件的測量結果 140

9.7 一段時間的值的模式 142

9.8 更新間隔 143

9.9 事務采樣 144

9.10 小結 145

第 10章 儀表板 147

10.1 示例服務 147

10.2 示例儀表板 149

10.3 主儀表板 149

10.4 實例儀表板 153

10.5 服務器儀表板 154

10.6 健全檢查 154

10.7 小結 155

習題 155

第 11章 其他現有工具 156

11.1 觀察工具的分類 156

11.2 要觀察的數據 158

11.3 top命令 159

11.4 /proc和/sys偽文件 160

11.5 time命令 160

11.6 perf命令 161

11.7 oprofile 162

11.8 strace 165

11.9 ltrace 168

11.10 ftrace 169

11.11 mtrace 172

11.12 blktrace 174

11.13 tcpdump和Wireshark 177

11.14 locktrace 179

11.15 輸入負載、出站調用 179

11.16 小結 180

習題 181

第 12章 跟蹤工具 182

12.1 跟蹤工具的優勢 182

12.2 跟蹤工具的缺點 183

12.3 3個起始問題 183

12.4 示例1:早期的程序計數器跟蹤 186

12.5 示例2:每個函數的計數和時間 188

12.6 案例分析:Gmail的按函數跟蹤 191

12.7 小結 196

第 13章 優秀觀察工具的設計原則 197

13.1 需要觀察什么 197

13.2 有多頻繁?要多久 198

13.3 開銷有多大 199

13.4 設計的后果 200

13.5 案例分析:直方圖桶 200

13.6 設計數據顯示 202

13.7 小結 203



第三部分 內核-用戶跟蹤



第 14章 KUtrace的目標、設計、

實現 207

14.1 概述 207

14.2 目標 208

14.3 設計 209

14.4 實現 211

14.5 內核補丁和Linux內核可加載模塊 211

14.6 控制程序 212

14.7 后處理 213

14.8 關于安全問題的一點說明 213

14.9 小結 213

第 15章 KUtrace中的Linux內核補丁 214

15.1 跟蹤緩沖區數據結構 215

15.2 原始跟蹤塊的格式 216

15.3 跟蹤條目 217

15.4 IPC跟蹤條目 218

15.5 時間戳 219

15.6 事件編號 219

15.7 嵌套的跟蹤條目 219

15.8 代碼 220

15.9 數據包跟蹤 221

15.10 AMD/Intel x86-64補丁 222

15.11 小結 224

習題 224

第 16章 KUtrace的Linux內核可加載模塊 225

16.1 內核接口數據結構 225

16.2 模塊加載/卸載 226

16.3 初始化和控制跟蹤 226

16.4 實現跟蹤調用 227

16.5 Insert1 227

16.6 InsertN 229

16.7 切換到一個新的跟蹤塊 230

16.8 小結 230

第 17章 KUtrace的用戶態的運行時控制 231

17.1 控制跟蹤 232

17.2 獨立的kutrace_control程序 232

17.3 底層的kutrace_lib庫 233

17.4 可加載模塊的控制接口 233

17.5 小結 234

第 18章 KUtrace的后處理 235

18.1 后處理的細節 235

18.2 rawtoevent程序 236

18.3 eventtospan程序 237

18.4 spantotrim程序 239

18.5 spantospan程序 239

18.6 samptoname_k和samptoname_u程序 240

18.7 makeself程序 240

18.8 KUtrace的JSON格式 240

18.9 小結 242

第 19章 KUtrace中軟件動態的顯示 243

19.1 概述 243

19.2 區域①—控件 244

19.3 區域②—y軸 246

19.4 區域③—主時間線 246

19.5 區域④—IPC圖例 251

19.6 區域⑤—x軸 252

19.7 區域⑥—保存/還原 252

19.8 輔助控件 252

19.9 小結 253



第四部分 推理



第 20章 尋找什么 257

20.1 概述 257

20.2 尋找原因 258

第 21章 執行太多 259

21.1 概述 259

21.2 程序 259

21.3 謎團 260

21.4 探索和分析 261

21.5 理解謎團 265

21.6 小結 265

第 22章 執行緩慢 267

22.1 概述 267

22.2 程序 268

22.3 謎團 268

22.4 浮點運算對立程序 270

22.5 內存對立程序 273

22.6 理解謎團 274

22.7 小結 274

第 23章 等待CPU 276

23.1 程序 276

23.2 謎團1 276

23.3 探索和分析 277

23.4 謎團2 279

23.5 理解謎團2 280

23.6 附加謎團 282

23.7 小結 284

習題 284

第 24章 等待內存 285

24.1 程序 285

24.2 謎團1 286

24.3 探索和分析 286

24.4 謎團2:訪問頁表 290

24.5 理解謎團2 290

24.6 小結 292

習題 292

第 25章 等待磁盤 293

25.1 程序 293

25.2 謎團 294

25.3 探索和分析 294

25.4 讀取40 MB 296

25.5 順序讀取4 KB的塊 297

25.6 隨機讀取4 KB的塊 299

25.7 在SSD上寫入和同步

40 MB 301

25.8 在SSD上讀取40 MB 301

25.9 兩個程序同時訪問兩個文件 302

25.10 理解謎團 303

25.11 小結 304

習題 304

第 26章 等待網絡 305

26.1 概述 305

26.2 程序 306

26.3 實驗1 307

26.4 實驗1中的謎團 308

26.5 實驗1的探索與分析 309

26.6 實驗1中RPC之間的時間 313

26.7 實驗2 315

26.8 實驗3 315

26.9 實驗4 316

26.10 理解謎團 319

26.11 附加異常 320

26.12 小結 322

第 27章 等待鎖 323

27.1 概述 323

27.2 程序 327

27.3 實驗1:長時間持有鎖 330

27.4 實驗1中的謎團 331

27.5 探索和分析實驗1 332

27.6 實驗2:修復鎖捕獲 334

27.7 實驗3:通過多個鎖修復鎖爭用 335

27.8 實驗4:通過鎖住更少的工作來修復鎖爭用 337

27.9 實驗5:通過為儀表板使用RCU來修復鎖爭用 338

27.10 小結 340

第 28章 等待時間 341

28.1 定期工作 341

28.2 超時 342

28.3 時間分片 342

28.4 內在的執行延遲 343

28.5 小結 343

第 29章 等待隊列 344

29.1 概述 344

29.2 請求的分布 346

29.3 隊列的結構 347

29.4 工作任務 348

29.5 主任務 348

29.6 Dequeue操作 348

29.7 Enqueue操作 349

29.8 PlainSpinLock類 349

29.9 “工作”例程 350

29.10 簡單的示例 350

29.11 哪些地方可能發生了問題 351

29.12 CPU頻率 352

29.13 復雜的示例 353

29.14 等待CPU:RPC日志 353

29.15 等待CPU:KUtrace 354

29.16 PlainSpinLock存在的缺陷 357

29.17 根本原因 358

29.18 修復PlainSpinLock:可觀察性 359

29.19 負載均衡 360

29.20 隊列深度:可觀察性 361

29.21 結尾處的自旋 361

29.22 剩下的*后一個缺陷 362

29.23 交叉檢查 362

29.24 小結 363

習題 363

第30章 全書回顧 365

30.1 你學到了什么 365

30.2 我們沒有講什么 367

30.3 接下來的工作 367

30.4 全書小結 368

附錄A 示例服務器 369

附錄B 跟蹤條目 372

術語表 377

參考文獻 383

KUtrace HTML圖例 384





展開全部

深入理解軟件性能——一種動態視角 作者簡介

理查德· L. 賽茨(Richard L.Sites),美國國家工程院院士。在職業生涯的大部分時間中,他負責硬件與軟件的交接,特別關注 CPU/軟件性能交互。他擔任了 DEC Alpha 處理器的架構師,發明了處理器的性能計數器。他還在 DEC、Adobe、Google 和 Tesla 公司編寫過低開銷的微代碼,負責過軟件跟蹤

商品評論(0條)
暫無評論……
書友推薦
本類暢銷
編輯推薦
返回頂部
中圖網
在線客服
主站蜘蛛池模板: 济南办公室装修-厂房装修-商铺装修-工装公司-山东鲁工装饰设计 | 泰兴市热钻机械有限公司-热熔钻孔机-数控热熔钻-热熔钻孔攻牙一体机 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 设计圈 - 让设计更有价值!| 厂房出售_厂房仓库出租_写字楼招租_土地出售-中苣招商网-中苣招商网 | 衢州装饰公司|装潢公司|办公楼装修|排屋装修|别墅装修-衢州佳盛装饰 | 专业音响设备_舞台音响设备_会议音响工程-首选深圳一禾科技 | 步入式高低温测试箱|海向仪器 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 金联宇电缆总代理-金联宇集团-广东金联宇电缆实业有限公司 | 打孔器,打孔钳厂家【温州新星德牌五金工具】 | 武汉高温老化房,恒温恒湿试验箱,冷热冲击试验箱-武汉安德信检测设备有限公司 | 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 玄米影院| 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 丝杆升降机-不锈钢丝杆升降机-非标定制丝杆升降机厂家-山东鑫光减速机有限公司 | 视频直播 -摄影摄像-视频拍摄-直播分发 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 盘式曝气器-微孔曝气器-管式曝气器-曝气盘-斜管填料 | 郑州市前程水处理有限公司 | 楼梯定制_楼梯设计施工厂家_楼梯扶手安装制作-北京凌步楼梯 | 废气处理_废气处理设备_工业废气处理_江苏龙泰环保设备制造有限公司 | 耐火砖厂家,异形耐火砖-山东瑞耐耐火材料厂 | HV全空气系统_杭州暖通公司—杭州斯培尔冷暖设备有限公司 | 泉州陶瓷pc砖_园林景观砖厂家_石英砖地铺石价格 _福建暴风石英砖 | 中国品牌门窗网_中国十大门窗品牌_著名门窗品牌 | 菲希尔X射线测厚仪-菲希尔库伦法测厚仪-无锡骏展仪器有限责任公司 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 北京四合院出租,北京四合院出售,北京平房买卖 - 顺益兴四合院 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 必胜高考网_全国高考备考和志愿填报信息平台| 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | 南京PVC快速门厂家南京快速卷帘门_南京pvc快速门_世界500强企业国内供应商_南京美高门业 | 数控走心机-双主轴走心机厂家-南京建克 | atcc网站,sigma试剂价格,肿瘤细胞现货,人结肠癌细胞株购买-南京科佰生物 |