一、cpu性能工具
1.平均负载:uptime(最简单)、top(提供了最全的指标)、/proc/loadavg(常用于监控系统)
2.系统cpu使用率:vmstat、mpstat、top、sar(记录历史数据)、/proc/stat(常用于监控) vmstat、mpstat、top只可以动态查看
3.进程cpu使用率:top、ps、pidstat(只显示实际用了cpu的进程)、htop、atop top、ps可按cpu使用率排序 htop、atop以不同颜色显示更直观
注 :pidstat等效于pidstat -u -p ALL
%usr:进程在用户空间占用cpu的百分比
%system:进程在内核空间占用cpu的百分比
%guest:进程在虚拟机占用cpu的百分比
%CPU:进程占用cpu的百分比
CPU:处理进程的cpu编号
Command:当前进程对应的命令
4.系统上下文切换:vmstat
5.进程上下文切换:pidstat -w
6.软中断:top(提供软中断cpu使用率)、mpstat、/proc/softirqs提供了各种软中断在每个cpu上的运行次数
**7.硬中断:vmstat(提供总的中断次数)、/proc/interrupts(提供各种中断在每个cpu上运行的累计次数) **
注:
(1) 硬中断
由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包
的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。
(2) 软中断
为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间
就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。
8.网络:dstat和sar提供总的网络接受和发送情况、tcpdump抓包
注 :dstat显示结果含义
CPU状态 CPU的使用率。显示了用户占比,系统占比、空闲占比、等待占比、硬中断和软中断情况。
磁盘统计 磁盘的读写,分别显示磁盘的读、写总数。
网络统计 网络设备发送和接受的数据,分别显示的网络收、发数据总数。
分页统计 系统的分页活动。分别显示换入(in)和换出(out)。
系统统计 统计中断(int)和上下文切换(csw)。
9.i/o:dstat、sar都提供i/o的整体情况
注 :sar命令参数
-A:所有报告的总和
-b:显示I/O和传递速率的统计信息
-B:显示换页状态
-d:输出每一块磁盘的使用信息
-e:设置显示报告的结束时间
-f:从制定的文件读取报告
-i:设置状态信息刷新的间隔时间
-P:报告每个CPU的状态
-R:显示内存状态
--u:输出cpu使用情况和统计信息
--v:显示索引节点、文件和其他内核表的状态
-w:显示交换分区的状态
-x:显示给定进程的装态
-r:报告内存利用率的统计信息
10.cpu缓存:perf,使用perf stat子命令
**11.cpu数:lscpu(更直观)、/proc/cpuinfo **
12.事件刨析:perf和火焰团用来分析热点函数、execsnoop检测短时进程
13.动态追踪:ftrace(用于跟踪内核函数调用栈)、bcc和systemtab用于跟踪内核或应用程序的执行过程
二、内存性能工具
**1.系统已用、可用、剩余内存:free(最简单)、vmstat和sar更全面、/proc/meminfo是其他工具的数据来源,常用于监控 **
2.进程虚拟内存、常驻内存、共享内存:ps和top最简单、pidstat -r、/proc/pid/stat和/proc/pid/status是其他工具的数据来源,常用于监控系统
3.进程内存分布:pmap、/proc/pid/maps是pmap的数据来源
4.进程swap换出内存:top、/proc/pid/status是top的数据来源
5.进程缺页异常:ps、top、pidstat -r
6.系统换页情况:sar -B
7.缓存缓冲区用量:free、vmstat(最常用)、sar、cachestat(需要安装bcc)
8.缓存缓冲区命中率:cachetop(需要安装bcc)
9.swap已用空间和剩余空间:free(最简单)、sar(可以记录历史)
10.swap换入换出:vmstat(最简单)、sar(可以记录历史)
11.内存泄露检测:memleak(需要安装bcc)、valgrind(可在旧版本如3.x内核中使用)
12.指定文件的缓存大小:pcstat(需要从源码中下载安装)
三、文件系统和磁盘i/o性能工具
1.文件系统空间容量、使用量以及剩余空间:df详细文档可执行info coreutils'df invocation'命令查询
2.索引节点容量、使用量以及剩余空间:df -i
3.页缓存和可回收slab缓存:/proc/meminfo是数据来源,常用于监控、sar -r、vmstat
4.缓冲区:/proc/meminfo是数据来源,常用于监控、sar -r、vmstat
5.目录项、索引节点以及文件系统的缓存:/proc/slapinfo(常用于监控)、slaptop(更直观)
6.磁盘io使用率、iops(Input/Output Per Second)、吞吐量、响应时间、io平均大小以及等待队列长度:iostat(最常用,注意使用iostat -d -x或者sar -d)、sar、dsata、/proc/diskstats是数据来源,常用于监控
7.进程io大小以及io延迟:pidstat -d、iotop
注 :iotop参数
-o 仅显示产生(产生过)IO的进程;
-b 批量模式,无法进行交互模式,多次的输出依次刷新;
-n 设置退出前执行的次数,可以结合-b方便日志输出;
-u 表示控制仅显示user用户的相关进程;
-a 显示累积流量,方便查看发生IO的总量
-t 在每行上输出当前的时间戳,会以batch模式输出
8.块设备io事件跟踪:blktrace需要跟blkparse配合使用,比如blktrace -d /dev/sda -o- |blkparse -i-
9.进程块设备io大小跟踪:biosnoop、biotop 都需要安装bcc
10.动态追踪:ftrace用于跟踪内核函数调用栈、bcc(要求内核版本>=4.1)和systemtap用于跟踪内核或应用程序的执行过程
四、网络性能工具
1.吞吐量(bps):sar、nethogs、iftop分别可以查看网络接口、进程以及地址的网络吞吐量;/proc/net/dev常用于监控
2.吞吐量(pps):sar -n DEV、/proc/net/dev
3.网络连接数:netstat、ss(Socket Statistics的缩写,速度更快)
注 :
netstat参数
-a (all) 显示所有选项,默认不显示LISTEN相关。
-t (tcp) 仅显示tcp相关选项。
-u (udp) 仅显示udp相关选项。
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服务状态。
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
ss参数
-h, --help 帮助
-V, --version 显示版本号
-t, --tcp 显示 TCP 协议的 sockets
-u, --udp 显示 UDP 协议的 sockets
-x, --unix 显示 unix domain sockets,与 -f 选项相同
-n, --numeric 不解析服务的名称,如 "22" 端口不会显示成 "ssh"
-l, --listening 只显示处于监听状态的端口
-p, --processes 显示监听端口的进程(Ubuntu 上需要 sudo)
-a, --all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接
-r, --resolve 把 IP 解释为域名,把端口号解释为协议名称
4.网络错误数:netstat -s、sar -n EDEV/EIP
5.网络延迟:ping(基于icmp协议)、hping3(基于tcp协议)
6.连接跟总数:conntrack(可用来查看所有连接跟踪的相关信息)、/proc/sys/net/netfilter/nf_conntrack_count(只是连接跟踪的数量)、/proc/sys/net/netfilter/nf_conntrack_max(限制了总的连接的数量)
7.路由:mtr和traceroute用来排查和定位网络链路中的路由问题、route(用于查询路由表)
注 :mtr参数
例 mtr -n -i -a 0.0.0.0 1.1.1.1
-n no-dns(或简写为-n) :不对IP地址做域名解析
-s :用来指定ping数据包的大小
-i :使用这个参数来设置ICMP返回之间的要求默认是1秒
-a :来设置发送数据包的IP地址 这个对一个主机由多个IP地址是有用的
-r :已报告模式显示
-c : 每秒发送多少包,默认为10个。英文是(--report-cycles COUNT)
--report :结果显示,并不动态显示
输出参数的解释:
Loss% -- 丢包率,单位是"%";
Snt -- sent包的数量
Last -- 最后一个包的延时
Avg -- 所有包的平均延时
Best -- 延时最小的包
Wrst -- 延时最大的包
StDev -- 标准偏差
8.DNS:dig、nslookup 都用来排查DNS解析的问题
**9.防火墙和NAT: iptables **
10.网卡选项:ethtool 用于查看和配置网络接口的功能问题
11.网络抓包:tcpdump、wireshark
12.动态追踪:ftrace(用于跟踪内核函数调用栈)、bcc和systemtab用于跟踪内核或应用程序的执行过程(bcc要求内核版本>=4.1)