文章目录 常见指标分类(USE法) 常见性能工具 CPU性能工具 内存性能工具 文件系统和磁盘I/O性能工具 网络性能工具 根据指标找工具 根据工具找指标 CPU性能分析一般步骤 内存性能分析一般步骤 I/O性能分析一般步骤 网络性能分析一般步骤 参考
常见指标分类(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使用率 vmstat
, mpstat
, top
, sar
, /proc/stat
top、vmstat、mpstat只可以动态查看,而sar还可以记录历史数据;/proc/stat是其他性能工具的数据来源,也常用于监控 进程CPU使用率 top
, ps
, pidstat
, htop
, atop
top和ps可以按CPU使用率给进程排序,而pidstat只显示实际用了CPU的进程;htop和atop以不同颜色显示更直观 系统上下文切换 vmstat
除了上下文切换次数,还提供运行状态和不可中断状态的进程数 进程上下文切换 pidstat
注意加上-w参数 软中断 top
, mpstat
, /proc/softirqs
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缓存 perf
使用perf stat子命令 CPU数 lscpu
, /proc/cpuinfo
lscpu更直观 事件剖析 perf
, 火焰图, execsnoop
perf和火焰图用来分析热点函数以及调用栈,execsnoop用来监测短时进程 动态追踪 ftrace
, bcc
, systemtap
ftrace用于跟踪内核函数调用栈,而bcc和systemtap则用于跟踪内核或应用程序的执行过程(注意bcc要求内核>=4.1)
内存性能工具
性能指标 性能工具 说明 系统已用、可用、剩余内存 free
, vmstat
, sar
, /proc/meminfo
free最为简单,而vmstat、sar更为全面;/proc/meminfo是其他工具的数据来源,也常用于监控系统中 进程虚拟内存、常驻内存、共享内存 ps
, top
, pidstat
, /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的数据来源 进程缺页异常 ps
, top
, pidstat
注意给pidstat加上-r选项 系统换页情况 sar
注意加上-B选项 缓存/缓冲区用量 free
, vmstat
, sar
, cachestat
vmstat最常用,而cachestat需要安装bcc 缓存/缓冲区命中率 cachetop
需要安装bcc SWAP已用空间和剩余空间 free
, sar
free最为简单,而sar还可以记录历史 SWAP换入换出 vmstat
, sar
vmstat最为简单,而sar还可以记录历史 内存泄漏检测 memleak
, valgrind
memleak需要安装bcc,valgrind还可以在旧版本(3.x)内核中使用 指定文件的缓存大小 pcstat
需要从源码下载安装
文件系统和磁盘I/O性能工具
性能指标 性能工具 说明 文件系统空间容量、使用量以及剩余空间 df
详细文档可以执行info coreutils 'df invocation’命令查看 索引节点容量、使用量以及剩余量 df
注意加上-i选项 页缓存和可回收Slab缓存 /proc/meminfo
, sar
, vmstat
注意sar需要加上-r选项,而/proc/meminfo是其他工具的数据来源,也常用于监控系统 缓冲区 /proc/meminfo
, sar
, vmstat
注意sar需要加上-r选项,而/proc/meminfo是其他工具的数据来源,也常用于监控系统 目录项、索引节点以及文件系统的缓存 /proc/slabinfo
, slabtop
slabtop更直观,而/proc/slabinfo常用于监控 磁盘I/O使用率、IOPS、吞吐量、响应时间、I/O平均大小以及等待队列长度 iostat
, sar
, dstat
, /proc/diskstats
iostat最为常用,注意使用iostat -d -x或sar -d选项;/proc/diskstats则是其他工具的数据来源,也常用于监控 进程I/O大小以及I/O延迟 pidstat
, iotop
注意使用pidstat -d选项 块设备I/O事件跟踪 blktrace
需要跟blkparse配合使用,比如blktrace -d /dev/sda -o- | blkparse -|- 进程I/O系统调用跟踪 strace
, perf trace
strace只可以跟踪单个进程,而perf trace还可以跟踪所用进程的系统调用 进程块设备I/O大小跟踪 biosnoop
, biotop
需要安装bcc 动态追踪 ftrace
, bcc
, systemtap
ftrace用于跟踪内核函数调用栈,而bcc和systemtap则用于跟踪内核或应用程序的执行过程(注意bcc要求内核版本>= 4.1)
网络性能工具
性能指标 性能工具 说明 吞吐量(BPS) sar
, nethogs
, iftop
, /proc/net/dev
分别可以查看网络接口、进程以及IP地址的网络吞吐量;/proc/net/dev常用于监控 吞吐量(PPS) sar
, /proc/net/dev
注意使用sar -n DEV选项 网络连接数 netstat
, ss
ss速度更快 网络错误数 netstat
, sar
注意使用netstat -s或者sar -n EDEV/EIP选项 网络延迟 ping
, hping3
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则限制了总的连接跟踪数量 路由 mtr
, traceroute
, route
route用于查询路由表,而mtr和traceroute则用来排查和定位网络链路中的路由问题 DNS dig
, nslookup
用于排查DNS解析的问题 防火墙和NAT iptables
用于排查防火墙及NAT的问题 网卡选项 ethtool
用于查看和配置网络接口的功能选项 网络抓包 tcpdump
, wireshark
通常在服务器中使用tcpdump抓包后再复制出来用wireshark的图形界面分析 动态追踪 ftrace
, bcc
, systemtap
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性能分析一般步骤
网络性能分析一般步骤
参考
Phoronix Test Suite OpenBenchmarking.org Linux 性能优化实战 性能之巅