Linux 性能监测命令

目录

一、Mpstat命令

Mpstat语法:

直接使用mpstat命令:

指定参数查看:

单独查看 一个cpu

stress压力测试

工具安装:

常用参数:

压力测试:

二、iostat命令

iostat命令语法

​编辑

cpu属性说明:

磁盘属性说明:

-x 详细显示说明:

只显示磁盘设备 -d

三、iotop

命令使用方法:

 四、pidstat

Pidstat使用方法:

示例一、查看所有进程的 CPU 使用情况( -u -p ALL)

示例二: 内存使用情况统计(-r)

示例三:显示各个进程的IO使用情况(-d)

示例四:显示每个进程的上下文切换情况(-w)

示例五:显示选择任务的线程的统计信息外的额外信息 (-t)

五、lsof

语法:

lsof输出各列信息的意义如下

FD文件描述符列表

文件类型:


一、Mpstat命令

实时系统监控工具,此命令会展现cpu、的一些统计信息,这些信息存放在/proc/stat文件中,在多cpu系统里,其不但能查看所有cpu的平均状况信息,而且能够查看特定cpu信息。

Mpstat语法:

mpstat    [-P {|ALL}]     [internal    [count]]

-P :指定要监控那个CPU,范围是[0~n-1],ALL表示监控所有CPU

internal:相邻两次采样的间隔时间

count:采样次数

直接使用mpstat命令:

各列的含义:

  • Cpu:处理器id
  • Usr:在internet时间段里,cpu一共花了多少比例的时间运行在用户态空间或者说是用户进程。
  • Nice:用户空间进程的cpu‘的调度优先级
  • Sys:核心时间,CPU花了多少比例的时间在内核空间运行。分配内存、IO操作、创建子进程……都是内核操作。这也表明,当IO操作频繁时,System参数会很高。
  • Iowait:硬盘io等待时间,在计算机中,读写磁盘的操作远比cpu运行的速度要慢,cpu负载处理数据,而数据一般在磁盘上需要读到内存中才能处理
  • Irq:硬中断时间,硬中断是由外部事件引起的具有随机性和突发性
  • Soft:软中断时间,软中断是执行中断指令产生的
  • Steal:显示虚拟机管理器在服务另一个虚拟处理器时虚拟cpu处在非资源等待下花费时间的百分比即虚拟机强制cpu等待的时间的百分比
  • Gnice:CPU运行niced guest虚拟机所花费的时间百分比
  • Guest:显示运行虚拟处理器时花费时间的百分比
  • Idle:cpu出去等待磁盘io操作外的因为任何原因而空闲的时间闲置时间即cpu空闲时间百分比

指定参数查看:

mpstat -P ALL 3 3         :查看所有cpu,每三秒查看一次,查看3次。

Linux 性能监测命令_第1张图片

单独查看 一个cpu

mpstat -P 0 1 2
单独指向一个cpu,需要注意的cpu序号是从0开始的

stress压力测试

stress 是Unix类系统下的工作量和压力测试工具。它可对用户指定的CPU数量的I/O,内存和硬盘进行负载并报告它检测到任何错误。

工具安装:

如果采用YUM安装方式,则需要首先安装epel的扩展源,然后安装stress即可,相关命令如下:
yum install -y epel-release
yum install -y stress

常用参数:

-c cpu 产生n个进程,每个进程都反复不停的计算随机数的平方根
-i io 产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上
-m vm 产生n个进程,每个进程不断分配和释放内存
-t timout 在n秒后结束进程
-d hdd 产生n个不断执行 write 和unlink函数的进程(创建文件、写入内容、删除文件

压力测试:

Linux 性能监测命令_第2张图片

 

二、iostat命令

iostat主要用于输出磁盘io和cpu的统计信息

iostat命令语法

iostat 【选项】【时间间隔】【次数】

-c: 显示CPU使用情况
-d: 显示磁盘使用情况
-N: 显示磁盘阵列(LVM) 信息
-n: 显示NFS 使用情况
-k: 以 KB 为单位显示
-m: 以 M 为单位显示
-t: 报告每秒向终端读取和写入的字符数和CPU的信息
-V: 显示版本信息
-x: 显示详细信息
-p:[磁盘] 显示磁盘和分区的情况

Linux 性能监测命令_第3张图片

cpu属性说明:

  • user:CPU处在用户模式下的时间百分比。
  • nice:CPU处在带NICE值的用户模式下的时间百分比。
  • system:CPU处在系统模式下的时间百分比。
  • iowait:CPU等待输入输出完成时间的百分比。
  • steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
  • idle:CPU空闲时间百分比。

磁盘属性说明:

  • device:磁盘名称
  • tps:每秒钟发送到的I/O请求数.
  • Blk_read/s:每秒读取的block数.
  • Blk_wrtn/s:每秒写入的block数.
  • Blk_read:读入的block总数.
  • Blk_wrtn:写入的block总数.

-x 详细显示说明:

rrqm/s:           每秒进行 merge 的读操作数目。即 rmerge/s
wrqm/s:         每秒进行 merge 的写操作数目。即 wmerge/s
r/s:                 每秒完成的读 I/O 设备次数。即 rio/s
w/s:                每秒完成的写 I/O 设备次数。即 wio/s
rkB/s:             每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s:            每秒写K字节数。是 wsect/s 的一半。

avgrq-sz:        平均每次设备I/O操作的数据大小 (扇区)。
avgqu-sz:       平均I/O队列长度。

r_await:          每个读操作平均所需的时间不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间。
w_await:         每个写操作平均所需的时间不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间。
await:              平均每次设备I/O操作的等待时间 (毫秒)。
svctm:             平均每次设备I/O操作的服务时间 (毫秒)。
%util:              一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比

只显示磁盘设备 -d

Linux 性能监测命令_第4张图片

Linux 性能监测命令_第5张图片

三、iotop

iotop命令是一个用来监视磁盘io使用状况的top类工具。iotop具有与top相似的UI,其中包括PID、用户、O、进程等相关信息。Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以很方便的查看。

如果命令未安装可以从yum仓库进行安装

命令使用方法:

Iotop(选项)

  • -o:        只显示有io操作的进程
  • b:        批量显示,无交互,主要用作记录到文件。
  • -n         NUM:显示NUM次,主要用于非交互式模式。
  • -d         SEC:间隔SEC秒显示一次。
  • -p         PID:监控的进程pid。
  • -u         USER:监控的进程用户。

iotop常用快捷键:

  • 1.左右箭头:        改变排序方式,默认是按lO排序。
  • 2.r:        改变排序顺序。
  • 3.o:        只显示有IO输出的进程。
  • 4.p:        进程/线程的显示方式的切换。
  • 5.a:        显示累积使用量。
  • 6.q:        退出。

命令效果:

Linux 性能监测命令_第6张图片

 

 四、pidstat

pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存一、线程、设备IO等系统资源的占用情况。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

Pidstat使用方法:

Pidstat 【选项】 【时间间隔】【次数】

常用参数:

  • -u:默认的参数,显示各个进程的cpu使用统计
  • -r:显示各个进程的内存使用统计
  • -d:显示各个进程的IO使用情况
  • -p:指定进程号
  • -w:显示每个进程的上下文切换情况
  • -t:显示选择任务的线程的统计信息外的额外信息
  • -T { TASK | CHILD | ALL }
    这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
    注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
  • -V:版本号
  • -h:在一行上显示了所有活动,这样其他程序可以容易解析。
  • -I:在SMP环境,表示任务的CPU使用率/内核数量
  • -l:显示命令名和所有参数

示例一、查看所有进程的 CPU 使用情况( -u -p ALL)

详细说明 

  • PID:进程ID
  • %usr:进程在用户空间占用cpu的百分比
  • %system:进程在内核空间占用cpu的百分比
  • %guest:进程在虚拟机占用cpu的百分比
  • %CPU:进程占用cpu的百分比
  • CPU:处理进程的cpu编号
  • Command:当前进程对应的命令

示例二: 内存使用情况统计(-r)

Linux 性能监测命令_第7张图片

使用-r选项,pidstat将显示各活动进程的内存使用统计:

  • PID:进程标识符
  • Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页
  • Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页
  • VSZ:虚拟地址大小,虚拟内存的使用KB
  • RSS:常驻集合大小,非交换区五里内存使用KB
  • Command:task命令名

示例三:显示各个进程的IO使用情况(-d)

报告IO统计显示以下信息:

  • PID:进程id
  • kB_rd/s:每秒从磁盘读取的KB
  • kB_wr/s:每秒写入磁盘KB
  • kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。
  • COMMAND:task的命令名

示例四:显示每个进程的上下文切换情况(-w)

  • PID:进程id
  • Cswch/s:每秒主动任务上下文切换数量
  • Nvcswch/s:每秒被动任务上下文切换数量
  • Command:命令名

示例五:显示选择任务的线程的统计信息外的额外信息 (-t)

  • TGID:主线程的表示
  • TID:线程id
  • %usr:进程在用户空间占用cpu的百分比
  • %system:进程在内核空间占用cpu的百分比
  • %guest:进程在虚拟机占用cpu的百分比
  • %CPU:进程占用cpu的百分比
  • CPU:处理进程的cpu编号
  • Command:当前进程对应的命令

五、lsof

lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。
在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

语法:

lsof(选项)
选项 描述
-a 列出打开文件存在的进程;
-c<进程名> 列出指定进程所打开的文件;
-g 列出GID号进程详情;
-d<文件号> 列出占用该文件号的进程;
+d<目录> 列出目录下被打开的文件;
+D<目录> 递归列出目录下被打开的文件;
-n<目录> 列出使用NFS的文件;
-i<条件> 列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号> 列出指定进程号所打开的文件;
-u 列出UID号进程详情;
-h 显示帮助信息
-v 显示版本信息
[root@localhost~]# lsof
command     PID USER   FD      type             DEVICE     SIZE       NODE NAME

lsof输出各列信息的意义如下

  • COMMAND:进程的名称
  • PID:进程标识符
  • PPID:父进程标识符(需要指定-R参数)
  • USER:进程所有者
  • PGID:进程所属组
  • FD:文件描述符,应用程序通过文件描述符识别该文件。
  • DEVICE:指定磁盘的名称
  • SIZE:文件的大小
  • NODE:索引节点(文件在磁盘上的标识)
  • NAME:打开文件的确切名称


FD文件描述符列表

  • cwd:表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改
  • txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序
  • lnn:library references (AIX)(库引用);
  • er:FD information error (see NAME column)(fd信息错误);
  • jld:jail directory (FreeBSD)(监控目录);
  • ltx:shared library text (code and data)(共享库文本);
  • mxx :hex memory-mapped type number xx(十六进制内存映射类型号xx);
  • m86:DOS Merge mapped file(DOS合并映射文件);
  • mem:memory-mapped file(内存映射文件);
  • mmap:memory-mapped device(内存映射设备);
  • pd:parent directory(父目录);
  • rtd:root directory(跟目录);
  • tr:kernel trace file (OpenBSD)(内核跟踪文件);
  • v86 VP/ix mapped file(VP/IX映射文件);
  • 0:表示标准输出
  • 1:表示标准输入
  • 2:表示标准错误

文件类型:

  • DIR:表示目录。
  • CHR:表示字符类型。
  • BLK:块设备类型。
  • UNIX: UNIX 域套接字。
  • FIFO:先进先出 (FIFO) 队列。
  • IPv4:网际协议 (IP) 套接字。
  • DEVICE:指定磁盘的名称
  • SIZE:文件的大小
  • NODE:索引节点(文件在磁盘上的标识)
  • NAME:打开文件的确切名称
     

你可能感兴趣的:(linux)