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)

相关推荐
熬夜学编程的小王1 小时前
【Linux篇】初识Linux指令(下篇)
linux·运维·服务器·linux指令
小卓笔记4 小时前
keepalived应用
linux·服务器·数据库
Hurry66 小时前
Rocky Linux 9.x 基于 kubeadm部署k8s 1.32
linux·运维·kubernetes
极客代码6 小时前
Unix 域套接字(本地套接字)
linux·c语言·开发语言·unix·socket·unix域套接字·本地套接字
zxnbmk6 小时前
ansible速查手册
linux·服务器·ansible
小卓笔记6 小时前
DNS主从服务器
运维·服务器
book01216 小时前
Ansible 自动化运维
运维·自动化·ansible
巷子里的童年ya7 小时前
Ansible模块
linux·centos·ansible
阿正的梦工坊7 小时前
Linux 命令:按内存使用大小排序查看 PID 的完全指南
linux·运维·服务器
神秘的土鸡7 小时前
Centos搭建Tomcat服务器:我的实战经验分享(成功版本 详细!)
linux·开发语言·python·tomcat·web