性能之巅:系统、企业与云可观测性pdf下载pdf下载

性能之巅:系统、企业与云可观测性百度网盘pdf下载

作者:
简介:本篇主要提供性能之巅:系统、企业与云可观测性pdf下载
出版社:电子工业出版社京东自营官方旗舰店
出版时间:2022-07
pdf下载价格:9.00¥


预览


内容介绍

产品特色

编辑推荐

《性能之巅(第2版):系统、企业与云可观测性》介绍了操作系统和应用程序的概念、策略、工具和调优,并用基于Linux的操作系统作为主要示例。对这些工具和技术的深刻理解对于今天的开发者来说至关重要,这个新版本针对这些工具和技术做了全面的修订和更新。实施本书中讲述的策略能够让最终用户有更好的体验并让运维成本更低,对于按操作系统实例收费的云计算环境尤为如此。

系统性能专家和畅销书作者Brendan Gregg总结了相关的操作系统、硬件和应用程序理论,即使是之前从未做过性能分析的人员也能迅速上手。不仅如此,Gregg还对包括扩展BPF在内的新工具和技术做了深入的讲解,并展示了如何从云、网络和大规模企业系统中获得丰厚收益。

本书的主要内容包括:

●硬件、内核和应用程序的内部结构,以及它们的工作机制

●对复杂系统进行快速性能分析的方法

●优化CPU、内存、文件系统、磁盘和网络

●使用perf、Ftrace和BPF (BCC和bpftrace)进行复杂的剖析和跟踪

●与云计算管理程序相关的性能挑战

●更有效地实施基准测试


内容简介

大型企业服务、云计算和虚拟计算系统都面临着严峻的性能挑战。如今,国际知名的性能专家 Brendan Gregg 将业界验证的方法、工具和指标融汇在一起,足以应对复杂环境的性能分析和调优工作。


《性能之巅(第2版):系统、企业与云可观测性》着力讲述 Linux 的性能,但所论述的性能问题适用于所有的操作系统。你将了解到系统是如何工作与执行的,还将学习到如何分析和改进系统及应用程序性能的方法。本书对第 1 版的内容做了大量的更新,这些更新包括但不限于 :近年来 Linux 内核各方面的变化对于资源性能的影响;云计算架构的主流演进方向;动态跟踪工具的新星(BPF 及其前后端技术);常见性能工具的使用方法的变化等。需要说明的是,在第 1 版中进行性能分析所用到的术语、概念和方法,在第 2 版中几乎没有变化,依然中肯适用,经得起时间的检验。


《性能之巅(第2版):系统、企业与云可观测性》的目标受众主要是系统管理员及企业与云计算环境的运维工程师。所有需要了解操作系统和应用程序性能的开发人员、数据库管理员和网站管理员都适合阅读本书。对于刚接触性能优化的学生等人员,本书还提供了包含Gregg 丰富教学经验的练习题。


作者简介

Brendan Gregg是计算性能和云计算方面的行业专家。他是Netflix的高级性能架构师,从事性能设计、评估、分析和调优工作。他是多本技术图书的作者,包括《BPF之巅:洞悉Linux系统和应用性能》。他曾获得USENIX LISA系统管理的杰出成就奖,还曾担任内核工程师和性能负责人,并且是USENIX LISA 2018会议的项目联合主席。他开发了收录在多个操作系统中的性能工具,还开发了包括火焰图在内的用于性能分析的可视化工具和方法。


译者简介

徐章宁,目前就职于小红书,担任 SRE 专家工程师,负责混沌工程等云原生可观测性项目的研发。曾就职于百度上海研发中心和 EMC 中国研发中心,担任 SRE 运维工程师。对于云原生计算领域发生的一切变革抱有热忱的态度,对大型系统运维和性能调优有浓厚兴趣。


吴寒思,目前就职于 eBay 中国研发中心,担任软件技术经理,负责广告系统、推荐系统和搜索系统的研发。曾就职于 EMC 中国研发中心,担任文件系统研发工程师。对大数据、机器学习和性能调优有浓厚兴趣。


余亮,目前就职于百度,担任 SRE 资深研发工程师。负责混沌工程、智能运维等稳定性工程项目的研发。曾就职于Synopsys 上海研发中心,担任 SWE 工程师。喜欢钻研架构优化、性能调优等技术。


精彩书评

性能测量的水相当深,斯坦福大学的 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


系统性能问题一直是我们面临的难题之一。本书从系统性能、优化分析到应用程序性能及 CPU、内存、文件系统、磁盘、网络,并结合案例由浅入深地讲述了性能方面的知识。本书的作译者都是性能优化领域的专家,实战经验丰富。本书对系统管理员、运维工程师、研发工程师具有极高的参考价值,阅读本书,收获颇多,力荐!

——田国杰(@JackTian),微信公众号“杰哥的 IT 之旅”作者


本书详尽地介绍了企业环境和云计算环境下的性能测试方法与工具,能为读者带来立竿见影的帮助。“无法衡量就无法管理”,本书先对组件性能进行分析与观测,然后在此之上进行改进。书中的方法与思路能够“授人以渔”,引领读者在系统性能领域进行长期思考。优秀的著作离不开译者的付出,本书的译者通过精准的翻译,原汁原味地将这本经典技术著作呈现给大家。无论你是系统管理员、云计算运维人员、技术爱好者,还是立志成为系统性能架构师、专家,这本经典著作都值得力荐给你。

——吕昭波,《云端架构》作者


多年前我第一次接触到火焰图这种神奇的性能剖析方法时,Brendan Gregg 令我惊为天人,后来读《性能之巅:洞悉系统、企业与云计算》一书更是受益良多。这次再版,作者补充了近年热门的可观测性、eBPF、Kubenertes 等方面的知识,并将第一版中多处分析方法进一步细化成具体的观测工具指南。高屋建瓴的理论配合深入浅出的落地实践,绝对是广大 IT 工程师的案头必备书籍。

——饶琛琳,日志易产品副总裁,前微博系统架构师


分析性能问题需要的技术是很广泛的,操作系统、数据库、网络、语言、存储、架构等方面的知识都需要理解和掌握。而要想具备性能瓶颈分析和定位的能力,掌握操作系统方面的知识是绝对跳不过去的一个环节。本书从性能分析的角度出发来理解操作系统,对广大开发人员梳理性能分析思路有很好的借鉴作用。本书在不同的操作系统模块中提供了实用的分析思路和方法,为应用程序、CPU、内存、网络、文件系统、磁盘等的性能分析提供了对应的工具,同时给出了相应的操作实例,最后还结合一些基准测试工具以及 BPF 工具给出进一步进行系统级性能分析的操作指导。这是一本如果要学习性能分析就必然要看的书。

——高楼,盾山科技 CEO、7DGroup 创始人


在计算机技术的发展长河中,性能问题一直是绕不开的话题。现在市面上针对性能测试的图书有很多,但和本书一样面面俱到的,却是凤毛麟角。本书不仅从操作系统、CPU、内存、文件系统、磁盘、网络等方面介绍了计算机性能的基础知识,同时还与时俱进,从云计算等当前热门技术的角度,介绍了如何进行性能优化。除此之外,本书还介绍了性能测试的相关方法论和性能测试工具,具有很高的实用性。本书的作译者都是性能领域的专家,在业内享有极高声望。这本经典的著作,非常适合研发人员、运维人员、测试人员当作性能优化的参考书,力荐!

——臻叔,微信公众号“程序员臻叔”,作者


本书采用自下而上的结构,从底层的操作系统、CPU、磁盘等基础元素开始,到从工作原理层面分析性能受到的各种不同影响,以及如何评估、衡量各项性能指标,让读者知其然并知其所以然,在面对实际情况时能够更有针对性地做出判断和决定,而不是机械地、教条地行事。本书还提供了案例,一步步地展示了实际性能问题的排查调优过程。

——林应 淘宝技术部高级技术专家


本书以一种奇妙而到位的方式,把高屋建瓴的视角和脚踏实地的实践结合了起来,对性能这一复杂、微妙甚至有些神秘的话题进行了外科手术般的解析,读来真是让人感觉豁然开朗。全书以罕见的遍历式结构,对软件系统的每一个部件都如庖丁解牛般地加以剖析,几乎涉及业务的每一个细节。然而,对这些细节并非简单罗列,而是每一段论述都与具体的角色和场景紧密结合,取舍之间极见智慧。方法论更不是单说理,而是通过一个又一个的具体实例,逐步地建构起来的,并反复运用于各个部件之上,使读者明白原理普适性的同时也知道怎样举一反三。本书也是难得的 UNIX/Linux 系统管理员和运维工程师的百科全书式参考手册,相对于工作在 Windows 上的同行而言,他们获得的知识更加零碎,甚至在很多场合下不得不求助于网络上的只言片语,并只能通过耗时的、高风险的生产环境实验来取得一手经验数据。

——高博 青年计算机学会论坛(YOCSEF)会员,文津奖得主,《研究之美》译者


纵观全书,作者建立了系统性能优化的体系框架,并且骨肉丰满,很明显,他不仅擅长某方面的性能优化,而且是全方位的专家,加之他作为 DTrace(一种可动态检测进程状态的工具)的主要开发者,使得本书的说服力和含金量大增。本书首先提及性能优化的方法论和常见性能检测工具的使用,具体内容更是涉及可能影响 Linux 系统性能的方方面面,从操作系统、应用程序、CPU、内存、文件系统、磁盘到网络,无所不包。在以上这些话题的探讨中,作者的表述方法值得称道—每章都程式化地介绍了术语、模型、概念、架构、方法、分析工具和调优建议等,这对于因长期工作形成一定强迫症的某些技术人员,如我自己,阅读时感到赏心悦目,这也从侧面体现了作者深厚的技术功底和文字驾驭能力。本书提供的性能优化方法论也令人印象深刻,包括几种常见的错误思考方法,如街灯法、随意猜测法和责怪他人法。在列举各种不正确的方法后,作者建议采用科学法,科学法的“套路”是 :描述问题→假设→预测→实验→分析。本书用单独的章节系统性地介绍了操作系统、性能检测方法和各种基准测试,还特别介绍了作者主导开发的 DTrace(在本书的例子中,用 DTrace 监控 SSH 客户端当前执行的每个命令并实时输出),这使得本书作为工具书的价值更得以彰显。云计算的出现,对系统优化带来新的挑战。作者作为某云计算提供商的首席性能工程师,带来了一个真实的云客户案例分析,包括如何利用本书提及的技术、方法和工具,一步一步地分析和解决问题。

——萧田国 触控科技运维总监,高效运维社区创始人


学习调优技术有很多挑战,很高兴看到有这样一本关于系统优化的好书被引进到国内。

——张银奎 资深调试专家,《软件调试》和《格蠹汇编》作者


本书的作者 Gregg 先生是业内性能优化方面大名鼎鼎的人物,他早年在 Sun 公司的时候是性能主管和内核工程师,也是大名鼎鼎的 DTrace 的开发人员,要知道 DTrace 先后被移植到很多操作系统上。全书都在讨论性能优化,详细介绍了诸如 DTrace、vmstat、mpstat、sar、SystemTap 等工具,如何将这些工具组合并应用在适当的场景中,是一门学问,相信读者会在书中找到答案。顺便说一句,DTrace+SystemTap 帮助 SAE 解决过非常多的性能疑难杂症,一定会对读者的业务分析有所帮助!单个进程的性能分析是简单的,因为我们可以定位到系统调用或者库调用级别,然后对照代码很快就能解决问题,但整个业务的性能分析是复杂的,这里面涉及多个业务单元、庞大的系统组件,随机变动、诊断循环等多种方法,并且介绍了涉及分析的数学建模和概念,详细讨论了操作系统,这对读者是很有用的。因为很多时候我们在不改代码的情况下优化系统,也就是优化内存分配比例,优化 CPU 亲密度,尝试各种调度算法,做操作系统层面的各种网络参数调优等。对于上述所有问题的认识,我相信读者在通读全书后会有不一样的感觉。记住,不要只读一遍,每读一遍都必有不同的体会。不多说了,我要赶紧再去读一遍!

——丛磊 新浪 SAE 创始人 / 总负责人

目录

第1章 绪论

1.1 系统性能

1.2 人员

1.3 活动

1.4 视角

1.5 性能工程是充满挑战的

1.6 延时

1.7 可观测性

1.8 实验

1.9 云计算

1.10 方法

1.11 案例研究

1.12 参考资料

第2章 方法

2.1 术语

2.2 模型

2.3 概念

2.4 视角

2.5 方法

2.6 建模

2.7 容量规划

2.8 统计

2.9 监测

2.10 可视化

2.11 练习

2.12 参考资料

第3章 操作系统

3.1 术语

3.2 背景

3.3 内核

3.4 Linux

3.5 其他主题

3.6 内核比较

3.7 练习

3.8 参考资料

第4章 观测工具

第5章 应用程序

第6章 CPU

第7章 内存

第8章 文件系统

第9章 磁盘

第10章 网络

第11章 云计算

第12章 基准测试

第13章 Perf

第14章 Ftrace

第15章 BCC

第16章 案例研究

附录A USE方法:Linux

附录B sar总结

附录C bpftrace单行命令

附录D 精选练习题答案

附录E 系统性能名人录

前言/序言


本书以操作系统为背景讲解操作系统和应用程序的性能问题,针对企业环境和云计算环境编写而成。本书的目的是帮助你更好地利用自己的系统。

当你的工作与持续开发的应用程序为伍时,你可能会认为内核经过几十年的开发调整,操作系统的性能问题早已解决,但事情并非如此!操作系统是一个复杂的软件体,管理着各种不断变化的物理设备,应对着不同的新应用程序的工作负载。内核也在持续地发展,不断增加新的特性以提高特定的工作负载的性能,随着系统继续扩展,所遇到的瓶颈被逐一移除。一些内核变化,如 2018 年的 Meltdown 漏洞的缓解措施,也会损害性能。分析并努力提高操作系统的性能是一项可以不断进行的持续任务。在操作系统的上下文中做应用程序的性能分析,可以找到更多的线索,而这些线索很可能被只针对应用程序的工具所遗漏,这些我在本书中会进行介绍。


操作系统的范围

本书的重点就是系统性能的研究,以英特尔处理器上基于 Linux 的操作系统为主要例子。本书的内容结构也有助于你对于其他内核和处理器的学习。

除非另有说明,具体的 Linux 发行版本在本书所使用的例子中并不重要。这些例子大多来自 Ubuntu 发行版,必要时会有注解说明它与其他发行版的差异。这些例子也取自各种系统类型 :裸机和虚拟化,生产环境和测试环境,服务器和客户设备。

在我的职业生涯中,我与各种不同的操作系统和内核打过交道,这加深了我对操作系统和内核设计的理解。为了加深你的理解,本书也会提及一些 UNIX、BSD、Solaris 和 Windows 的内容。


其他内容

本书中的示例会包括性能工具的截屏,这样做不仅是为了显示数据,而且是为了对可用的数据类型进行阐释。一般来说,工具展现数据的方式更为直观,很多 UNIX 早期风格的工具生成的输出都是相近的,意义常常不言自明。这意味着屏幕截图可以很好地传递这些工具的意图,其中的一些可能仅需要极少的附加说明。(如果一款工具需要费力地进行说明,它就很可能是一个失败的设计!)

我将触及某些技术的历史,这能提供有用的见解来加深你的理解。除此之外,了解这个行业的一些重要人物也是很有用的 :你很可能会碰到他们或者接触到他们在性能领域的工作成果。附录 E 是一份关于“名人录”的清单。

本书中的少数主题在我之前的书《BPF 之巅》[Gregg 19] 中也有涉及 :特别是 BPF、BCC、bpftrace、tracepoint、kprobe、uprobe,以及各种基于 BPF 的工具。你可以参考该书以获得更多信息。本书中对这些主题的讲解通常是基于那本较早的书,有时候还使用了相同的文字和例子。


哪些内容未提及

本书着眼于性能。如果你要执行所有的示例任务,有时可能需要做一些系统管理员的工作,包括软件的安装或编译(这些本书没有提及)。书中关于操作系统内部总结的内容会在单独的章节中提供详尽的介绍。对性能分析高阶专题的概述,是为了让你知道这些内容的存在,以便在需要的时候依靠其他的知识来源进一步学习,可参见本前言末尾的“补充材料与参考”部分。


本书的结构

第 1 章,绪论。介绍系统性能分析,总结关键的概念并展示了与性能相关的一些例子。

第 2 章,方法。介绍性能分析和调优的背景知识,包括术语、概念、模型、观测和实验的方法、容量规划、分析,以及统计。

第 3 章,操作系统。总结了内核内部的性能分析知识。对于解释和理解操作系统的行为,这些是必要的背景知识。

第 4 章,观测工具。介绍系统可用的观测工具的类型,以及构建这些工具所基于的接口和框架。

第 5 章,应用程序。讨论了应用程序性能的内容,并从操作系统的角度观测应用程序。

第 6 章,CPU。内容包括处理器、核、硬件线程、CPU 缓存、CPU 互联、硬件互联及内核调度。

第 7 章,内存。本章涉及虚拟内存、换页、交换、内存架构、总线、地址空间和内存分配器。

第 8 章,文件系统。介绍了文件系统 I/O 性能,包括涉及的不同缓存。

第 9 章,磁盘。内容包括存储设备、磁盘 I/O 工作负载、存储控制器、RAID,以及内核 I/O 子系统。

第 10 章,网络。内容涉及网络协议、套接字、接口,以及物理连接。

第 11 章,云计算。介绍了广泛应用于云计算的操作系统级和硬件级虚拟化方法,以及这些方法的性能开销、隔离和观测特征。这一章涵盖了管理程序和容器。

第 12 章,基准测试。介绍了如何精确地做基准测试,如何解读别人的基准测试结果。这是一个棘手的话题。这一章会告诉你怎样避免常见的错误,并试图理解它们。

第 13 章,perf。介绍了标准的 Linux 剖析器 perf(1),以及它的诸多功能。这是perf(1) 在全书中的使用参考。

第 14 章,Ftrace。介绍了标准的 Linux 跟踪器 Ftrace,Ftrace 特别适用于探索内核代码的执行。

第 15 章,BPF。讲解了标准的 BPF 前端—BCC 和 bpftrace。

第 16 章,案例研究。包含一个来自 Netflix 的系统性能案例,展示了如何从头开始分析一个生产环境性能难题。

第 1 ~ 4 章提供了必要的背景知识。阅读完这几章后,你可以根据需要参考本书的其余部分,特别是第 5 ~ 12 章,其中包括具体的分析目标。第 13 ~ 15 章涵盖了高级分析和跟踪的内容,对于那些希望更详细地了解一种或多种跟踪器的人来说,这是可选的阅读内容。

第 16 章用讲故事的方式来描绘性能工程师的工作场合。如果你是性能分析的新手,这一章作为一个用各种不同工具做性能分析的例子,你可能想先阅读,然后在阅读完其他章节后再回到这一章。


作为未来的参考

本书聚焦于系统性能分析的背景知识与方法,以期为读者带来长久的价值。为了做到这一点,许多章都被分为了两部分。一部分的内容是术语、概念和方法(一般附有标题),这些内容许多年后应该还依然中肯适用。另一部分的内容是前一部分如何实现的示例 :架构、分析工具,还有可调参数。这部分内容即便有朝一日过时了,作为示例进行学习也依然是有用的。


跟踪示例

我们经常需要深入探索操作系统,这项工作要用到内核跟踪工具。自本书第 1 版以来,eBPF 已经被开发出来并合并到 Linux 内核中,为使用 BCC 和 bpftrace 为前端的新一代跟踪工具提供动力。本书的重点是 BCC 和 bpftrace,还有 Linux 内核内置的 Ftrace 跟踪器。BPF、BCC 和 bpftrace 在我之前的书中有更深入的介绍 [Gregg 19]。

本书还涵盖了 Linux 中的 perf,perf 是另一个执行跟踪的工具。然而,perf 被收录在各章节中,通常用于采样和 PMC 分析,而不是用于跟踪。你可能需要或希望选用其他跟踪工具,这很好。本书中的跟踪工具用来展示你能向系统抛出的问题,这些问题及提出这些问题的方法,往往才是最难知道的。


目标受众

本书的目标受众主要是系统管理员及企业与云计算环境中的运维工程师,所有需要了解操作系统和应用程序性能的开发人员、数据库管理员和网站管理员也适合阅读本书。作为在一家拥有大型计算环境的公司(Netflix)工作的性能工程师,我经常与 SRE(站点可靠性工程师)和开发人员一起工作,他们面临着巨大的时间压力,需要解决多个同

时发生的性能问题。我还参加过 Netflix CORE SRE 的轮流值班,亲身经历了这种压力。

对于很多人来说,性能调整不是他们的主要工作,他们了解的知识足够解决当前的问题就行。由于知道读者的时间有限,因此我把这本书写得尽可能短,并在书的结构上便于读者跳到特定的章节。

本书的另一个受众群体是学生 :本书适合作为系统性能课程的补充教材。在本书的编写期间(以及开始动笔的多年以前),我就曾经教授过这样的课程,并帮助学生解决仿真的性能问题(事前不会公布答案!)。这段经历帮我弄清了什么样的材料能最好地引导学生解决性能问题,这也促成了本书的部分内容。

无论你是不是学生,每章的习题都会带给你一个审视和应用知识的机会。其中有一些可选的高阶练习,可能你完成不了(但至少可以启发思维)。

本书涵盖了足够多的知识细节,无论是大公司还是小公司,乃至雇用了不少性能专职人员的公司,本书都可以满足其需要。对于众多的小公司,日常用到的可能只是书中的某些部分,但本书作为参考也可备不时之需。