linux各种性能工具

马肤
这是懒羊羊

一、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)


文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复:表情:
评论列表 (暂无评论,0人围观)

还没有评论,来说两句吧...

目录[+]

取消
微信二维码
微信二维码
支付宝二维码