• BPF之巅:洞悉Linux系统和应用性能
  • BPF之巅:洞悉Linux系统和应用性能
  • BPF之巅:洞悉Linux系统和应用性能
  • BPF之巅:洞悉Linux系统和应用性能
  • BPF之巅:洞悉Linux系统和应用性能
  • BPF之巅:洞悉Linux系统和应用性能
  • BPF之巅:洞悉Linux系统和应用性能
  • BPF之巅:洞悉Linux系统和应用性能
  • BPF之巅:洞悉Linux系统和应用性能
21年品牌 40万+商家 超1.5亿件商品

BPF之巅:洞悉Linux系统和应用性能

批量上传,套装书可能不全,下单前咨询在线客服!有特殊要求,下单前请咨询客服!

98.31 4.9折 199 全新

库存9件

江西南昌
认证卖家担保交易快速发货售后保障

作者(美)Brendan Gregg(布兰登.格雷格)

出版社电子工业出版社

ISBN9787121399725

出版时间2020-11

装帧平装

开本16开

定价199元

货号29164235

上书时间2024-11-02

思源汇书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
前言

前 言

“扩展版 BPF 的使用案例 :……真疯狂啊。” ——Alexei Starovoitov,新 BPF 的创建者,2015 年 2 月

2014 年 7 月,Alexei Starovoitov 到访了 Netflix 公司位于加州 Los Gatos 的办公室,对他开发的一项有趣的技术进行研讨 :扩展版的伯克利数据包过滤器(简写为 eBPF 或者 BPF)。BPF 是一项用于改进包过滤的冷门技术,此时 Alexei 已经有了对其在包过滤之外的领域进行扩展的远见卓识。Alexei 和另外一名网络工程师 Daniel Borkmann 并肩协作,将 BPF 改写为一个通用的虚拟机,可以运行高级的网络程序和其他类型的程序。

这是一个令人惊叹的想法。有一种使用场景令我十分感兴趣,那就是可以将 BPF 用在开发性能分析的工具上,我看到了 BPF 能够提供我所需要的可编程能力。于是我们做了一个约定 :如果 Alexei 能够将 BPF 与数据包之外的东西相连接,我将使用它来开发性能分析工具。

BPF 现在已经可以挂载到任何事件源上,它也成为系统工程领域一项热门的新技术,拥有众多活跃的贡献者。到目前为止,我已经开发并公开了超过 70 个 BPF 性能分析工具,它们在全球范围内得到广泛使用,并且在 Netflix、Facebook 等公司中进入服务器的默认安装软件列表。我还专门为本书单独开发了许多工具,同时也引入不少其他人贡献的工具。很荣幸能够在这本书中为大家分享这些实用的工具,这样你就可以使用它们进行性能分析、故障定位以及其他种种工作。

作为一名性能工程师,我常沉迷于使用各种工具之中。系统中的盲点是性能瓶颈和软件 bug 的藏身之处。我早先在工作中使用过 DTrace 技术,在 2011 年我编写了 DTrace :Dynamic Tracing in Oracle Solaris,Mac OS X,and FreeBSD 一书(由 Prentice Hall 出版,以下简称为“DTrace 一书”),在那本书中分享了我为这些操作系统开发的工具。现在能够分享 Linux 下的类似工具 — 甚至可以做得更多、看到更多 — 我感到十分兴奋。

为什么你需要BPF性能工具

BPF 性能工具可以帮助你改进性能、降低开销、解决软件问题,从而使系统和应用的效益化。它们能比传统性能工具分析得更多,并允许你向生产环境中的系统随意提出问题,并且能够立刻得到答案。

关于本书

本书是关于应用在可观测性和性能分析领域的 BPF 工具的,但是这些工具也有其他用途 :软件故障排查、安全分析等。学习 BPF 困难的部分不在于写代码 :你可以在一天的时间内学会编写接口程序。困难之处在于如何应用 :在数以千计的可用事件中,你能够从中得到什么信息?本书会帮助你回答这些问题,通过给出性能分析的一些必要的背景,然后使用 BPF 性能工具对许多不同的软硬件目标进行分析,并附上 Netflix 服务器上的样例输出。

BPF 的可观测性是一种超能力,不过这仅仅是因为它扩展了我们对系统和应用的可观测能力,而非重复这种能力。为了高效地使用 BPF,你需要理解什么时候使用传统的性能分析工具,包括 iostat(1) 和 perf(1),什么时候使用 BPF 工具。本书也会介绍传统的工具,可能对于解决某些性能问题它们已经够用了,当不能解决时,它们也会提供有用的上下文和线索,指导进一步使用 BPF 工具。

本书中的许多章节包含了学习目标,告知读者哪些是学习要点。本书中的材料也用在 Netflix 关于使用 BPF 分析的内部课程中,有些章节还包含了可选的练习。

本书中的许多 BPF 工具来自 BCC 和 bpftrace 的代码仓库,这两个项目是 Linux 基金会下的 IO Visor 项目。它们是开源的,可以自由使用,不仅可以从项目的网站上下载,而且很多 Linux 发行版中已经包含了它们。我也为本书新写了一些 bpftrace 工具,并把它们的源代码一并包含到本书中。

这些工具并不是为了演示各种 BPF 功能而随意创建的,创建它们是为了在生产环境中使用。我使用这些工具解决的生产问题超出了当前分析工具集的能力。

对于用 bpftrace 编写的工具,本书已经包含了源代码。如果你希望修改或开发新的bpftrace 工具,则可以从第 5 章中学习 bpftrace 语言,也可以从本书的许多源代码清单中学习。这些源代码有助于说明每个工具的功能以及它们所检测的事件 :就像包含可以运行的伪代码一样。

BCC 和 bpftrace 前端已经趋于成熟,但是将来的变更可能会导致本书中包含的某些源代码停止工作,并且需要更新。如果工具来源于 BCC 或 bpftrace,请检查那些存储库中的更新版本。如果工具来源于本书,请访问本书的网站(参见链接 1 1 )。重要的不是某个工具有效,而是你了解该工具并让它能够工作。 BPF 跟踪困难的部分是要知道用它来做什么 ;甚至损坏的工具也会是有用想法的来源之一。

新工具

为了给你提供一整套全面的分析工具,并且出于可用于代码示例的目的,本书共开发了 80 多种新工具。其中许多如图 P-1 所示。 在此图中,先前存在的工具以黑色文本显示,为该书创建的新工具则以灰色显示。本书同时涵盖了既有工具和新工具,尽管后面的许多图都没有使用灰色 / 黑色方案来区分它们。

关于图形界面(GUI)

一些 BCC 工具已经成为测量工具 GUI 的数据来源 — 提供时间序列数据来绘制折线图,提供调用栈来绘制火焰图,或者提供秒粒度的直方图以绘制热力图等。我预期未来会有更多的人通过 GUI 使用这些 BPF 工具,而非直接使用这些工具本身。无论你终如何使用,它们都可以提供丰富的信息。本书介绍了这些工具提供的指标,如何解读指标,以及你如何自己动手创建新工具。

关于 Linux 版本

在本书中介绍了许多 Linux 技术,通常带有内核版本号和出现的年份。有时,我也指明了该技术的开发人员,以便你可以辨识出原始作者撰写的支持材料。

扩展版 BPF 已被部分添加到 Linux 中。部分在 2014 年的 Linux 3.18 中添加,此后在 Linux 4.x 和 5.x 系列中添加了更多内容。为了具有足够的功能来运行本书中介绍的 BPF 工具,建议使用 Linux 4.9 或更高版本。本书中的示例运行在 Linux 4.9 到 5.3 内核之上。

已经开始将扩展版 BPF 引入其他内核,并且本书的未来版本可能不仅仅涉及 Linux。

本书不包含的内容

BPF 的应用范围很广,BPF 性能工具的许多用例本书并未涉及,其中包括用于软件定义网络、防火墙、容器安全和设备驱动程序。

本书聚焦于使用 bpftrace 和 BCC 工具,以及开发新的 bpftrace 工具,但不涉及开发新的 BCC 工具。 BCC 源代码通常很长,无法在书中直接包含,但是附录 C 中提供了一些示例作为可选内容供读者参考。附录 D 中提供了使用 C 语言进行编程的示范,附录 E中提供了使用 BPF 指令进行工具开发的示例,对那些希望更深入了解 BPF 工具的工作原理的人来说,这些示例也可能有用。

本书并不专门针对某种特定语言或应用程序的性能进行分析,因为这方面已经有其他书籍了,它们涵盖了对应语言调试和分析工具的介绍。使用其他工具和 BPF 工具联合解决问题是很常见的,不同的工具之间可以互补,提供不同的解决问题的线索。本书介绍了来自 Linux 的基本系统分析工具,因此你可以利用这些工具直接解决一些问题,如果需要进一步分析,再转向使用提供进一步观察能力的 BPF 工具。

本书简要介绍了每个分析目标的背景和策略。这些主题在我之前出版的那本《性能之巅 :洞悉系统、企业与云计算》 [Gregg 13b] 书中有较详细的解释。

本书的结构

本书分为三个部分。第 1 部分 :第 1 至 5 章,介绍了 BPF 跟踪所需的背景知识,包括性能分析、内核跟踪技术以及两个主要的 BPF 跟踪前端实现 — BCC 和 bpftrace。

第 2 部分包含第 6 至 16 章,涵盖 BPF 可跟踪的目标:CPU、内存、文件系统、磁盘 I/O、网络、安全、语言、应用程序、内核、容器和虚拟机管理器等。尽管你可以按顺序学习这些章节,但本书设计为支持跳至你感兴趣的章节。这些章节遵循同样的结构:背景讨论、分析策略建议以及特定的 BPF 工具。文中还包含了一些可以帮助读者理顺分析思路的图表。

后一部分,包含第 17 章和第 18 章,涵盖了一些其他主题:其他 BPF 工具以及提示、技巧和常见问题。

附录提供了 bpftrace 单行程序和 bpftrace 速查表,介绍了 BCC 工具开发,包括通过perf(1)(Linux 工具)进行的 C BPF 工具开发以及 BPF 指令摘要。

本书使用了许多术语和缩写,在需要的地方会对它们进行解释。

有关更多信息源,请参见本前言结尾处的“补充材料和参考资料”部分。

目标读者

本书的写作初衷是希望对各种角色的人都有用。无须任何编码即可使用本书中的BPF 工具 :你可以将其用作可以运行的预编写工具表。如果确实想编写代码,则本书中包含的所有代码和第 5 章的内容将帮助你学习快速编写自己的工具。

你不必具备性能分析的背景知识,每章会简述必要的背景知识细节。

本书的特定读者包括 :

? 负责生产系统的系统管理员、站点可靠性工程师、数据库管理员、性能工程师和支持人员可以将本书用作诊断性能问题、了解资源使用情况以及对问题进行故障排除的指南。

? 应用程序开发人员可以使用这些工具来分析自己的代码,并检测代码以及系统事件。例如,可以检查触发磁盘 I/O 事件的应用程序代码。这样可以在无法直接查看内核事件的应用程序特定工具之外,提供一个更完整的行为视图。

? 安全工程师可以学习如何监控所有的事件以发现可疑行为,并创建正常活动的白名单(请参见第 11 章)。

? 性能监控开发者可以使用本书来获得有关在其产品中添加新的可观测性的想法。

? 内核开发人员可以学习如何编写 bpftrace 单行程序来调试自己的代码。

? 学习操作系统和应用程序的学生可以使用 BPF 工具以新的和自定义的方式分析正在运行的系统。学生无须学习抽象的内核技术,而是可以对其进行跟踪并实时了解它们的运行方式。

为了使本书能够专注于 BPF 工具的应用,假定你具备极少的关于所涉及主题的知识储备,包括互联网(例如,IPv4 地址是什么)和命令行用法。



导语摘要

基于BPF的性能优化工具提供了前所未有的系统级和应用程序级的观察能力,使用这些工具可以优化性能、调试代码、增强安全性、降低成本。本书是使用这些观察工具的全面指南。本书作为全面介绍 BPF 技术的图书,从 BPF 技术的起源到未来发展方向都有涵盖,不仅全面介绍了 BPF 的编程模型,还完整介绍了两个主要的 BPF 前端编程框架 — BCC 和 bpftrace,更给出了一系列实现范例,全面展示了 BPF技术的实际能力和未来发展前景,以及使用BPF工具优化性能、修复问题、探索线上系统的内部情况。

本书的另一个关注方向是 Linux 系统性能和应用程序性能的调优。本书全面介绍了系统性能调优的策略、工具与实践案例,不仅介绍了对应的 BPF 工具,还着重介绍了这些工具如何与 Linux 传统性能工具进行互补,这样读者可以有选择地进行使用。

本书介绍的工具小巧精致,且包含了简单易读的源代码,这就是 BPF 技术的魅力所在 :安全、高效、快捷的系统扩展力。未来 BPF 技术在 Linux 中的应用场景会越来越多,越来越重要。希望本书能在大家学习这项技术并关注它的发展时提供一定的便利。本书是系统管理员、应用程序开发者、运维人员,以及其他IT从业者在企业内部或云上使用各种Linux发行版时都可参考的资料。



商品简介

基于BPF的性能优化工具提供了前所未有的系统级和应用程序级的观察能力,使用这些工具可以优化性能、调试代码、增强安全性、降低成本。本书是使用这些观察工具的全面指南。本书作为全面介绍 BPF 技术的图书,从 BPF 技术的起源到未来发展方向都有涵盖,不仅全面介绍了 BPF 的编程模型,还完整介绍了两个主要的 BPF 前端编程框架 — BCC 和 bpftrace,更给出了一系列实现范例,全面展示了 BPF技术的实际能力和未来发展前景,以及使用BPF工具优化性能、修复问题、探索线上系统的内部情况。

 

本书的另一个关注方向是 Linux 系统性能和应用程序性能的调优。本书全面介绍了系统性能调优的策略、工具与实践案例,不仅介绍了对应的 BPF 工具,还着重介绍了这些工具如何与 Linux 传统性能工具进行互补,这样读者可以有选择地进行使用。

 

本书介绍的工具小巧精致,且包含了简单易读的源代码,这就是 BPF 技术的魅力所在 :安全、高效、快捷的系统扩展力。未来 BPF 技术在 Linux 中的应用场景会越来越多,越来越重要。希望本书能在大家学习这项技术并关注它的发展时提供一定的便利。本书是系统管理员、应用程序开发者、运维人员,以及其他IT从业者在企业内部或云上使用各种Linux发行版时都可参考的资料。



作者简介

Brendan Gregg(布兰登 · 格雷格),Netflix 高级性能工程师。Brendan Gregg 是 BPF(eBPF)的主要贡献者,他帮助开发和维护了两个主要的 BPF 前端框架,开创了 BPF 用于可观测性的先河,并创建了数十种基于 BPF 的性能分析工具。他编著的畅销书有《性能之巅:洞悉系统、企业与云计算》。


译者介绍


孙宇聪,曾就职于美国加利福尼亚谷歌总部,后先后就任Coding.net技术负责人、火币中国全球IT负责人及火币美国硅谷研发团队负责人,以及Facebook脸书运维技术经理等职位。译有《SRE:谷歌运维揭秘》《架构整洁之道》《BPF之巅:洞悉Linux系统和应用性能》等名著,曾在全球软件开发大会、Qcon、全球架构师峰会、 O'Reilly Velocity等科技峰会进行公开演讲。


吕宏利,资深SRE,现任职于谷歌基础架构部。之前曾负责谷歌搜索广告和内容广告系统运维工作,有多年分布式系统研发与运维经验。对运维工具平台建设、监控、应用性能跟踪及分析、数据化运维等方面有深入的研究。


刘晓舟,毕业于北京大学计算机系,现供职于字节跳动公司系统部,任系统架构师。他在字节跳动主持构建了基于 eBPF 的大规模性能分析和网络监控诊断平台,闲暇时间也在相关开源社区提交代码。在加入字节跳动之前,他有 10 年国家部委电子政务和大数据研究经历。



目录

第1章 引 言1


1.1 BPF和eBPF是什么 1


1.2 跟踪、嗅探、采样、剖析和可观测性分别是什么  2


1.3 BCC、bpftrace和IO Visor  3


1.4 初识BCC:快速上手  4


1.5 BPF跟踪的能见度  7


1.6 动态插桩:kprobes和uprobes 8


1.7 静态插桩:tracepoint和USDT  9


1.8 初识bpftrace:跟踪open()  10


1.9 再回到BCC:跟踪open()  13


1.10 小结  15


第2章 技术背景16


2.1 图释BPF 16


2.2 BPF  17


2.3 扩展版BPF  18


2.4 调用栈回溯  41


2.5 火焰图 44


2.6 事件源 48


2.7 kprobes  49


2.8 uprobes  53


2.9 跟踪点 57


2.10 USDT  62


2.11 动态USDT  66


2.12 性能监控计数器 68


2.13 perf_events 69


2.14 小结  70


第3章 性能分析71


3.1 概览  71


3.2 性能分析方法论  73


3.3 Linux 60秒分析 77


3.4 BCC工具检查清单  84


3.5 小结  90


第4章 BCC91


4.1 BCC的组件  92


4.2 BCC的特性  92


4.3 安装BCC  94


4.4 BCC的工具  96


4.5 funccount 100


4.6 stackcount  105


4.7 trace  110


4.8 argdist  117


4.9 工具文档 121


4.10 开发BCC工具  126


4.11 BCC的内部实现  127


4.12 BCC的调试 128


4.13 小结 136


第5章 bpftrace137


5.1 bpftrace的组件 138


5.2 bpftrace的特性 139


5.3 bpftrace的安装 141


5.4 bpftrace工具  143


5.5 bpftrace单行程序  145


5.6 bpftrace的文档 146


5.7 bpftrace编程  146


5.8 bpftrace的帮助信息  155


5.9 bpftrace的探针类型  157


5.10 bpftrace的控制流 163


5.11 bpftrace的运算符 164


5.12 bpftrace的变量  165


5.13 bpftrace的函数  170


5.14 bpftrace映射表的操作函数  177


5.15 bpftrace的下一步工作  183


5.16 bpftrace的内部运作  185


5.17 bpftrace的调试  186


5.18 小结 190


第6章 CPU.191


6.1 背景知识 192


6.2 传统工具 197


6.3 BPF工具  210


6.4 BPF单行程序  251


6.5 可选练习 253


6.6 小结  254


第7章 内存.255


7.1 背景知识 256


7.2 传统工具 263


7.3 BPF工具  269


7.4 BPF单行程序  288


7.5 可选练习 289


7.6 小结  290


第8章 文件系统291


8.1 背景知识 292


8.2 传统工具 296


8.3 BPF工具  302


8.4 BPF单行程序  353


8.5 可选练习 359


8.6 小结  360


第9章 磁盘I/O361


9.1 背景知识 362


9.2 传统工具 367


9.3 BPF工具  372


9.4 BPF单行程序  406


9.5 可选练习 409


9.6 小结  410


第10章 网络411


10.1 背景知识  412


10.2 传统工具  422


10.3 BPF工具  433


10.4 BPF单行程序 507


10.5 可选练习  513


10.6 小结 515


第11章 安全516


11.1 背景知识  516


11.2 BPF工具  523


11.3 BPF单行程序 542


11.4 小结 544


第12章 编程语言.545


12.1 背景知识  545


12.2 C  551


12.3 Java  560


12.4 bash shell  601


12.5 其他语言  614


12.6 小结 619


第13章 应用程序

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP