您当前的位置:首页 > 计算机 > 系统应用 > Linux

Linux 性能优化基础

时间:08-01来源:作者:点击数:

常见指标分类(USE法)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
资源 类型 性能指标
CPU 使用率 CPU使用率
CPU 饱和度 运行队列长度或平均负载
CPU 错误数 硬件cpu错误数
内存 使用率 已用内存百分比或SWAP用量百分比
内存 饱和度 内存换页量
内存 错误数 内存分配失败或OOM
存储设备I/O 使用率 设备I/O事件百分比
存储设备I/O 饱和度 等待队列产犊或延迟
存储设备I/O 错误数 I/O错误数
文件系统 使用率 已用容量百分比
文件系统 饱和度 已用容量百分比
文件系统 错误数 文件读写错误数
网络 使用率 带宽使用率
网络 饱和度 重传报文数
网络 错误数 网卡收发错误数、丢包数
文件描述符 使用率 已用文件描述符数百分比
连接跟踪 使用率 已用连接跟踪数百分比
连接数 饱和度 TIMEWAIT状态连接数

常见性能工具

CPU性能工具
性能指标 性能工具 说明
平均负载 uptime、top、/proc/loadavg uptime最简单;top提供更全的指标;/proc/loadavg常用于监控系统
系统CPU使用率 vmstatmpstattopsar/proc/stat top、vmstat、mpstat只可以动态查看,而sar还可以记录历史数据;/proc/stat是其他性能工具的数据来源,也常用于监控
进程CPU使用率 toppspidstathtopatop top和ps可以按CPU使用率给进程排序,而pidstat只显示实际用了CPU的进程;htop和atop以不同颜色显示更直观
系统上下文切换 vmstat 除了上下文切换次数,还提供运行状态和不可中断状态的进程数
进程上下文切换 pidstat 注意加上-w参数
软中断 topmpstat/proc/softirqs top提供软中断cpu使用率,而/proc/softirqs和mpstat提供了各种软中断在每个CPU上的运行次数
硬中断 vmstat/proc/interrupts vmstat提供总的中断次数,而/proc/interrupts提供各种中断在每个CPU上运行的累计次数
网络 dstatsartcpdump dstat、sar提供总的网络接受和发送情况,而tcpdump则是动态抓取正在进行的网络通讯
I/O dstatsar dstat和sar都提佛那个了I/O的整体情况
CPU缓存 perf 使用perf stat子命令
CPU数 lscpu/proc/cpuinfo lscpu更直观
事件剖析 perf, 火焰图, execsnoop perf和火焰图用来分析热点函数以及调用栈,execsnoop用来监测短时进程
动态追踪 ftracebccsystemtap ftrace用于跟踪内核函数调用栈,而bcc和systemtap则用于跟踪内核或应用程序的执行过程(注意bcc要求内核>=4.1)
内存性能工具
性能指标 性能工具 说明
系统已用、可用、剩余内存 freevmstatsar/proc/meminfo free最为简单,而vmstat、sar更为全面;/proc/meminfo是其他工具的数据来源,也常用于监控系统中
进程虚拟内存、常驻内存、共享内存 pstoppidstat/proc/pid/stat/proc/pid/status ps和top最简单,而pidstat则需要加上-r选项;/proc/pid/stat和/proc/pid/status是其他工具的数据来源,也常用于监控系统中
进程内存分布 pmap/proc/pid/maps /proc/pid/maps是pmap的数据来源
进程SWAP换出内存 top/proc/pid/status /proc/pid/status是top的数据来源
进程缺页异常 pstoppidstat 注意给pidstat加上-r选项
系统换页情况 sar 注意加上-B选项
缓存/缓冲区用量 freevmstatsarcachestat vmstat最常用,而cachestat需要安装bcc
缓存/缓冲区命中率 cachetop 需要安装bcc
SWAP已用空间和剩余空间 freesar free最为简单,而sar还可以记录历史
SWAP换入换出 vmstatsar vmstat最为简单,而sar还可以记录历史
内存泄漏检测 memleakvalgrind memleak需要安装bcc,valgrind还可以在旧版本(3.x)内核中使用
指定文件的缓存大小 pcstat 需要从源码下载安装
文件系统和磁盘I/O性能工具
性能指标 性能工具 说明
文件系统空间容量、使用量以及剩余空间 df 详细文档可以执行info coreutils 'df invocation’命令查看
索引节点容量、使用量以及剩余量 df 注意加上-i选项
页缓存和可回收Slab缓存 /proc/meminfosarvmstat 注意sar需要加上-r选项,而/proc/meminfo是其他工具的数据来源,也常用于监控系统
缓冲区 /proc/meminfosarvmstat 注意sar需要加上-r选项,而/proc/meminfo是其他工具的数据来源,也常用于监控系统
目录项、索引节点以及文件系统的缓存 /proc/slabinfoslabtop slabtop更直观,而/proc/slabinfo常用于监控
磁盘I/O使用率、IOPS、吞吐量、响应时间、I/O平均大小以及等待队列长度 iostatsardstat/proc/diskstats iostat最为常用,注意使用iostat -d -x或sar -d选项;/proc/diskstats则是其他工具的数据来源,也常用于监控
进程I/O大小以及I/O延迟 pidstatiotop 注意使用pidstat -d选项
块设备I/O事件跟踪 blktrace 需要跟blkparse配合使用,比如blktrace -d /dev/sda -o- | blkparse -|-
进程I/O系统调用跟踪 straceperf trace strace只可以跟踪单个进程,而perf trace还可以跟踪所用进程的系统调用
进程块设备I/O大小跟踪 biosnoopbiotop 需要安装bcc
动态追踪 ftracebccsystemtap ftrace用于跟踪内核函数调用栈,而bcc和systemtap则用于跟踪内核或应用程序的执行过程(注意bcc要求内核版本>= 4.1)
网络性能工具
性能指标 性能工具 说明
吞吐量(BPS) sarnethogsiftop/proc/net/dev 分别可以查看网络接口、进程以及IP地址的网络吞吐量;/proc/net/dev常用于监控
吞吐量(PPS) sar/proc/net/dev 注意使用sar -n DEV选项
网络连接数 netstatss ss速度更快
网络错误数 netstatsar 注意使用netstat -s或者sar -n EDEV/EIP选项
网络延迟 pinghping3 ping基于ICMP,而hping3基于TCP协议
连接跟踪数 conntrack/proc/sys/net/netfilter/nf_conntrack_count/proc/sys/net/netfilter/nf_conntrack_mac conntrack可用来查看所用连接跟踪的相关信息,nf_conntrack_count只是连接跟踪的数量,而nf_conntrack_mac则限制了总的连接跟踪数量
路由 mtrtracerouteroute route用于查询路由表,而mtr和traceroute则用来排查和定位网络链路中的路由问题
DNS dignslookup 用于排查DNS解析的问题
防火墙和NAT iptables 用于排查防火墙及NAT的问题
网卡选项 ethtool 用于查看和配置网络接口的功能选项
网络抓包 tcpdumpwireshark 通常在服务器中使用tcpdump抓包后再复制出来用wireshark的图形界面分析
动态追踪 ftracebccsystemtap ftrace用于跟踪内核函数调用栈,而bcc和systemtap则用于跟踪内核或应用程序的执行过程(注意bcc要求内核版本>= 4.1)

根据指标找工具

CPU性能
性能指标 性能工具 说明
平均负载 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/softirq、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 per可以用来分析CPU的换粗以及内核调用栈,execsnoop用来监测短时进程
内存性能
性能指标 性能工具
系统已用、可用、剩余内存 free、vmstat、sar、/proc/meminfo
进程虚拟内存、常驻内存、共享内存 ps、top
进程内存分布 pmap
进程Swap换出内存 top、/proc/pid/status
进程缺页异常 ps、top
系统换页情况 sar
缓存/缓冲区用量 free、vmstat、sar、cachestat
缓存/缓冲区命中率 cachetop
SWAP已用空间和剩余空间 free、sar
Swap换入换出 vmstat
内存泄漏检测 memleak、valgrind
指定文件的缓存大小 pcstat
文件系统和磁盘I/O
性能指标 性能工具 说明
文件系统空间容量、使用量以及剩余空间 df 详细文档见info coreutils ‘df invocation’
索引节点容量、使用量以及剩余量 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软件包
网络性能
性能指标 性能工具 说明
吞吐量(BPS) sar、nethogs、iftop 分别可以查看网络接口、进程以及IP地址的网络吞吐量
PPS sar、/proc/net/dev 查看网络接口的PPS
连接数 netstat、ss 查看网络连接数
延迟 ping、hping3 通过ICMP、TCP等测试网络延迟
连接跟踪数 conntrack 查看和管理连接跟踪情况
路由 mtr、route、traceroute 查看路由并测试链路信息
DNS dig、nslookup 排查DNS解析问题
防火墙和NAT iptables 配置和管理防火墙及NAT规则
网卡功能 ethtool 查看和配置网络接口的功能
抓包 tcpdump、wireshark 抓包分析网络流量
内核协议栈跟踪 bcc、systemtap 动态跟踪内核协议栈的行为

根据工具找指标

CPU性能
性能工具 CPU性能指标
uptime 平均负载
top 平均负载、运行队列、整体的CPU使用率以及每个进程的状态和CPU使用率
htop top增强版,以不同颜色区分不同类型的进程
atop CPU、内存、磁盘和网络等各种资源的全面监控
vmstat 系统整体的CPU使用率、上下文切换次数、中断次数,还包括处于运行和不可中断状态的进程数量
mpstat 每个CPU的使用率和软中断次数
pidstat 进程和线程的CPU使用率、中断上下文切换次数
/proc/softirq 软中断类型和在每个CPU上的累积中断次数
/proc/interrupts 软中断类型和在每个CPU上的累积中断次数
ps 每个进程的状态和CPU使用率
pstree 进程的父子关系
dstat 系统整体的CPU使用率
sar 系统整体的CPU使用率,包括可配置的历史数据
strace 进程的系统调用
perf CPU性能事件剖析,如调用链分析、CPU缓存、CPU调度等
execsnoop 监控短时进程
内存性能
性能工具 内存指标  
free、/proc/meminfo 系统已用、可用、剩余内存以及缓存和缓冲区的使用量  
top、ps 进程虚拟、常驻、共享内存以及缺页异常  
vmstat 系统剩余内存、缓存、缓冲区、换入、换出  
sar 系统内存换页情况、内存使用率、缓存和缓冲区用量以及Swap使用情况  
cachestat 系统缓存和缓冲区的命中率  
cachetop 进程缓存和缓冲区的命中率  
slabtop 系统slab缓存使用情况  
/proc/pid/status 进程swap内存等  
/proc/pid/smaps、pmap 进程地址空间和内存状态  
valgrind 进程内存错误检查器,用来检测内存初始化、泄漏、越界访问等各种内存错误  
memleak 内存泄漏检测  
pcstat 查看指定文件的缓存情况  
文件系统和磁盘I/O
性能工具 性能指标 性能工具 性能指标
iostat 磁盘I/O使用率、IOPS、吞吐量、响应时间、I/O平均大小以及等待队列长度 blktrace 跟踪块设备I/O事件
pidstat 进程I/O大小以及I/O延迟 biosnoop 跟踪进程的块设备I/O大小
sar 磁盘I/O使用率、IOPS、吞吐量以及响应时间 biotop 跟踪进程块I/O并按照I/O大小排序
dstat 磁盘I/O使用率、IOPS以及吞吐量 strace 跟踪进程的I/O系统调用
iotop 按I/O大小对进程排序 perf 跟踪内核中的I/O事件
slabtop 目录项、索引节点以及文件系统的缓存 df 磁盘空间和索引节点使用量和剩余量
/proc/slabinfo 目录项、索引节点以及文件系统的缓存 mount 文件系统的挂在路径以及挂载参数
/proc/meminfo 页缓存和可回收的slab缓存 du 目录占用的磁盘空间大小
/proc/diskstats 磁盘的IOPS、吞吐量以及延迟 tune2fs 显示和设置文件系统参数
/proc/pid/io 进程IOPS、I/O大小以及I/O延迟 hdparam 显示和设置磁盘参数
vmstat 缓存和缓冲区用量汇总    
网络性能
性能工具 主要功能
ifconfig、ip 配置和查看网络接口
ss 查看网络连接数
sar、/proc/net/dev/sys/class/net/eth0/statistics/ 查看网络接口的网络收发情况
nethogs 查看进程的网络收发情况
iftop 查看IP的网络收发情况
ethtool 查看和配置网络接口
conntrack 查看和管理连接跟踪情况
nslookup、dig 排查DNS解析问题
mtr、route、traceroute 查看路由并测试链路信息
ping、hping3 测试网络延迟
tcpdump 网络抓包工具
wireshark 网络抓包和图形界面分析工具
iptables 配置和管理防火墙及NAT规则
perf 剖析内核协议栈的性能
systemtap、bcc 动态追踪内核协议栈的行为

CPU性能分析一般步骤

在这里插入图片描述

内存性能分析一般步骤

在这里插入图片描述

I/O性能分析一般步骤

在这里插入图片描述

网络性能分析一般步骤

在这里插入图片描述
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐