写点什么

三大套路带你通关 CPU 性能优化 | 极客时间

  • 2019-05-23
  • 本文字数:1605 字

    阅读完需:约 5 分钟

三大套路带你通关 CPU 性能优化 | 极客时间

无论是运维还是开发,和 Linux 打交道、在服务器上分析系统性能是每个技术人的日常。然而,性能优化也是软件系统中最有挑战的工作之一,就算看了很多资料和书籍,但一旦涉及到解决具体问题,还是难免困惑不已,比如,


  • 性能指标和性能分析工具那么多,我该怎么掌握和选择呢?

  • 即使会用指标和工具,又该如何快速定位性能瓶颈呢?

  • 找到性能瓶颈后,接下来该怎么优化呢?


以上三点,可以说是性能优化工作的重中之重。不过不要担心,凭借多年的性能优化经验,我总结出三大套路,带你攻下性能优化这一难关,分别是:


  • “性能指标/工具”指南;

  • “又快又准”的瓶颈定位套路;

  • 优化工作的必备思路。


当然,性能优化工作,离不开对系统原理的把握。从系统层面,我将其分为 CPU 性能、内存性能、I/O 性能和网络性能四大板块,并分别整理了对应的解决思路。今天我们就先以 CPU 性能为例,看看这些套路是怎么用的。

“指标/工具”指南

首先是对于性能指标和工具的掌握。我的经验是,从两个不同的维度来理解它们,做到活学活用,把性能指标和性能工具联系起来。


第一个维度,从 CPU 的性能指标出发。当你要查看某个性能指标时,要清楚地知道哪些工具可以做到。根据不同的性能指标,对提供指标的性能工具进行分类和理解。这样,在排查性能问题时,你就会知道什么工具可以提供你想要的指标,而不是毫无依据地挨个尝试,撞运气。



第二个维度,从工具出发。当你安装了某个工具后,要知道这个工具能提供哪些指标。这在实际环境,特别是生产环境中非常重要。因为在很多情况下,你并没有权限安装新的工具包,只能最大化地利用好系统中已经安装的工具,这就需要你对它们有足够的了解。


具体到每个工具的使用方法,一般都支持丰富的配置选项。这些配置选项你并不用背下来,只要知道有哪些工具、以及这些工具的基本功能是什么就够了。真正要用到的时候, 通过 man 命令,查询它们的使用手册就可以。


当然,这些常见指标和工具的对应关系,我制作了“指标-工具指南”和“工具-指标指南”两张图表,方便你梳理关系和理解记忆。


11 | 套路篇:如何迅速分析出系统CPU的瓶颈在哪里?

瓶颈定位套路

其次是快速定位性能瓶颈的套路。CPU 的性能指标比较多,而且它们之间并不是孤立的,很多指标间都有一定的关联。掌握不同指标之间的关联性,你就可以简化大多数问题了。


同样的,我制作了一张 CPU 性能指标和工具的关联图,列出了 top、vmstat 和 pidstat 分别提供的重要 CPU 指标,并用虚线表示关联关系,对应出了性能分析下一步的方向。


你可以保存这张图,作为 CPU 性能分析的思路图谱。从最核心的这几个工具开始,通过我提供的案例,自己在真实环境里实践,拿下它们。


优化必备思路

最后是具体的优化思路。这里我们首先要形成清晰的性能优化方法论。


从目的上说,我们解决性能问题是为了得到性能提升的效果,要明确并评估这种性能优化的效果,为此我总结了“性能评估三步走”,你可以参考使用:


  1. 确定性能的量化指标;

  2. 测试优化前的性能指标;

  3. 测试优化后的性能指标。


从操作上来说,多维度指标的选择、多性能问题的选择、多优化方法的选择,这三者都是我们考虑的重点。


12 | 套路篇:CPU 性能优化的几个思路


订阅专栏,了解更多”套路“


内存性能篇:21 | 套路篇:如何“快准狠”找到系统内存的问题?


I/O 性能篇:30 | 套路篇:如何迅速分析出系统I/O的瓶颈在哪里?


网络性能篇:36 | 套路篇:怎么评估系统的网络性能?


专栏简介


在专栏中,我结合自己多年的实战经验,以案例驱动的思路,为你讲解了 Linux 性能的基本指标、工具,以及相应的观测、分析和调优方法,让你学后可以立即应用在自己的优化工作中。针对评论区那些有代表性的问题,我专门设立了答疑篇章,为大家解惑的同时也可以为其他学习专栏的同学提供参考。


学完专栏后,你将获得:


  • Linux 常用的性能分析工具合集

  • 30 个 Linux 性能问题诊断思路

  • 读懂 CPU、内存、I/O 等指标

  • 5 个真实的线上环境分析案例


内容选自极客时间《Linux性能优化实战》专栏


2019-05-23 16:547643

评论

发布
暂无评论
发现更多内容

官方线索|2021 长沙·中国 1024 程序员节

穿过生命散发芬芳

1024我在现场

官方线索|2021 长沙·中国 1024 程序员节

耳东@Erdong

1024我在现场 10月月更

Java常用容器笔记

风翱

java 10月月更

017云原生之一些技术概念

穿过生命散发芬芳

云原生 10月月更

别再傻傻分不清 AVSx H.26x MPEG-x 了

RTE开发者社区

音视频

Android开发中遇到加载有相同函数的so库时的问题

轻口味

10月月更

基于分布式认知工业互联网的汽车零部件质量溯源平台

CECBC

官方线索|Gitee2021程序员节特别活动

穿过生命散发芬芳

1024我在现场

官方线索|【云+社区】程序员过节指南:如何玩转你的1024 ?

Regan Yue

1024 1024我在现场

官方线索|RTE2021 实时互联网大会

穿过生命散发芬芳

1024我在现场

官方线索|第二届1024国际智能投研开发者大会

穿过生命散发芬芳

1024我在现场

竞跑加速! 数字人民币场景全覆盖

CECBC

网站性能优化的实战指南

devpoint

html 性能优化 10月月更

linux之sed使用技巧

入门小站

Linux

入职腾讯的前一天,我哭了(传统行业被裁,奋战一年成功逆袭!)

收到请回复

架构 编程语言 后端 语言 & 开发 java

从转移工具到移动急救室,5G救护车给行业带来了什么变化?

脑极体

SQL注入进阶篇一php代码审计

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

官方线索|鸿蒙1024程序员节

轻口味

1024我在现场

线程池处理批量接口请求实践

FunTester

线程池 性能测试 接口测试 测试框架 FunTester

【设计模式】第三篇-单例模式

Brave

设计模式 单例模式 10月月更

数字货币已被世界公认,中国市场即将爆发

CECBC

技术人在职场应该知道的沟通技巧

baiyutang

沟通模型 10月月更

不了解Zookeeper的童鞋看过来哦~

Regan Yue

zookeeper 10月月更

架构:微内核架构(Microkernel Architecture)二

程序员架构进阶

架构 规则引擎 微内核架构 OSGi 10月月更

在线中文繁简体转换工具

入门小站

工具

官方线索|CCF CED 中国工程师文化日

穿过生命散发芬芳

1024我在现场

微服务链路追踪组件Skywalking实战

Fox爱分享

Spring Cloud Skywalking 链路追踪组件 微服务调用链

成本直降50%,下一代网关震撼发布

阿里巴巴云原生

云原生 网关 kurbernetes

官方线索|2021数智马拉松大赛,AI音乐之夜

石云升

1024我在现场

golang和java的性能对比及golang内存管理

hanaper

我与消息队列的八年情缘

勇哥java实战分享

RocketMQ 消息队列 Activemq

三大套路带你通关 CPU 性能优化 | 极客时间_硬件_倪朋飞_InfoQ精选文章