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)

相关推荐
JunLan~1 小时前
Rocky Linux 系统安装/部署 Docker
linux·docker·容器
方竞2 小时前
Linux空口抓包方法
linux·空口抓包
sun0077003 小时前
ubuntu dpkg 删除安装包
运维·服务器·ubuntu
海岛日记3 小时前
centos一键卸载docker脚本
linux·docker·centos
AttackingLin4 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
吃肉不能购5 小时前
Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪
运维·yolo·自动化
学Linux的语莫5 小时前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
qq_312920115 小时前
docker 部署 kvm 图形化管理工具 WebVirtMgr
运维·docker·容器