25-性能分析命令

2021-07-06 09:39:26 浏览数 (1)

TOP

代码语言:javascript复制
KiB Mem :  4030604 total,   150532 free,   482848 used,  3397224 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  3260600 avail Mem

E可以切换单位

e可以切换进程列表中的单位

代码语言:javascript复制
MiB Mem :   3936.1 total,    147.5 free,    471.8 used,   3316.9 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   3183.9 avail Mem 

GiB Mem :      3.8 total,      0.1 free,      0.5 used,      3.2 buff/cache
GiB Swap:      0.0 total,      0.0 free,      0.0 used.      3.1 avail Mem

TiB Mem :      0.0 total,      0.0 free,      0.0 used,      0.0 buff/cache
TiB Swap:      0.0 total,      0.0 free,      0.0 used.      0.0 avail Mem

PiB Mem :      0.0 total,      0.0 free,      0.0 used,      0.0 buff/cache
PiB Swap:      0.0 total,      0.0 free,      0.0 used.      0.0 avail Mem

EiB Mem :      0.0 total,      0.0 free,      0.0 used,      0.0 buff/cache
EiB Swap:      0.0 total,      0.0 free,      0.0 used.      0.0 avail Mem
  • total:总共的
  • free:空闲的
  • used:使用的

buff/cache

  • buff:缓冲区

是磁盘上虚拟出来的一个空间,用于平衡内存与磁盘的速度

  • cache:缓存

是内存中虚拟出来的一个空间,用于平衡cpu与内存的速度

Swap

交换分区

  • avail Mem:可以用于下一次使用的内存大小

常用命令

命令

  • Z:颜色
  • B:加粗
  • E:系统内存单位切换
  • e:进程内存单位切换
  • l:平均值
  • t:任务、cpu统计信息
  • m:查看内存信息
  • 0:切换显示0信息
  • 123:cpu信息
  • fF:添加、删除、订购、排序字典
  • X:增加列宽度
  • L &:查找、再次查找
  • < >:左右移动排序
  • R:排序
  • H:显示线程
  • V:树结构展示
  • J:列表数字 (左、右对其)
  • c:查看cmd命令
  • i:查看idle值
  • s:设置更新时间
  • j:列表为字符串(左、右对其)
  • x:切换高亮排序字段
  • y:根据运行任务高亮排序
  • u:u、U用户
  • b n 2 :加粗显示cpu使用率最高的前两个进程
  • n 0:恢复默认显示的进程信息
  • sd 1:设置数据更新时间为1秒
  • top -H -p tid:看某个进程下线程的情况

查看其他可以展示的列

f可以查看

  • PID:进程ID
  • USER:任务启动用户
  • PR:优先级,越小越高
  • NI:进程优先级,越小越高
  • VIRT:虚拟的内存使用大小
  • RES:进程使用的真实的物理内存大小
  • SHR:进程使用的共享内存大小
  • S:状态
  • %CPU:CPU占用
  • %MEM:内存占用
  • TIME :运行时间
  • COMMAND:进程名称

ps

获取当前系统的进程状态

代码语言:javascript复制
ps -ef-eF-ely 使用标准语法查看系统上的每个进程 
ps auxax 使用BSD语法查看系统上的每个进程
ps -ejHaxms 显示进程数
ps -eLfaxms 显示线程信息

vmstat

可以对虚拟内存、进程、cpu活动进行监控

vmstat 1 10

procs:「r」显示多少进程在等待。「b」显示多少进程在补课中断的休眠

memory:「swpd」 显示多少块被换出磁盘,「free」显示剩下的空闲块,「buff」正在被作用缓冲区的块,「cache」正在被用作操作系统的缓存

swap:现在交换活动,「si」每秒有多少块正在被换入内存,「so」正在被换出到磁盘

io:显示了多少块从设备读取「bi」和写出「bo」,通常反映了硬盘I/O

system:显示每秒中断「in」和上下文切换「cs」的数量

cpu:显示所有的cpu时间花费在各类操作的百分比,包括执行用户代码「非内核」,执行系统代码「内核」,空闲以及等待IO

内存不足的表现:「free memory」急剧减少,回收buffer和cacher也无济于事,大量使用交换分区「swpd」页面交换「swap」频繁,读写磁盘数量「io」增多,缺页中断「in」增多,上下文切换「cs」次数增多,等待IO的进程数「b」增多,大量CPU用于等待IO「wa」

帮助信息

帮助信息

  • -a:显示活跃或非活跃的内存
  • -f:线程从系统启动至今的fork数量
  • -m:显示slab信息
  • -n:头新消息仅显示一次
  • -s:以表格方式显示时间计数器的内存状态
  • -d:报告磁盘状态
  • -p:显示指定的硬盘分区状态
  • -s:输出信息的定位

mpstat

实时监控工具,主要报告与cpu相关统计信息 mpstat 是一个实时监控工具,主要报告与cpu相关统计信息,信息存放在/proc/stat文件中。 官方:reports individual or combined processor related statistics.显示报告单个或组合的处理器相关 统计信息。 是一个常用的多核CPU性能分析工具,用来实时查看每个CPU的性能指标,以及所有CPU的平均指标

代码语言:javascript复制
mpstat 1 10 每秒显示1次,总共显示10次

mpstat 1 10

代码语言:javascript复制
mpstat -P ALL 3 3秒获取一次所有的监控数据

mpstat -P ALL 3

pidstat

监控全部或指定进程的cpu、内存、线程、设备io等资源占用情况和上下文切换信息,是一个常用的进程性能分析工具,用来实时查看进程cpu、内存、IO以及上下文切换等指标信息

pidstat -u -w 1

cswch/s 自愿上下文切换

nvcswch/s 非自愿上下文切换

netstat

用于显示与IPTCPUDPICMP协议相关的数据统计,一般用于检验本机各端口的网络连接情况

-a或--all:显示所有连线中的Socket;

-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;

-c或--continuous:持续列出网络状态;

-C或--cache:显示路由器配置的快取信息;

-e或--extend:显示网络其他相关信息;

-F或--fib:显示FIB;

-g或--groups:显示多重广播功能群组组员名单;

-h或--help:在线帮助;

-i或--interfaces:显示网络界面信息表单;

-l或--listening:显示监控中的服务器的Socket;

-M或--masquerade:显示伪装的网络连线;

-n或--numeric:直接使用ip地址,而不通过域名服务器;

-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;

-o或--timers:显示计时器;

-p或--programs:显示正在使用Socket的程序识别码和程序名称;

-r或--route:显示Routing Table;

-s或--statistice:显示网络工作信息统计表;

-t或--tcp:显示TCP传输协议的连线状况;

-u或--udp:显示UDP传输协议的连线状况;

-v或--verbose:显示指令执行过程;

-V或--version:显示版本信息;

-w或--raw:显示RAW传输协议的连线状况;

-x或--unix:此参数的效果和指定"-A unix"参数相同;

--ip或--inet:此参数的效果和指定"-A inet"参数相同。

iostat

显示设备,分区和网络文件系统的CPU统计信息和输入/输出统计信息。

iostat

-d:显示设备(磁盘)使用状态

-k:某些使用block为单位的列强制使用Kilobytes为单位

iostat -dx

第一行显示的是自系统启动以来的平均值,然后显示增量的平均值,每个设备一行。

常见linux的磁盘IO指标的缩写习惯:rq是request,r是read,w是write,qu是queue,sz是size,a是

verage,tm是time,svc是service。

  • rrqm/s和wrqm/s:每秒合并的读和写请求,“合并的”意味着操作系统从队列中拿出多个逻辑请求合并为一个请求到实际磁盘。
  • r/s和w/s:每秒发送到设备的读和写请求数。
  • rsec/s和wsec/s:每秒读和写的扇区数。
  • avgrq –sz:请求的扇区数。
  • avgqu –sz:在设备队列中等待的请求数。
  • await:每个IO请求花费的时间。
  • svctm:实际请求(服务)时间。
  • %util:至少有一个活跃请求所占时间的百分比。
代码语言:javascript复制
iostat -d 2 每2秒显示一次连续的设备报告
iostat -d 2 6 每个2秒显示设备信息,总共显示6次
iostat -x sda 2 每个2秒,显示设备sda的扩展信息
 sdhd 表示硬盘,a表示第1块盘,1表示第1个分区
 sd = Serial ATA Disk 表示硬盘是scsi,SATA串行接口
 hd = Hard Disk表示设备上IDE(或ATA)并行接口,u盘也是scsi,所以u盘也是sda
 vmware把磁盘做成scsi设备,所以设备名称是sda
iostat -dk 1 每隔1秒以千字节显示设备信息
iostat -dxm 1 每个1秒以兆字节显示设备扩展信息

dstat

dstat 是一个用来替换vmstat、iostat、netstat、nfsstat、ifstat这些命令的工具,是一个全能的系统信 息统计工具。 与sysstat相比,dstat拥有一个彩色的界面,数据易于观察。 dstat的功能非常强大,可以实时监控cpu、内存、磁盘、网络、io等使用情况。直接使用 dstat 命令, 相当于 dstat -cdngy 显示cpu、disk、net、page、system信息。 dstat 默认是每秒刷新显示一次数据,但是可以自己设置, dstat 3 就是每3秒收集一次数据,

dstat

帮助信息

帮助信息

完整

代码语言:javascript复制
 dstat -lcmsdrpgny #     完整

完整

cpu信息中:hiq、siq代表 硬中断 和 软中断

system信息中:intcsw 代表,中断次数(interrupt) 和 上下文切换 (context switch)

精简

代码语言:javascript复制
dstat -lcmdry  # 精简

精简

sar

https://blog.csdn.net/liyongbing1122/article/details/89517282

sar

工具用途

  • 输入/输出和传输速率统计信息(全局,每个设备,每个分区和每个网络文件系统)
  • CPU统计信息(全局和每个CPU),包括对虚拟化体系结构的支持
  • 内存,大页面和交换空间利用率统计信息
  • 虚拟内存,分页和故障统计
  • 流程创建活动
  • 中断统计信息(全局,每个CPU和每个中断,包括潜在的APIC中断源,硬件和软件中断)
  • 广泛的网络统计信息:网络接口活动(每秒接收和传输的数据包数量和kB等),包括来自网络设备的故障;基于SNMPv2标准的IP,TCP,ICMP和UDP协议的网络流量统计;支持与IPv6相关的协议
  • 光纤通道流量统计
  • 基于软件的网络处理(softnet)统计信息
  • NFS服务器和客户端活动
  • 套接字统计
  • 运行队列和系统负载统计信息
  • 内核内部表利用率统计
  • 交换统计
  • TTY设备活动
  • 电源管理统计信息(瞬时和平均CPU时钟频率,风扇速度,设备温度,电压输入)
  • USB设备插入系统
  • 文件系统利用率(节点和块)
  • 失速信息统计

0 人点赞