Linux——性能调优工具一览

一、CPU

1.调优工具

根据指标找工具

|------------|----------------------------------|-----------------------------------------------------------------|
| 性能指标 | 工具 | 说明 |
| 平均负载 | uptime、top | uptime最简单、top提供了更全的指标 |
| 系统整体CPU使用率 | vmstat、mpstat、top、sar、/proc/stat | top、vmstat、mpstat只可以动态查看,而sar还可以记录历史数据 /proc/stat是其他性能工具的数据来源 |
| 进程CPU使用率 | top、pidstat、ps、htop、atop | top和ps可以按CPU使用率给进程排序,而pidstat只显示实际用了CPU的进程,htop和atop以不同颜色显示更为直观 |
| 系统上下文切换 | vmstat | 除了上下文切换此时,还提供运行状态和不可中断状态进程的数量 |
| 进程上下文切换 | pidstat | 注意加上-w选项 |
| 软中断 | top、/proc/softirqs、mpstat | top提供软中断CPU使用率,而/proc/softirqs和mpstat提供了各种软中断在每个CPU上的运行次数 |
| 硬中断 | vmstat、/proc/interrupts | vmstat提供总的中断次数,而/proc/interrupts提供各种中断在每个CPU上的运行的累积次数 |
| 网络 | dstat、sar、tcpdump | dstat和sar提供总的网络接收和发送情况,而tcpdump则是动态抓取正在进行的网络通讯 |
| I/O | dstat、sar | dstat和sar都提供了I/O的整体情况 |
| CPU个数 | /proc/cpuinfo、lscpu | lscpu更直观一些 |
| 事件剖析 | perf、execsnoop | perf可以用来分析CPU的缓存以及内核调用链,execsnoop用来监控短时进程 |

根据工具查指标

|------------------|----------------------------------------------|
| 性能工具 | 性能指标 |
| uptime | 平均负载 |
| top | 平均负载、运行队列、整体的CPU使用率以及每个进程的状态和CPU使用率 |
| htop | top增强版,以不同颜色区分不同类型的进程,更直观 |
| atop | CPU、内存、磁盘和网络等各种资源的全面监控 |
| vmstat | 系统整体的CPU使用率、上下文切换次数、中断次数,还包括处于运行和不可中断状态的进程数量 |
| mpstat | 每个CPU的使用率和软中断次数 |
| pidstat | 进程和线程的CPU使用率、中断上下文切换次数 |
| /proc/softirqs | 软中断类型和在每个CPU上的累积中断次数 |
| /proc/interrupts | 硬中断类型和在每个CPU上的累积中断次数 |
| ps | 每个进程的状态和CPU使用率 |
| pstree | 进程的父子关系 |
| dstat | 系统整体的CPU使用率 |
| sar | 系统整体的CPU使用率,包括可配置的历史数据 |
| strace | 进程的系统调用 |
| perf | CPU性能时间剖析,如调用链分析、CPU缓存、CPU调度等 |
| execsnoop | 监控短时进程 |

2.CPU性能瓶颈

3.从不同的角度看待CPU调优

如何才能降低 CPU 使用率,提高 CPU 的并行处理能力,大体分析方向为两部分

|----------|-----------------------------------|
| 应用程序 | 系统优化 |
| 编译器优化 | CPU绑定 |
| 算法优化 | CPU独占 |
| 异步处理 | 优先级调整 |
| 多线程代替多进程 | 为进程设置资源限制 |
| 善用缓存 | NUMA(Non-Uniform Memory Access)优化 |
| | 中断负载均衡 |

二、磁盘

1.磁盘性能指标

使用率:指磁盘处理 I/O 的时间百分比

饱和度:指磁盘处理 I/O 的繁忙程度

IOPS:指每秒的 I/O 请求数

吞吐量:指每秒的 I/O 请求大小

响应时间:指 I/O 请求从发出到收到响应的间隔时间

2.调优工具

根据工具查指标

|-----------------|----------------------------------------|
| 性能工具 | 文件系统和I/O性能指标 |
| iostat | 磁盘I/O使用率、IOPS、吞吐量、响应时间、I/O平均大小以及等待队列长度 |
| pidstat | 进程I/O大小以及I/O延迟 |
| sar | 磁盘I/O使用率、IOPS、吞吐量以及响应时间 |
| dstat | 磁盘I/O使用率、IOPS以及吞吐量 |
| iotop | 按I/O大小对进程排序 |
| slabtop | 目录项、索引节点以及文件系统的缓存 |
| /proc/slabinfo | 目录项、索引节点以及文件系统的缓存 |
| /proc/meminfo | 页缓存和可回收Slab缓存 |
| /proc/diskstats | 磁盘的IOPS、吞吐量以及延迟 |
| /proc/pid/io | 进程IOPS、I/O大小以及I/O延迟 |
| vmstat | 缓存和缓冲区用量汇总 |
| blktrace | 跟踪块设备I/O事件 |
| biosnoop | 跟踪进程的块设备I/O大小 |
| biotop | 跟踪进程块I/O并按大小I/O大小排序 |
| strace | 跟踪进程的I/O系统调用 |
| perf | 跟踪内核中的I/O事件 |
| df | 磁盘空间和索引节点使用量和剩余量 |
| mount | 文件系统的挂载路径以及挂载参数 |
| du | 目录占用的磁盘空间大小 |
| tune2fs | 显示和设置文件系统参数 |
| hdparm | 显示和设置磁盘参数 |

根据指标找工具

|----------------------------------------|--------------------------|---------------------------------------------|
| 性能指标 | 工具 | 说明 |
| 文件系统空间容量、使用量以及剩余空间 | df | 查看文件系统的存储状态 |
| 索引节点容量、使用量以及剩余量 | df | 使用-i选项 |
| 页缓存和可回收Slab缓存 | /proc/meminfo、sar、vmstat | 使用sar -r选项 |
| 缓冲区 | /proc/meminfo、sar、vmstat | 使用sar -r选项 |
| 目录项、索引节点以及文件系统的缓存 | /proc/slabinfo、slabtop | slabtop更直观 |
| 磁盘I/O使用率、IOPS、吞吐量、响应时间、I/O平均大小以及等待队列长度 | iostat、sar、dstat | 使用iostat -d -x或sar -d选项 |
| 进程I/O大小以及I/O延迟 | pidstat、iotop | 使用pidstat -d选项 |
| 块设备I/O事件跟踪 | blktrace | 示例:blktrace -d /dev/sda -o- | blkparse -i- |
| 进程I/O系统调用跟踪 | strace | 通过系统调用跟踪进程的I/O |
| 进程块I/O系统调用跟踪 | biosnoop、biotop | 需要安装bcc软件包 |

iostat使用详解:iostat 命令详解_iostat命令详解参数-CSDN博客

三、网络

1.网络性能指标

带宽:表示链路的最大传输速率,单位通常为 b/s (比特 / 秒)。

吞吐量,表示单位时间内成功传输的数据量,单位通常为 b/s(比特 / 秒)或者 B/s(字节 / 秒)。吞吐量受带宽限制,而吞吐量 / 带宽,也就是该网络的使用率。

延时,表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟。在不同场景中,这一指标可能会有不同含义。比如,它可以表示,建立连接需要的时间(比如 TCP 握手延时),或一个数据包往返所需的时间(比如 RTT)。

PPS,是 Packet Per Second(包 / 秒)的缩写,表示以网络包为单位的传输速率。PPS 通常用来评估网络的转发能力,比如硬件交换机,通常可以达到线性转发(即 PPS 可以达到或者接近理论最大值)。而基于 Linux 服务器的转发,则容易受网络包大小的影响。

2.分析工具

通过sarifconfig命令查看Vastbase内节点网络使用情况,分析是否存在由于网络导致的性能瓶颈。

  • errors表示收包错误的总数量。
  • dropped表示数据包已经进入了Ring Buffer,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃的总数量。
  • overruns表示Ring Buffer队列中被丢弃的报文数目,由于Ring Buffer(aka Driver Queue)传输的IO大于kernel能够处理的IO导致。

分析时,如果发现上述三个值持续增长,则表示网络负载过大或者存在网卡、内存等硬件故障。

3.详细排查

排查网络状态使用netstat -anp | grep命令

标记所在情况;

一个叫"redis-server"的进程,正在监听127.0.1:6379/0.0.0.:2222端口等等,"LISTEN"表示监听 PID:代表该进程的id 38464

检查特定程序的网络链接情况

查看端口 : 例如 5432端口我们看下

netstat -anp | grep 5432

相关推荐
淡水猫.5 分钟前
Fakelocation Server服务器/专业版 ubuntu
运维·服务器·ubuntu
wenyue112112 分钟前
Ease Monitor 会把基础层,中间件层的监控数据和服务的监控数据打通,从总体的视角提供监控分析
运维·中间件·监控
量子网络18 分钟前
debian 如何进入root
linux·服务器·debian
时光の尘21 分钟前
C语言菜鸟入门·关键字·float以及double的用法
运维·服务器·c语言·开发语言·stm32·单片机·c
我们的五年25 分钟前
【Linux课程学习】:进程描述---PCB(Process Control Block)
linux·运维·c++
运维老司机1 小时前
Jenkins修改LOGO
运维·自动化·jenkins
D-海漠1 小时前
基础自动化系统的特点
运维·自动化
我言秋日胜春朝★1 小时前
【Linux】进程地址空间
linux·运维·服务器
繁依Fanyi2 小时前
简易安卓句分器实现
java·服务器·开发语言·算法·eclipse
C-cat.2 小时前
Linux|环境变量
linux·运维·服务器