书籍作者:Brendan | ISBN:9787121435874 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:5441 |
创建日期:2023-04-05 | 发布日期:2023-04-05 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
大型企业服务、云计算和虚拟计算系统都面临着严峻的性能挑战。如今,国际知名的性能专家 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 工程师。喜欢钻研架构优化、性能调优等技术。
《性能之巅(第2版):系统、企业与云可观测性》介绍了操作系统和应用程序的概念、策略、工具和调优,并用基于Linux的操作系统作为主要示例。对这些工具和技术的深刻理解对于今天的开发者来说至关重要,这个新版本针对这些工具和技术做了全面的修订和更新。实施本书中讲述的策略能够让最终用户有更好的体验并让运维成本更低,对于按操作系统实例收费的云计算环境尤为如此。
系统性能专家和畅销书作者Brendan Gregg总结了相关的操作系统、硬件和应用程序理论,即使是之前从未做过性能分析的人员也能迅速上手。不仅如此,Gregg还对包括扩展BPF在内的新工具和技术做了深入的讲解,并展示了如何从云、网络和大规模企业系统中获得丰厚收益。
本书的主要内容包括:
●硬件、内核和应用程序的内部结构,以及它们的工作机制
●对复杂系统进行快速性能分析的方法
●优化CPU、内存、文件系统、磁盘和网络
●使用perf、Ftrace和BPF (BCC和bpftrace)进行复杂的剖析和跟踪
●与云计算管理程序相关的性能挑战
●更有效地实施基准测试
本书以操作系统为背景讲解操作系统和应用程序的性能问题,针对企业环境和云计算环境编写而成。本书的目的是帮助你更好地利用自己的系统。
当你的工作与持续开发的应用程序为伍时,你可能会认为内核经过几十年的开发调整,操作系统的性能问题早已解决,但事情并非如此!操作系统是一个复杂的软件体,管理着各种不断变化的物理设备,应对着不同的新应用程序的工作负载。内核也在持续地发展,不断增加新的特性以提高特定的工作负载的性能,随着系统继续扩展,所遇到的瓶颈被逐一移除。一些内核变化,如 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 的轮流值班,亲身经历了这种压力。
对于很多人来说,性能调整不是他们的主要工作,他们了解的知识足够解决当前的问题就行。由于知道读者的时间有限,因此我把这本书写得尽可能短,并在书的结构上便于读者跳到特定的章节。
本书的另一个受众群体是学生 :本书适合作为系统性能课程的补充教材。在本书的编写期间(以及开始动笔的多年以前),我就曾经教授过这样的课程,并帮助学生解决仿真的性能问题(事前不会公布答案!)。这段经历帮我弄清了什么样的材料能最好地引导学生解决性能问题,这也促成了本书的部分内容。
无论你是不是学生,每章的习题都会带给你一个审视和应用知识的机会。其中有一些可选的高阶练习,可能你完成不了(但至少可以启发思维)。
本书涵盖了足够多的知识细节,无论是大公司还是小公司,乃至雇用了不少性能专职人员的公司,本书都可以满足其需要。对于众多的小公司,日常用到的可能只是书中的某些部分,但本书作为参考也可备不时之需。
第1章 绪论
第2章 方法
第3章 操作系统
第4章 观测工具
第5章 应用程序
第6章 CPU
第7章 内存
第8章 文件系统
第9章 磁盘
第10章 网络
第11章 云计算
第12章 基准测试
第13章 Perf
第14章 Ftrace
第15章 BCC
第16章 案例研究
第17章 附录A USE方法:Linux
第18章 附录B sar总结
第19章 附录C bpftrace单行命令
第20章 附录D 精选练习题答案
第21章 附录E 系统性能名人录