这本书讲什么
操作系统和应用的性能:怎么判断瓶颈在哪、用什么方法查、用什么工具看。以 Linux 为主,写给企业服务器和云环境,作者说其中很多内容也适用于客户端设备和桌面系统。前四章是方法和地基,第 5 章讲应用,接着五章各讲一种资源(CPU、内存、文件系统、磁盘、网络),后面是云、基准测试,以及 perf、Ftrace、BPF 三件工具的说明书,最后一个完整的案例。
作者在序言里交代了全书的组织方式(§P7):很多章分成前后两半,前一半是术语、概念、方法,这些预计多年后仍然适用;后一半是架构、工具和可调参数,会过时,但仍然是前一半怎么落地的例子。这也决定了本站的读法:前一半先读,后一半用到再查。
不读完,怎么用
这正是作者设想的读法之一。序言里说,很多人的本职不是性能,他们只需要懂到能解决眼前的问题;所以这本书尽量写短,并且方便直接跳到某一章(§P9)。作者还说第 1 到 4 章是必要的背景,读完以后,其余各章按需查阅,第 13 到 15 章的三件工具是选读(§P6)。
本站在这个基础上再收窄一点,分三步:
- 花一个周末,读最短路径
下面「最短路径」里四章的「先读」节,合起来是全书的一小部分。读完你会有一套查问题的顺序(USE 方法、负载特征、下钻),知道负载平均、利用率、饱和度、火焰图这些东西到底是什么。
- 遇到问题时,从症状进去
场景手册按症状列了十六种情况,每种告诉你先敲什么、看什么、翻哪一节。翻到的那一章,先看本站那一页的「方法」和「工具速查」,再去读书里对应的节。
- 平时,在自己的机器上练
每章的「动手」给了一个能在 WSL2 上做的小实验:自己造出这一章讲的现象,再用这一章的工具把它找出来。诊断题用编的工具输出练判断。
三个入口
最短路径
每一章的「先读」节,由各章导读页的分节地图标出,这里自动汇总。第 3 章(操作系统)没有放进来:读过本站 OSTEP 的读者,大部分内容已经熟悉,用到时再查。
全书地图
本站把全书分成五块,原书本身不分部分。第 2 块的五章彼此独立,按你遇到的问题挑着读;第 4 块的三章是工具说明书,前面各章用到这些工具时会指过去。
分节地图
序言不长。值得读的是第二版新在哪(§P1)、全书结构(§P6)和读者对象(§P9),排版约定(§P10)扫一眼,知道 # 提示符表示要 root。
- “There are known knowns; there are…约 100 词开篇拉姆斯菲尔德那段「未知的未知」,以及它和性能问题的关系。
- About This Edition约 300 词关于这一版第二版新增 BPF、perf、Ftrace 三章,删了大部分 Solaris 内容。
- About This Book约 200 词关于本书讲操作系统和从操作系统看应用的性能;为什么内核性能不是已解决的问题。
- Operating System Coverage约 100 词覆盖的操作系统以 Linux 和 Intel 处理器为主,例子多来自 Ubuntu。
- Other Content约 200 词其他内容工具截图、历史、名人录,以及和作者另一本 BPF 书的关系。
- What Isn’t Covered约 100 词不涉及的内容不讲系统管理和软件安装。知道即可。
- How This Book Is Structured约 400 词本书结构每章一句话的介绍,以及作者建议的读法。
- As a Future Reference约 100 词作为长期参考每章前半不过时、后半会过时的组织方式。
- Tracing Examples约 200 词跟踪工具的例子书里的跟踪用 BCC、bpftrace 和 Ftrace;重要的是它们提出的问题。
- Intended Audience约 300 词读者对象为时间紧的工程师写的,方便跳读;习题的定位。
- Typographic Conventions约 100 词排版约定函数、命令、系统调用的写法,# 和 $ 两种提示符。
- Supplemental Material, References, and Bibliography约 100 词补充材料与参考文献一份推荐书单。想深入操作系统时再看。
词与短语
序言里的几个说法。斜体那一行是原句里连续的几个词,在电子书里搜它就能找到那一句。