了解系统性能优化的必读书. 但是建议先看一本内核实现方面的书, 如 Understanding Linux Kernel.
这本书的结构非常清晰: 1 到 4 章是综合性, 综述了性能优化方面的概念, 方法论和工具简介; 接下来基本 是沿着操作系统各重要组件的专门讲解: cpu, 内存, 文件系统, 磁盘, 网络, 并从单个系统扩展到云计算环境, 每部分又分别从概念, 方法, 工具, 优化方向这四个主题细化; 然后则是专门分几章讲了一下比较综合性的工具: perf, ftrace 和 bpf.
清晰的简直可以说是性能讲解的 “模式书” 了. 但后面的工具讲解多是罗列性, 读着也容易困 (可能也因为 我不是专门做优化的吧), 而且工具相关的内容, 重复叙述的地方很多, 基本是每章都有. 如果去掉这些重复, 这本书应该不至于这么厚.
所以我是通读了前四章, 后面的每章都大概翻了翻, 比较适合当作案头参考书.
这本书对于我来说, 也算是计算机组成和 linux 内核方面的 recap. 作者讲这些东西, 虽很精简, 但是 总结的很到位 —- 这些内容读起来还是比较有意思的.
第二版原书出于 2021 年, 译本仅隔一年, 内容还是很新的. 据译者说, 更新的内容达 40%+.
没看过第一版, 第二版翻译质量还好, 但很多细节译的非常僵硬, 而且很多有惯例译法的名词, 非要自己造 一个出来, 且各章节质量参差不齐 (见勘误), 这或许是多人或团队翻译的通病吧. 还有一点是, 我觉得有 些名词直接用英文比较好, 硬翻成中文, 反而有时候让人不知所云. 总之, 如果对内核有一定了解且英文 功底不错的话, 不影响阅读, 但最好配一本英文电子版.
毫无惊喜, 索引是被砍了的.
对出版社提几点建议
- 最好在第一次遇到名词缩写时, 加上全称
- 原文在标题上都加上了全称和缩写, 你为什么要省了呢?
- 最好别搞扫码获取链接了, 恶心不恶心人是主观, 但是真的并不方便.
- 尽力加上索引, 这种涉及大量术语的技术书, 有索引和无索引的阅读体验真的差很多.
定价 238 的书, 这些要求不过分吧?
勘误
(多是针对翻译的, 也有少量针对印刷错误)
- p46. “诊断循环” 和 “诊断周期” 英文都是用的 “diagnosis cycle”, 应译法一样, 避免误解.
- p99. “适合 cpu”, 原文为 fits in, 明显是指数据大小, 直译为 “适合”, 不太合适.
- p136, 图 4.5. “虚拟内存” 和 “巻管理器” 应互换位置.
- p150. “蹦床法” ?, 真有这个名字吗? 还是在指前文所讲的 “插入的 trampoline(蹦床) 方法” 而已?
- p156. “会介绍 tracepoint” 应为 “介绍过 tracepoint”.
- p161. “可以发出…”, 原文为 emit, 应为 “生成…” 或 “输出…”.
- p171. “找到…公用代码路径”, 原文为 “find the most common code path for…”, 故应为 “找到…最为频繁的代码路径”, 跟 “公用” 无关, “most” 没有表达出来.
- p175. “要运行的光纤”, 应为 “要运行的纤程”.
- p175. “使用了一个单事件工作线程”, 原文为 “using a single event worker thread”. “单” 是针对线程数, 而非针对事件数的.
- p195. “可能会产生问题的是试图识别…”. 基本上整段断句和意思理解错了.
- p240. “调度类的参数”, 应去掉 “的参数”, 这里只是在列举调度类.
- p247. “捕捉到很多简单的机会.”, 原文 “lead to some quick wins”, 意应为 “可以快速的识别 出一些优化点”.
- p387: “ex4dist” 应为 “ext4dist”.
- p422: “磁盘服务时间是进入磁盘的队列之后…”, 应用 “…离开磁盘的队列之后…”.
- p440: “因为写抵销和更好的写聚合, 更长的时间可能会降低磁盘 I/O”. 原文 “Longer times may reduce I/O due to write cancellation and better aggregate writes”. 既然前文中 “write cancellation” 被译为 “写取消”, 这里应保持一致.
- p454: “kB-wrtn” 应为 “kB_wrtn”.
- p500: “高缓冲”, 原文 “large buffer”.
- p508: “正在对 QUIC … 的具体配置”, 句尾应加上 “…进行标准化”.
- p519: “nictat” 应为 “nicstat”.
- p580: “缩主机” 应为 “宿主机”.