20年经典传承 | 性能圣典!火焰图发明者Brendan Gregg“神作”

news2024/12/24 11:28:22

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 创始人 / 总负责人

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1152882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信创强国 | 安全狗荣获信创工委会技术活动单位证书

近日,安全狗荣获中国电子工业标准化技术协会信息技术应用创新工作委员会(以下简称“信创工委会”)颁发的信息技术应用创新工作委员会技术活动单位证书。 作为国内云原生安全领导厂商,安全狗在信息技术应用创新方面有多年的技术积累…

【教3妹学编辑-算法题】每棵子树内缺失的最小基因值

3妹:“太阳当空照,花儿对我笑,小鸟说早早早,你为什么背上炸药包” 2哥 :3妹,什么事呀这么开发。 3妹:2哥你看今天的天气多好啊,阳光明媚、万里无云、秋高气爽,适合秋游。 2哥&#x…

TypeScript之类

一、是什么 类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础 类是一种用户定义的引用数据类型,也称类类型 传统的面向对象语言基本都是基于类的,JavaScript …

关于我React项目热更新没起效果的问题

最近,我拉下来一个react项目,嗯,什么都可以运行,然后自己熟悉一下代码之后写一个自己页面,然后每修改一下代码我都要重新启动,然后网上搜一大串子我都没成功,而且人家原来代码里边也有热更新处理…

Python 常用内置函数详解(一):isinstance()函数----判断对象是否是类或子类

目录 一、功能二、语法和示例三、补充:issubclass()函数---判断是否是其他类的子类 一、功能 isinstance() 函数用于判断对象是否是类或者类型元组中任意类元素的实例。 二、语法和示例 语法结构如下: isinstance(object, classinfo) # ① object&a…

可可爱爱的polo领卫衣,女儿穿也太好看了吧

分享女儿的时尚穿搭—卫衣 Polo领半拉链设计 满满的学院风和学生气息 乖巧甜美的少女感瞬间突显 灰色经典宽松版型,不挑人穿的哦

购物车死了吗?拼多多的社交电商革命

亲爱的小伙伴们,大家好!我是小米,今天要和大家聊一聊一个备受关注的话题:拼多多为什么没有购物车?这是一个网易产品经理面试题,但也是一个备受争议的话题。让我们一起来探讨一下吧! 拼多多的购…

计算机网络-IP地址

文章目录 子网划分定长子网划分子网划分的方法子网掩码 可变长子网划分 无类别编址网络前缀路由聚合 特殊用途的IP地址专用网络地址链路本地地址运营商级NAT共享地址用于文档的测试网络地址 IP地址的规划和分配IP地址的规划和分配方法IP地址的规划和分配实例 子网划分 定长子网…

Leetcode刷题详解——三步问题

1. 题目链接:面试题 08.01. 三步问题 2. 题目描述: 三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模…

AD 过滤器

应用场景: 只想选择某一层的内容只选择布线只选择焊盘… 因此,有时候AD选中不了对象,也有可能是过滤器打开过滤掉了。

TFN 2.5G SDH传输分析仪 FT100-D300S

今天给大家带来一款TFN 2.5G SDH传输分析仪--TFN FT100-D300S. D300S SDH测试模块,是FT100智能网络测试平台产品家族的一部分,是一个坚固耐用、锂电池超长供电的传统PDH/SDH测试解决方案,支持2.5Gbps到2.048Mbps速率的传输链路测试。支持在线…

MA网络下,静态路由仅配出接口,不配下一跳是否可行

在MA网络模式下,静态路由只配置出接口,不配置下一跳地址是否可行 如下拓扑图: 如图所示,在R1上配置一条去往4.4.4.4的静态路由,此时如果静态路由只配置出接口,不配置下一跳地址: ip route-stat…

为什么 MySQL 选择 Repeatable Read 作为默认隔离级别

为什么 MySQL 选择 Repeatable Read 作为默认隔离级别? 我们知道,ANSI/ISO SQL-92 标准定义了 4 种隔离级别,从低到高依次为: 读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Reads)、序列化(Serial…

如何使用grequests库

grequests是一个基于gevent的异步HTTP请求库,它允许同时发送多个HTTP请求并异步处理响应。以下是使用grequests库的基本步骤: 安装grequests库:可以使用pip命令在命令行中安装grequests库。 pip install grequests 导入grequests模块&#x…

实时电商数据采集API接口的分析和应用【附代码实例可加参数测试】

互联网的发展改变了我们的生活方式,也改变了企业商家们的营销方式,越来越多的企业商家把产品营销从线下转到线上,选择在线商城、移动APP、微信公众号等互联网工具进行营销活动。而随着营销模式的多元化和电子支付渠道的进一步发展&#xff0c…

通讯网关软件032——利用CommGate X2OPC实现OPC客户端访问Modbus TCP设备

本文介绍利用CommGate X2OPC实现OPC客户端连接Modbus TCP设备。CommGate X2OPC是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示,SCADA系统上位机、PLC、设备具备Modbus TCP通讯接口&#xff…

使用 systemctl 管理 MySQL 服务

文章目录 前言1. 安装 MySQL1.1 下载安装包1.2 下载自动化脚本1.3 安装 MySQL 2. 配置 systemd2.1 配置含义介绍2.2 配置 systemd2.3 管理 MySQL 服务 前言 systemd 是 Linux 系统推出的初始化(init)系统,MySQL 使用 RPM 或者 Debian 包安装…

修改目录权限

CentOS8的目录结构; 虚拟机的克隆; 深克隆;完整克隆;浅克隆;终端命令格式及颜色;/etc/bashrc修改主机名;/etc/hostname linux内核版本号: JDK的版本号; JDK版本号分析; …

030.Python面向对象_类补充_只读属性

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉&…