20年20本经典畅销书
NO.9
豆瓣评分9.3
性能大师经典巨著
每一个学习性能优化/性能评估的工程师的必备手册
性能测量的水相当深,斯坦福大学的 John Ousterhout 教授在“Always Measure One Level Deeper”一文(《ACM 通讯》杂志,2018 年第 7 期)中提到,在他亲历的几十次系统性能评估中,没有哪次的首批测量结果是正确的,都是先掉进坑里,再慢慢爬出来。
就拿文件 I/O 来说,你测得的是真实的磁盘性能,还是操作系统中文件系统的性能?存储是分级的。操作系统有页缓存,高档的磁盘控制器(阵列卡)有带电池备份的写缓存,机械硬盘上有高速缓存,混合型机械硬盘带有 SSD 缓存,消费级 TLC SSD 上带有 SLC 缓存。文件 I/O 的性能主要取决于读写操作击中的是哪一级缓存,而缓存颠簸(thrashing)是系统过载时造成性能急剧下降的重要因素。
如今的计算机系统极度复杂,性能优劣往往违反直觉。不少人可能先入为主地认为mmap() 比 read()/write() 读写文件更快,因为前者减少了系统调用和内存拷贝。这听上去很有道理,也正是 20 世纪 80 年代 UNIX 引入 mmap() 的理由。
但是卡内基梅隆大学的 Andrew Crotty 等人本书作者 Brendan Gregg 是全球知名的实战派性能专家,他发明的火焰图是分析CPU 开销的有力工具,如今已是我们日常性能分析的标配。
这本书是他多年工作经验的总结,既有理论深度,又有丰富案例,在同类图书中是较为全面深入的,非常值得深入阅读。这个新版本我会第一时间购买,常备案头,随时查阅。
——陈硕 《Linux 多线程服务端编程 :使用 muduo C++ 网络库》作者
Gregg 在 Netflix 积累了丰富的云计算环境下的性能优化的经验后又加入 Intel,按他的说法,“将为从应用程序到硅的所有领域开发新的性能和调试技术。这将跨越所有xPU(CPU、GPU、IPU 等),并对世界产生巨大影响”。
本书可作为大家入门性能优化的起点,以此为基础,一方面深入操作系统内核,另一方面广泛积累应用程序的优化经验,最后再回归到硬件,你将走入一个更广泛的世界。
——陈莉君 西安邮电大学教授
作为高性能计算和云计算系统的设计、开发和运维人员,任何时候讨论性能优化总是一个充满挑战却令人期望的事情。
你似乎永远无法知道所设计的系统架构、调度策略和数据结构是否能达到最理想的状态,但经过各种不断尝试后因取得的性能提升而获得的满足感却是如此让人陶醉。
本书从性能分析和调优的基础概念和方法入手,沿着操作系统内核、应用、CPU、内存、文件系统、磁盘、网络、云计算系统以及调优工具的线索,展开一幅计算机系统性能优化的全栈式画卷,向读者介绍影响计算机系统性能的关键因素,以及深入理解如何动手去解决这些性能瓶颈。
作为国家超级计算中心的总工程师,让高性能计算机系统在运行时任务执行最快、用户在队列的等待时间最短、系统平均无故障时间越长,是我追求的永恒目标。
我所带领的运维与系统开发团队一直在为提高我国超级计算的系统性能努力,这本书让我有推荐给我们运维团队每一个成员的强烈冲动。
毫无疑问,本书的内容将有助于我们深入理解系统性能背后的知识,建立完整的“系统观”。同时我还要将本书推荐给我的研究生们,值得每一位立志做体系结构研究的学生将其作为入门教材,在动手进行高性能系统和云计算系统优化研究前,对何为性能优化有一个全面完整的认识,有助于他们在研究过程中将问题考虑得更全面。
最后我要把这本书推荐给所有从事高性能计算与云计算领域的从业者,无论你是资深架构师还是运维人员,相信我,本书对你重新思考系统设计、性能优化将会起到很大的作用,值得一读。
——唐卓 国家超级计算长沙中心总工程师、湖南大学教授
作为一名讲授操作系统课程的教师,性能一直是课堂中很难的主题,因为你永远不知道什么样的性能问题在等着你。
就在几天前,我在部署一批机器时排查了一台机器的性能问题,最终发现竟然是 USB 接口发生了短路(一个真正的物理 bug),导致kworker/0:0+pm 一直处于活动的状态!正是本能地使用了 Linux 的 perf 工具(本书在第13 章中详细介绍)帮助我瞬间定位到 xhci 相关的代码,将性能问题指向了 USB 子系统。在暴力“拆除”USB 接口后,问题解除。在课堂上,我会和学生谈论“理解性能就是理解程序在时间轴上的执行”,但这谈何容易!
我们既想看得清楚,对每条指令执行的踪迹和所属都了如指掌,又不想付出任何代价,因为任何插入程序中的探针都会干扰程序的执行。在系统中的所有组件都成为木桶的短板之后,性能调优更是一项艰苦卓绝,但却对生产系统来说至关重要的任务。
幸运的是,今天我们有了许多成熟的性能分析方法和工具。我找不到任何一份资料可以和 Brendan Gregg 的这本全面、深入的书籍相提并论。
Brendan Gregg 作为性能分析领域首屈一指的专家,毫无保留地将其真知灼见和技术细节与读者分享。读完本书,你就有了世界上最先进的性能分析“武器库”,不再惧怕任何系统的性能分析。
——蒋炎岩 南京大学教师
当前云计算等复杂场景下的系统性能问题日益严峻,需要专业的方法才能找到瓶颈所在,然后才能有针对性地对其做优化,以让业务高并发地运行。本书从性能分析所需要的内存、文件系统、网络、CPU 等方面进行了详细介绍,并结合丰富的案例将读者快速带入实战状态,作者还总结了一套性能分析的理论和方法,让读者彻底把提高性能的法宝掌握在手中。
另外,本书针对如今火到天际的 BPF 前后端技术及相应工具也进行了介绍。
本书的作者 Gregg 是国际知名的性能专家,译者在操作系统和性能领域也是身经百战、经验丰富,无论你是系统运维人员、研发工程师,还是性能架构师,通过阅读本书,都能帮你打开解决性能问题的大门。强烈推荐本书!
——毛文安,龙蜥社区系统运维 SIG Maintainer
本书详尽地介绍了企业环境和云计算环境下的性能测试方法与工具,能为读者带来立竿见影的帮助。“无法衡量就无法管理”,本书先对组件性能进行分析与观测,然后在此之上进行改进。
书中的方法与思路能够“授人以渔”,引领读者在系统性能领域进行长期思考。
优秀的著作离不开译者的付出,本书的译者通过精准的翻译,原汁原味地将这本经典技术著作呈现给大家。无论你是系统管理员、云计算运维人员、技术爱好者,还是立志成为系统性能架构师、专家,这本经典著作都值得力荐给你。
——吕昭波,《云端架构》作者
多年前我第一次接触到火焰图这种神奇的性能剖析方法时,Brendan Gregg 令我惊为天人,后来读《性能之巅:洞悉系统、企业与云计算》一书更是受益良多。
这次再版,作者补充了近年热门的可观测性、eBPF、Kubenertes 等方面的知识,并将第一版中多处分析方法进一步细化成具体的观测工具指南。高屋建瓴的理论配合深入浅出的落地实践,绝对是广大 IT 工程师的案头必备书籍。
——饶琛琳,日志易产品副总裁,前微博系统架构师
分析性能问题需要的技术是很广泛的,操作系统、数据库、网络、语言、存储、架构等方面的知识都需要理解和掌握。而要想具备性能瓶颈分析和定位的能力,掌握操作系统方面的知识是绝对跳不过去的一个环节。
本书从性能分析的角度出发来理解操作系统,对广大开发人员梳理性能分析思路有很好的借鉴作用。本书在不同的操作系统模块中提供了实用的分析思路和方法,为应用程序、CPU、内存、网络、文件系统、磁盘等的性能分析提供了对应的工具,同时给出了相应的操作实例,最后还结合一些基准测试工具以及 BPF 工具给出进一步进行系统级性能分析的操作指导。
这是一本如果要学习性能分析就必然要看的书。
——高楼,盾山科技 CEO、7DGroup 创始人
本书采用自下而上的结构,从底层的操作系统、CPU、磁盘等基础元素开始,到从工作原理层面分析性能受到的各种不同影响,以及如何评估、衡量各项性能指标,让读者知其然并知其所以然,在面对实际情况时能够更有针对性地做出判断和决定,而不是机械地、教条地行事。
本书还提供了案例,一步步地展示了实际性能问题的排查调优过程。
——林应 淘宝技术部高级技术专家
本书以一种奇妙而到位的方式,把高屋建瓴的视角和脚踏实地的实践结合了起来,对性能这一复杂、微妙甚至有些神秘的话题进行了外科手术般的解析,读来真是让人感觉豁然开朗。
全书以罕见的遍历式结构,对软件系统的每一个部件都如庖丁解牛般地加以剖析,几乎涉及业务的每一个细节。然而,对这些细节并非简单罗列,而是每一段论述都与具体的角色和场景紧密结合,取舍之间极见智慧。方法论更不是单说理,而是通过一个又一个的具体实例,逐步地建构起来的,并反复运用于各个部件之上,使读者明白原理普适性的同时也知道怎样举一反三。
本书也是难得的 UNIX/Linux 系统管理员和运维工程师的百科全书式参考手册,相对于工作在 Windows 上的同行而言,他们获得的知识更加零碎,甚至在很多场合下不得不求助于网络上的只言片语,并只能通过耗时的、高风险的生产环境实验来取得一手经验数据。
——高博 青年计算机学会论坛(YOCSEF)会员,文津奖得主,《研究之美》译者
学习调优技术有很多挑战,很高兴看到有这样一本关于系统优化的好书被引进到国内。
——张银奎 资深调试专家,《软件调试》和《格蠹汇编》作者
本书的作者 Gregg 先生是业内性能优化方面大名鼎鼎的人物,他早年在 Sun 公司的时候是性能主管和内核工程师,也是大名鼎鼎的 DTrace 的开发人员,要知道 DTrace 先后被移植到很多操作系统上。全书都在讨论性能优化,详细介绍了诸如 DTrace、vmstat、mpstat、sar、SystemTap 等工具,如何将这些工具组合并应用在适当的场景中,是一门学问,相信读者会在书中找到答案。顺便说一句,DTrace+SystemTap 帮助 SAE 解决过非常多的性能疑难杂症,一定会对读者的业务分析有所帮助!
单个进程的性能分析是简单的,因为我们可以定位到系统调用或者库调用级别,然后对照代码很快就能解决问题,但整个业务的性能分析是复杂的,这里面涉及多个业务单元、庞大的系统组件,随机变动、诊断循环等多种方法,并且介绍了涉及分析的数学建模和概念,详细讨论了操作系统,这对读者是很有用的。因为很多时候我们在不改代码的情况下优化系统,也就是优化内存分配比例,优化 CPU 亲密度,尝试各种调度算法,做操作系统层面的各种网络参数调优等。对于上述所有问题的认识,我相信读者在通读全书后会有不一样的感觉。
记住,不要只读一遍,每读一遍都必有不同的体会。不多说了,我要赶紧再去读一遍!
——丛磊 新浪 SAE 创始人 / 总负责人