首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
01 | 如何学习Linux性能优化?
02 | 基础篇:到底应该怎么理解“平均负载”?
03 | 基础篇:经常说的 CPU 上下文切换是什么意思?(上)
04 | 基础篇:经常说的 CPU 上下文切换是什么意思?(下)
05 | 基础篇:某个应用的CPU使用率居然达到100%,我该怎么办?
06 | 案例篇:系统的 CPU 使用率很高,但为啥却找不到高 CPU 的应用?
07 | 案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(上)
08 | 案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(下)
09 | 基础篇:怎么理解Linux软中断?
10 | 案例篇:系统的软中断CPU使用率升高,我该怎么办?
11 | 套路篇:如何迅速分析出系统CPU的瓶颈在哪里?
12 | 套路篇:CPU 性能优化的几个思路
13 | 答疑(一):无法模拟出 RES 中断的问题,怎么办?
14 | 答疑(二):如何用perf工具分析Java程序?
15 | 基础篇:Linux内存是怎么工作的?
16 | 基础篇:怎么理解内存中的Buffer和Cache?
17 | 案例篇:如何利用系统缓存优化程序的运行效率?
18 | 案例篇:内存泄漏了,我该如何定位和处理?
19 | 案例篇:为什么系统的Swap变高了(上)
20 | 案例篇:为什么系统的Swap变高了?(下)
21 | 套路篇:如何“快准狠”找到系统内存的问题?
22 | 答疑(三):文件系统与磁盘的区别是什么?
23 | 基础篇:Linux 文件系统是怎么工作的?
24 | 基础篇:Linux 磁盘I/O是怎么工作的(上)
25 | 基础篇:Linux 磁盘I/O是怎么工作的(下)
26 | 案例篇:如何找出狂打日志的“内鬼”?
27 | 案例篇:为什么我的磁盘I/O延迟很高?
28 | 案例篇:一个SQL查询要15秒,这是怎么回事?
29 | 案例篇:Redis响应严重延迟,如何解决?
30 | 套路篇:如何迅速分析出系统I/O的瓶颈在哪里?
31 | 套路篇:磁盘 I/O 性能优化的几个思路
32 | 答疑(四):阻塞、非阻塞 I/O 与同步、异步 I/O 的区别和联系
33 | 关于 Linux 网络,你必须知道这些(上)
34 | 关于 Linux 网络,你必须知道这些(下)
35 | 基础篇:C10K 和 C1000K 回顾
36 | 套路篇:怎么评估系统的网络性能?
37 | 案例篇:DNS 解析时快时慢,我该怎么办?
38 | 案例篇:怎么使用 tcpdump 和 Wireshark 分析网络流量?
39 | 案例篇:怎么缓解 DDoS 攻击带来的性能下降问题?
40 | 案例篇:网络请求延迟变大了,我该怎么办?
41 | 案例篇:如何优化 NAT 性能?(上)
42 | 案例篇:如何优化 NAT 性能?(下)
43 | 套路篇:网络性能优化的几个思路(上)
44 | 套路篇:网络性能优化的几个思路(下)
45 | 答疑(五):网络收发过程中,缓冲区位置在哪里?
46 | 案例篇:为什么应用容器化后,启动慢了很多?
47 | 案例篇:服务器总是时不时丢包,我该怎么办?(上)
48 | 案例篇:服务器总是时不时丢包,我该怎么办?(下)
49 | 案例篇:内核线程 CPU 利用率太高,我该怎么办?
50 | 案例篇:动态追踪怎么用?(上)
51 | 案例篇:动态追踪怎么用?(下)
52 | 案例篇:服务吞吐量下降很厉害,怎么分析?
53 | 套路篇:系统监控的综合思路
54 | 套路篇:应用监控的一般思路
55 | 套路篇:分析性能问题的一般步骤
56 | 套路篇:优化性能问题的一般方法
57 | 套路篇:Linux 性能工具速查
58 | 答疑(六):容器冷启动如何性能分析?
当前位置:
首页>>
技术小册>>
Linux性能优化实战
小册名称:Linux性能优化实战
### 57 | 套路篇:Linux 性能工具速查 在Linux系统的运维与优化工作中,掌握一系列高效、精准的性能分析工具是每位系统管理员和开发者不可或缺的技能。这些工具如同性能诊断的“显微镜”,能够帮助我们深入系统内部,洞察资源使用情况,定位瓶颈所在,从而实施有效的优化策略。本章“套路篇:Linux 性能工具速查”将为您汇总一系列常用的Linux性能分析工具,并简要介绍它们的基本用法、适用场景及一些高级技巧,旨在成为您性能调优路上的快速指南。 #### 一、系统监控与概述工具 **1. top** - **描述**:`top`命令是Linux下最常用的性能分析工具之一,它能够实时显示系统中各个进程的资源占用情况,包括CPU、内存等。 - **用法**:直接在终端输入`top`即可启动。通过`P`(按CPU使用率排序)、`M`(按内存使用率排序)等快捷键可以调整排序方式。 - **高级技巧**:结合`shift + <`或`shift + >`调整显示的进程数,使用`f`键自定义显示字段。 **2. htop** - **描述**:`htop`是`top`命令的一个增强版本,提供了更丰富的界面和交互功能,如进程树视图、直接对进程进行操作(如结束进程)等。 - **安装**:在多数Linux发行版中,`htop`可能不是预装的,需要通过包管理器安装。 - **用法**:类似于`top`,但界面更加友好,支持鼠标操作。 **3. vmstat** - **描述**:`vmstat`(Virtual Memory Statistics)用于报告关于进程、内存、分页、块IO、陷阱以及CPU活动的信息。 - **用法**:`vmstat 1`可以每秒刷新一次系统状态,便于观察变化趋势。 - **高级技巧**:结合`fields`选项自定义显示字段,如`vmstat -a 1`添加显示活动内存和交换空间信息。 #### 二、CPU与进程分析工具 **1. pidstat** - **描述**:`pidstat`是`sysstat`包中的一个工具,用于监控个别任务(进程)的CPU、内存、I/O等使用情况。 - **用法**:例如,`pidstat -u 1`每秒报告所有进程的CPU使用情况。 - **高级技巧**:使用`-r`选项监控内存使用情况,`-d`选项监控I/O使用情况。 **2. perf** - **描述**:`perf`是Linux内核自带的性能分析工具,用于收集关于程序运行时的各种性能参数,包括CPU缓存使用情况、分支预测错误等。 - **用法**:`perf top`类似于`top`,但显示的是性能事件的统计信息;`perf record`和`perf report`则用于记录和分析程序执行过程中的性能数据。 - **高级技巧**:利用`perf annotate`查看函数级别的性能热点,`perf script`将性能数据转换为可读的格式。 #### 三、内存与缓存分析工具 **1. free** - **描述**:`free`命令用于显示Linux系统中空闲和已用的物理内存、交换空间(swap)及缓存(buffers/cache)的使用情况。 - **用法**:直接输入`free`或`free -h`(以人类可读的格式显示)。 - **注意**:Linux中的“空闲内存”概念与其他操作系统有所不同,因为Linux会积极使用未使用的内存作为缓存。 **2. cachetop** - **描述**:`cachetop`是一个实时监控系统缓存(包括dentries和inodes)使用情况的工具,有助于理解缓存的效率和瓶颈。 - **安装**:在某些发行版中可能需要单独安装。 - **用法**:启动后,`cachetop`会显示一个动态的缓存使用情况报告,包括命中率和丢失率等关键指标。 #### 四、磁盘I/O分析工具 **1. iostat** - **描述**:`iostat`是`sysstat`包中的另一个工具,用于监控系统输入输出设备和CPU的使用情况。 - **用法**:`iostat -xz 1`可以显示详细的磁盘和分区I/O统计信息,包括每秒的传输次数、读写请求等。 - **高级技巧**:结合`-d`选项仅显示磁盘统计信息,`-p`选项显示分区统计信息。 **2. iotop** - **描述**:`iotop`类似于`top`,但它专注于显示磁盘I/O使用情况,能够实时显示哪些进程正在产生最多的磁盘读写操作。 - **安装**:在某些Linux发行版中可能不是预装的。 - **用法**:`iotop`启动后,会按I/O使用率排序显示进程列表,支持通过快捷键进行排序和过滤。 #### 五、网络分析工具 **1. iftop** - **描述**:`iftop`是一个实时的网络带宽监控工具,可以显示网络接口上哪些连接正在占用最多的带宽。 - **安装**:在某些Linux发行版中可能需要单独安装。 - **用法**:启动`iftop`后,它会显示一个类似于`top`的界面,但专注于网络流量。 **2. nethogs** - **描述**:`nethogs`是一个网络流量监控工具,按进程显示网络带宽的使用情况。 - **安装**:可能不是所有Linux发行版的预装软件。 - **用法**:`nethogs`启动后,会列出所有正在使用网络带宽的进程及其对应的网络接口和速率。 #### 六、综合与高级工具 **1. sar** - **描述**:`sar`(System Activity Reporter)是`sysstat`包中的一个强大工具,用于收集、报告或保存系统活动信息。 - **用法**:`sar`可以收集多种类型的系统性能数据,包括CPU、内存、I/O、网络等,并支持将数据保存到文件中以便后续分析。 - **高级技巧**:使用`-A`选项收集所有可用报告,`-f`选项从文件中读取数据。 **2. trace-cmd** - **描述**:`trace-cmd`是一个基于Ftrace的跟踪工具,能够捕捉Linux内核的低级行为,对于深入理解系统性能和调试非常有用。 - **用法**:`trace-cmd`提供了多种跟踪模式,如`record`、`report`等,支持对内核函数的调用进行跟踪和分析。 - **高级技巧**:结合Ftrace的过滤器功能,可以精确地定位到感兴趣的事件或函数调用。 ### 结语 以上介绍的Linux性能工具仅是冰山一角,但它们已足够覆盖大多数常见的性能调优场景。在实际使用中,建议根据具体需求和系统环境选择合适的工具,并结合多种工具的数据进行综合分析,以得出准确的性能瓶颈和优化方案。记住,性能调优是一个持续的过程,需要不断地观察、分析和调整。希望本章内容能成为您Linux性能优化之旅中的有力助手。
上一篇:
56 | 套路篇:优化性能问题的一般方法
下一篇:
58 | 答疑(六):容器冷启动如何性能分析?
该分类下的相关小册推荐:
云计算Linux基础训练营(上)
Redis入门到实战
云计算那些事儿:从IaaS到PaaS进阶(五)
从 0 开始学架构
MySQL数据库实战
云计算那些事儿:从IaaS到PaaS进阶(二)
ZooKeeper实战与源码剖析
云计算Linux基础训练营(下)
Linux云计算网站集群架构之存储篇
分布式技术原理与算法解析
Web服务器Apache详解
Web服务器Tomcat详解