幫助中心 | 我的帳號 | 關於我們

深入理解軟體性能(一種動態視角)

  • 作者:(美)理查德·L.賽茨|責編:謝曉芳|譯者:趙利通
  • 出版社:人民郵電
  • ISBN:9787115616562
  • 出版日期:2024/01/01
  • 裝幀:平裝
  • 頁數:382
人民幣:RMB 129.8 元      售價:
放入購物車
加入收藏夾

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

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

目錄
第一部分  測量
  第1章  我的程序太慢了
    1.1  數據中心環境
    1.2  數據中心的硬體
    1.3  數據中心的軟體
    1.4  長尾時延
    1.5  思維框架
    1.6  數量級估測
    1.7  為什麼事務很慢
    1.8  5種基本資源
    1.9  小結
  第2章  測量CPU時間
    2.1  發展歷史
    2.2  現狀
    2.3  測量add指令的時延
    2.4  直線代碼失敗
    2.5  簡單循環、循環開銷失敗、優化編譯器失敗
    2.6  死變數失敗
    2.7  更好的循環
    2.8  依賴變數
    2.9  實際執行時延
    2.10  更多細微差別
    2.11  小結
    習題
  第3章  測量內存層次
    3.1  內存計時
    3.2  關於內存
    3.3  緩存組織
    3.4  數據對齊
    3.5  頁表緩存組織
    3.6  測量內存的步驟
    3.7  測量緩存行的大小
    3.8  問題:預取第N+1行
    3.9  依賴載入
    3.10  非隨機的DRAM
    3.11  測量每個緩存級別的總大小
    3.12  測量每個級別的緩存相聯度
    3.13  頁表緩存時間
    3.14  緩存利用不足
    3.15  小結
    習題
  第4章  CPU與內存的交互
    4.1  緩存交互
    4.2  簡單矩陣乘法的動態
    4.3  估測
    4.4  初始化、反覆核對和觀察
    4.5  初始結果
    4.6  更快的矩陣乘法,轉置方法
    4.7  更快的矩陣乘法,子塊方法
    4.8  感知緩存的計算

    4.9  小結
    習題
  第5章  測量磁碟SSD的傳輸時間
    5.1  關於硬碟
    5.2  關於SSD
    5.3  軟體磁碟訪問和磁碟緩衝
    5.4  磁碟讀取有多快
    5.5  一次粗略估算
    5.6  磁碟寫入有多快
    5.7  結果
    5.8  從磁碟讀取
    5.9  寫入磁碟
    5.10  從SSD讀取
    5.11  寫入SSD
    5.12  多次傳輸
    5.13  小結
    習題
  第6章  測量網路流量
    6.1  關於乙太網
    6.2  關於集線器、交換機和路由器
    6.3  關於TCP IP
    6.4  關於數據包
    6.5  關於RPC
    6.6  空程差
    6.7  觀察網路流量
    6.8  示例RPC消息的定義
    6.9  示例日誌設計
    6.10  使用RPC的示例客戶-伺服器系統
    6.11  示例伺服器程序
    6.12  自旋鎖
    6.13  示例客戶端程序
    6.14  測量一個示例客戶-伺服器RPC
    6.15  后處理RPC日誌
    6.16  觀察
    6.17  小結
    習題
  第7章  磁碟和網路資料庫的交互
    7.1  時間對齊
    7.2  多個客戶端
    7.3  自旋鎖的應用
    7.4  實驗
    7.5  磁碟資料庫
    7.6  實驗
    7.7  實驗
    7.8  日誌
    7.9  理解事務時延的變化
    7.10  小結
    習題
第二部分  觀察
  第8章  日誌

    8.1  觀察工具
    8.2  日誌
    8.3  基本日誌
    8.4  擴展日誌
    8.5  時間戳
    8.6  RPC ID
    8.7  日誌文件的格式
    8.8  管理日誌文件
    8.9  小結
  第9章  聚合措施測量
    9.1  均勻的事件率與陣發的事件率
    9.2  測量間隔
    9.3  時間線
    9.4  進一步匯總時間線
    9.5  直方圖的時間尺度
    9.6  聚合每個事件的測量結果
    9.7  一段時間的值的模式
    9.8  更新間隔
    9.9  事務採樣
    9.10  小結
  第10章  儀錶板
    10.1  示例服務
    10.2  示例儀錶板
    10.3  主儀錶板
    10.4  實例儀錶板
    10.5  伺服器儀錶板
    10.6  健全檢查
    10.7  小結
    習題
  第11章  其他現有工具
    11.1  觀察工具的分類
    11.2  要觀察的數據
    11.3  top命令
    11.4  proc和 sys偽文件
    11.5  time命令
    11.6  perf命令
    11.7  oprofile
    11.8  strace
    11.9  ltrace
    11.10  ftrace
    11.11  mtrace
    11.12  blktrace
    11.13  tcpdump和Wireshark
    11.14  locktrace
    11.15  輸入負載、出站調用
    11.16  小結
    習題
  第12章  跟蹤工具
    12.1  跟蹤工具的優勢
    12.2  跟蹤工具的缺點

    12.3  3個起始問題
    12.4  示例1:早期的程序計數器跟蹤
    12.5  示例2:每個函數的計數和時間
    12.6  案例分析:Gmail的按函數跟蹤
    12.7  小結
  第13章  優秀觀察工具的設計原則
    13.1  需要觀察什麼
    13.2  有多頻繁?要多久
    13.3  開銷有多大
    13.4  設計的後果
    13.5  案例分析:直方圖桶
    13.6  設計數據顯示
    13.7  小結
第三部分  內核-用戶跟蹤
  第14章  KUtrace的目標、設計、
  實現
    14.1  概述
    14.2  目標
    14.3  設計
    14.4  實現
    14.5  內核補丁和Linux內核可載入模塊
    14.6  控製程序
    14.7  后處理
    14.8  關於安全問題的一點說明
    14.9  小結
  第15章  KUtrace中的Linux內核補丁
    15.1  跟蹤緩衝區數據結構
    15.2  原始跟蹤塊的格式
    15.3  跟蹤條目
    15.4  IPC跟蹤條目
    15.5  時間戳
    15.6  事件編號
    15.7  嵌套的跟蹤條目
    15.8  代碼
    15.9  數據包跟蹤
    15.10  AMD Intel x86-64補丁
    15.11  小結
    習題
  第16章  KUtrace的Linux內核可載入模塊
    16.1  內核介面數據結構
    16.2  模塊載入 卸載
    16.3  初始化和控制跟蹤
    16.4  實現跟蹤調用
    16.5  Insert
    16.6  InsertN
    16.7  切換到一個新的跟蹤塊
    16.8  小結
  第17章  KUtrace的用戶態的運行時控制
    17.1  控制跟蹤
    17.2  獨立的kutrace_control程序

    17.3  底層的kutrace_lib庫
    17.4  可載入模塊的控制介面
    17.5  小結
  第18章  KUtrace的后處理
    18.1  后處理的細節
    18.2  rawtoevent程序
    18.3  eventtospan程序
    18.4  spantotrim程序
    18.5  spantospan程序
    18.6  samptoname_k和samptoname_u程序
    18.7  makeself程序
    18.8  KUtrace的JSON格式
    18.9  小結
  第19章  KUtrace中軟體動態的顯示
    19.1  概述
    19.2  區域①—控制項
    19.3  區域②—y軸
    19.4  區域③—主時間線
    19.5  區域④—IPC圖例
    19.6  區域⑤—x軸
    19.7  區域⑥—保存/還原
    19.8  輔助控制項
    19.9  小結
第四部分  推理
  第20章  尋找什麼
    20.1  概述
    20.2  尋找原因
  第21章  執行太多
    21.1  概述
    21.2  程序
    21.3  謎團
    21.4  探索和分析
    21.5  理解謎團
    21.6  小結
  第22章  執行緩慢
    22.1  概述
    22.2  程序
    22.3  謎團
    22.4  浮點運算對立程序
    22.5  內存對立程序
    22.6  理解謎團
    22.7  小結
  第23章  等待CPU
    23.1  程序
    23.2  謎團
    23.3  探索和分析
    23.4  謎團
    23.5  理解謎團
    23.6  附加謎團
    23.7  小結

    習題
  第24章  等待內存
    24.1  程序
    24.2  謎團
    24.3  探索和分析
    24.4  謎團2:訪問頁表
    24.5  理解謎團
    24.6  小結
    習題
  第25章  等待磁碟
    25.1  程序
    25.2  謎團
    25.3  探索和分析
    25.4  讀取40MB
    25.5  順序讀取4KB的塊
    25.6  隨機讀取4KB的塊
    25.7  在SSD上寫入和同步
    25.8  在SSD上讀取40MB
    25.9  兩個程序同時訪問兩個文件
    25.10  理解謎團
    25.11  小結
    習題
  第26章  等待網路
    26.1  概述
    26.2  程序
    26.3  實驗
    26.4  實驗1中的謎團
    26.5  實驗1的探索與分析
    26.6  實驗1中RPC之間的時間
    26.7  實驗
    26.8  實驗
    26.9  實驗
    26.10  理解謎團
    26.11  附加異常
    26.12  小結
  第27章  等待鎖
    27.1  概述
    27.2  程序
    27.3  實驗1:長時間持有鎖
    27.4  實驗1中的謎團
    27.5  探索和分析實驗
    27.6  實驗2:修復鎖捕獲
    27.7  實驗3:通過多個鎖修復鎖爭用
    27.8  實驗4:通過鎖住更少的工作來修復鎖爭用
    27.9  實驗5:通過為儀錶板使用RCU來修復鎖爭用
    27.10  小結
  第28章  等待時間
    28.1  定期工作
    28.2  超時
    28.3  時間分片

    28.4  內在的執行延遲
    28.5  小結
  第29章  等待隊列
    29.1  概述
    29.2  請求的分佈
    29.3  隊列的結構
    29.4  工作任務
    29.5  主任務
    29.6  Dequeue操作
    29.7  Enqueue操作
    29.8  PlainSpinLock類
    29.9  「工作」常式
    29.10  簡單的示例
    29.11  哪些地方可能發生了問題
    29.12  CPU頻率
    29.13  複雜的示例
    29.14  等待CPU:RPC日誌
    29.15  等待CPU:KUtrace
    29.16  PlainSpinLock存在的缺陷
    29.17  根本原因
    29.18  修復PlainSpinLock:可觀察性
    29.19  負載均衡
    29.20  隊列深度:可觀察性
    29.21  結尾處的自旋
    29.22  剩下的最後一個缺陷
    29.23  交叉檢查
    29.24  小結
    習題
  第30章  全書回顧
    30.1  你學到了什麼
    30.2  我們沒有講什麼
    30.3  接下來的工作
    30.4  全書小結
附錄A  示例伺服器
附錄B  跟蹤條目
術語表
參考文獻
KUtrace HTML圖例

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032