这本书讲什么

操作系统和应用的性能:怎么判断瓶颈在哪、用什么方法查、用什么工具看。以 Linux 为主,写给企业服务器和云环境,作者说其中很多内容也适用于客户端设备和桌面系统。前四章是方法和地基,第 5 章讲应用,接着五章各讲一种资源(CPU、内存、文件系统、磁盘、网络),后面是云、基准测试,以及 perf、Ftrace、BPF 三件工具的说明书,最后一个完整的案例。

作者在序言里交代了全书的组织方式(§P7):很多章分成前后两半,前一半是术语、概念、方法,这些预计多年后仍然适用;后一半是架构、工具和可调参数,会过时,但仍然是前一半怎么落地的例子。这也决定了本站的读法:前一半先读,后一半用到再查。

第 6 到 10 章都是这个套路 术语、模型 概念 方法 观测工具(挑几个) 架构 其余工具 实验 调优、习题 绿色:多年不过时,先读。蓝色:最常用的几个工具,也先读。 灰色:会过时、或只在某些环境里用得上,遇到了再翻。各章的分节地图给每一节都标了档。
本站画的示意。实际的小节名和顺序每章略有不同,以各章的分节地图为准。

不读完,怎么用

这正是作者设想的读法之一。序言里说,很多人的本职不是性能,他们只需要懂到能解决眼前的问题;所以这本书尽量写短,并且方便直接跳到某一章(§P9)。作者还说第 1 到 4 章是必要的背景,读完以后,其余各章按需查阅,第 13 到 15 章的三件工具是选读(§P6)。

本站在这个基础上再收窄一点,分三步:

  1. 花一个周末,读最短路径

    下面「最短路径」里四章的「先读」节,合起来是全书的一小部分。读完你会有一套查问题的顺序(USE 方法、负载特征、下钻),知道负载平均、利用率、饱和度、火焰图这些东西到底是什么。

  2. 遇到问题时,从症状进去

    场景手册按症状列了十六种情况,每种告诉你先敲什么、看什么、翻哪一节。翻到的那一章,先看本站那一页的「方法」和「工具速查」,再去读书里对应的节。

  3. 平时,在自己的机器上练

    每章的「动手」给了一个能在 WSL2 上做的小实验:自己造出这一章讲的现象,再用这一章的工具把它找出来。诊断题用编的工具输出练判断。

三个入口

场景手册从症状出发:CPU 很忙、慢但 CPU 不忙、内存一直涨、连接被拒、p99 很高…… 工具卡从命令出发:mpstat、pidstat、iostat、perf、bpftrace……每个能回答什么、看哪几列。 按章每章一页:什么时候翻它、方法、工具速查、动手、分节地图、诊断题。

最短路径

每一章的「先读」节,由各章导读页的分节地图标出,这里自动汇总。第 3 章(操作系统)没有放进来:读过本站 OSTEP 的读者,大部分内容已经熟悉,用到时再查。

全书地图

本站把全书分成五块,原书本身不分部分。第 2 块的五章彼此独立,按你遇到的问题挑着读;第 4 块的三章是工具说明书,前面各章用到这些工具时会指过去。

分节地图

序言不长。值得读的是第二版新在哪(§P1)、全书结构(§P6)和读者对象(§P9),排版约定(§P10)扫一眼,知道 # 提示符表示要 root。

  1. “There are known knowns; there are…约 100 词开篇拉姆斯菲尔德那段「未知的未知」,以及它和性能问题的关系。
  2. About This Edition约 300 词关于这一版第二版新增 BPF、perf、Ftrace 三章,删了大部分 Solaris 内容。
  3. About This Book约 200 词关于本书讲操作系统和从操作系统看应用的性能;为什么内核性能不是已解决的问题。
  4. Operating System Coverage约 100 词覆盖的操作系统以 Linux 和 Intel 处理器为主,例子多来自 Ubuntu。
  5. Other Content约 200 词其他内容工具截图、历史、名人录,以及和作者另一本 BPF 书的关系。
  6. What Isn’t Covered约 100 词不涉及的内容不讲系统管理和软件安装。知道即可。
  7. How This Book Is Structured约 400 词本书结构每章一句话的介绍,以及作者建议的读法。
  8. As a Future Reference约 100 词作为长期参考每章前半不过时、后半会过时的组织方式。
  9. Tracing Examples约 200 词跟踪工具的例子书里的跟踪用 BCC、bpftrace 和 Ftrace;重要的是它们提出的问题。
  10. Intended Audience约 300 词读者对象为时间紧的工程师写的,方便跳读;习题的定位。
  11. Typographic Conventions约 100 词排版约定函数、命令、系统调用的写法,# 和 $ 两种提示符。
  12. Supplemental Material, References, and Bibliography约 100 词补充材料与参考文献一份推荐书单。想深入操作系统时再看。

词与短语

序言里的几个说法。斜体那一行是原句里连续的几个词,在电子书里搜它就能找到那一句。

§0 (开篇)

be met with chuckles
… was met with chuckles from those …
引来一阵笑声
be met with 是「得到(某种反应)」,不是「遇见」。

§P1 About This Edition

long shelf life
… designed it to have a long shelf …
(内容)经久不过时
shelf life 本是食品的保质期。
go out of date
… tuning will go out of date …
过时

§P2 About This Book

get the most out of
… help you get the most out of …
把(系统的)潜力发挥到最大
a solved problem
… as a solved problem. It isn’t!
早已解决的问题
作者先说你可能会这么以为,紧跟着一句 It isn’t! 否定掉。

§P4 Other Content

laborious
… does require laborious explanation, that …
费劲的,冗长的
作者的玩笑:一个工具要靠长篇解释才能看懂,可能是设计失败了。
touch upon
… I touch upon the history of …
简单提到
不是「触摸」,是「顺带讲一讲」,意思是不展开。

§P6 How This Book Is Structured

paint a bigger picture
… to paint a bigger picture of …
描绘出全貌

§P9 Intended Audience

firsthand
… experienced this pressure firsthand.
亲身(经历)
just enough
… need to know just enough to …
刚好够用
强调「够用就行」,正是本站的读法。
jump ahead
… facilitate jumping ahead to specific chapters.
直接跳到后面
thought-provoking
… should at least be thought-provoking.
发人深思的
同一个括号里先说这些选做题可能根本无解,这句是自嘲:至少能让你想一想。
day to day
… of it used day to day.
日常(用到)