1、详解 vmstat(Linux 系统级别)
介绍:Virtual Meomory Statistics,报告虚拟内存统计信息。
会统计进程信息、内存、交换区、IO、磁盘、CPU 等数据
vmstat主要能看Linux 系统级别的性能指标
- 运行状态、不可中断睡眠状态的进程数量
-
内存、交换区、I/O、CPU 信息
-
上下文切换次数、中断次数
-
磁盘 I/O 的详细信息和概要信息
语法格式:
vmstat [options] [delay [count]]
options:命令行参数,可选
delay:间隔多久统计一次数据,可选
count:统计一次,可选
注意:若只传了 delay,则统计次数是无限次,结束统计后会打印本次所有数据的平均值
栗子:
vmstat 1 #每隔 1s 统计打印一次数据,统计无限次
vmstat 2 5 #每隔 2s 统计打印一次数据,共统计 5 次
1.1命令行参数:
2.1统计数据的字段说明:
2.1.1 procs:进程状态
2.1.2 memory:内存信息
2.1.3 swap:交换区
2.1.4 io:io 读写信息
现在的Linux版本块的大小为1024bytes
2.1.5 system:系统信息
2.1.6 CPU 详细信息
这些是总 CPU 时间的百分比
3.1数据来源
主要来自这三个文件
-
/proc/meminfo
-
/proc/stat
-
/proc/*/stat
3.1.1
vmstat
#这些信息主要来自 /proc/stat
3.1.2
vmstat -s
#这些信息的分别来自于 /proc/meminfo、 /proc/stat和 /proc/vmstat
3.1.3
vmstat -d
#这些信息主要来自于 /proc/diskstats
4.1打印活动内存和不活动内存量
vmstat -a 2 2
5.1以 MB 单位输出结果
vmstat -S M 1 2
6.1以 MB 单位输出各事件计数器和内存的统计信息
vmstat -s -S M
注意事项
-
vmstat 不需要特殊权限
-
vmstat 报告旨在帮助确定系统瓶颈,所以它不会将自己视为正在运行的进程
-
当前所有的 Linux 块都是 1024 字节, 旧内核可能报告的块为 512 字节,2048 字节或 4096 字节
2、详解 pidstat (均是进程、线程级别)
安装:
yum install sysstat
备注说明:(The sysstat package contains sar, sadf, mpstat, iostat, pidstat, nfsiostat-sysstat,tapestat, cifsiostat and sa tools for Linux.)
介绍:
- 对 Linux 任务的统计
-
主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等
pidstat 主要能看什么性能指标
均是进程、线程级别
2.1 语法格式
pidstat [ -C comm ] [ -d ] [ -h ] [ -I ] [ -l ] [ -p { pid [,...] | SELF | ALL } ] [ -r ] [ -t ] [ -T { TASK | CHILD | ALL } ] [ -u ] [ -V ] [ -w ] [ interval [ count ] ]
# interval :间隔多久统计一次数据,可选
# count:统计一次,可选
# 注意:若只传了 interval ,则统计次数是无限次,结束统计后会打印本次所有数据的平均值
2.2 字段说明
2.3 查看活跃进程的 I/O 读写情况
pidstat -d 1 10
字段说明:
2.4 查看活跃进程的上下文切换次数
pidstat -w 1 5
字段说明:
2.5 查看活跃进程的内存使用情况
pidstat -r 1 5
字段说明:
2.6 查看活跃进程的内存使用情况
pidstat -s 1 2
字段说明:
2.7 参数 -t
作用
显示进程关联的线程的统计信息
pidstat -t 1 2
-
TGID:主进程 ID
-
TID:进程下的各个子线程 ID
2.8 参数 -l
作用
详细的输出进程命令和所有参数
pidstat -l 1 1
2.9 参数 --human
作用
人性化的输出大小
pidstat -d --human 1 2
2.10 -G process_name
作用
-
仅显示命令名称包含字符串 process_name 的进程
-
该字符串可以是正则表达式
-
如果选项 -t 与选项 -G 一起使用,则还将显示属于该进程的线程(即使它们的命令名不包括字符串process_name)
pidstat -t -G pidstat 1 2
3、详解 mpstat(输出 CPU 相关信息)
mpstat 主要能看什么性能指标
-
每个 CPU 的不同类型 CPU 使用率、不同软中断类型次数统计、总中断次数
-
上述所有 CPU 的平均数据
语法格式
mpstat [ -A ] [ -n ] [ -u ] [ -V ] [ -I { keyword [,...] | ALL } ] [ -N { node_list | ALL } ] [ -o JSON] [ -P { cpu_list | ON | ALL } ] [ interval [ count ] ]
-
interval :间隔多久统计一次数据,可选
-
count:统计一次,可选
-
注意:若只传了 interval ,则统计次数是无限次,结束统计后会打印本次所有数据的平均值
字段说明
命令行参数
-P { cpu_list | ON | ALL }
作用
-
指定要报告其统计信息的 CPU
-
cpu_list:是用 , 分隔的值或值范围的列表(例如 0,2,4-7,0-1 )
-
ON:将为每个联机 CPU 报告统计信息
-
ALL:将为所有 CPU 报告统计信息
cpu_list 的栗子
只指定 CPU1
mpstat -P 1 1 2
ON 的栗子
mpstat -P ON 1 2
ALL 的栗子
mpstat -P ALL 1 2
重点
-
0 是第一个 CPU
-
all 是所有处理器之间的全局平均值
-I { keyword [,...] | ALL }
作用
-
输出中断统计信息
-
keyword 可以输入:CPU、SCPU、SUM、ALL
-
CPU:显示每秒中断数量,从 /proc/interrupts 读取数据
-
SCPU:显示每秒软中断数量,从 /proc/softirqs 读取数据
-
SUM:显示每个处理器的中断总数
-
ALL:输出上面三个关键字的所有内容
SCPU 的栗子
mpstat -I SCPU 1 2 -P ALL
SUM 的栗子
显示所有 CPU 平均中断次数
mpstat -I SUM 1 2
显示每个 CPU 的中断次数、所有 CPU 平均中断次数
mpstat -I SUM 1 2 -P ALL
4、详解 iostat(报告 CPU 信息和 I/O 读写信息)
iostat 主要能看什么性能指标
-
系统 CPU 使用率
-
设备的磁盘使用情况
语法格式
iostat [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [-j { ID | LABEL | PATH | UUID | ... } ] [ -o JSON ] [ [ -H ] -g group_name ] [ --human ] [-p [ device [,...] | ALL ] ] [ device [...] | ALL ] [ interval [ count ] ]
分为两个部分:系统 CPU 信息,设备的 I/O 读写信息
系统 CPU 信息字段说明
设备的 I/O 读写信息字段说明
命令行参数
具体的栗子
1.只显示系统 CPU 信息,并伴随着时间戳
iostat -t -c
2.只显示指定磁盘的统计信息
iostat -d sda
3.显示指定磁盘和他所有分区的信息,并友好显示
iostat -p sda -h
4.显示整合所有设备的磁盘信息
iostat -g all_device
5.整合所有设备的磁盘信息,并只显示总的数据
iostat -g all_device -h
6.忽略没有活动的设备的统计信息
iostat -z 1 2
可以发现,第一次输出的时候没有活动的设备还是会打印出来,怎么解决?(下面方法)
7.忽略没有活动的设备的统计信息和第一次统计的信息
iostat -z -y 1 2
8.显示更详细的统计信息
iostat -x -d 1 2 -y -z
字段说明
重点
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈