性能监测相关命令
mpstat
功能:
显示CPU的状态信息
这些信息存放在/proc/stat文件中。
在多CPUs系统里,
其不但能查看所有CPU的平均状况信息,
而且能够查看特定CPU的信息。
输入语法:
mpstat(选项)(参数)
选项
-A : 此选项等效于# mpstat -I ALL -u -P ALL
-I {SUM | CPU | ALL} : 报告中断统计信息。 使用SUM关键字,mpstat命令报告每个处理器的中断总数。使用CPU关键字,显示CPU或CPU每秒接收的每个中断的数量。ALL关键字等效于指定上面的所有关键字,因此显示所有中断统计信息。
-P {cpu [,...] | ON | ALL} : 指示要报告统计信息的处理器编号。cpu是处理器号。注意,处理器0是第一个处理器。 ON关键字表示将为每个在线处理器报告统计信息,而ALL关键字指示要为所有处理器报告统计信息。
参数
间隔时间:每次报告的间隔时间(秒);
次数:显示报告的次数。
输出信息:
user 在internal时间段里,用户态的CPU时间(%),不包含 nice值为负 进程 (usr/total)*100
nice 在internal时间段里,nice值为负进程的CPU时间(%) (nice/total)*100
system 在internal时间段里,内核态的CPU时间(%) (system/total)*100
iowait 在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
irq 在internal时间段里,硬中断时间(%) (irq/total)*100
soft 在internal时间段里,软中断时间(%) (softirq/total)*100
idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%)(idle/total)*100
实例:
mpstat
显示开机到现在以来cpu的平均状态信息
Linux 4.15.0-88-generic (kyle) 2020年02月25日 _x86_64_ (4 CPU)
20时12分09秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
20时12分09秒 all 27.16 0.55 9.85 0.34 0.00 0.43 0.00 0.00 0.00 61.66
mpstat -P ALL 2 3
每隔2秒显示一次 所有cpu的状态信息
一共产生3个间隔的信息
最后给出这3次间隔的平均信息
kylechen@kyle:~$ mpstat -P ALL 2 3
Linux 4.15.0-88-generic (kyle) 2020年02月25日 _x86_64_ (4 CPU)
20时12分43秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
20时12分45秒 all 9.96 0.00 3.57 0.00 0.00 0.12 0.00 0.00 0.00 86.35
20时12分45秒 0 8.96 0.00 2.99 0.00 0.00 0.00 0.00 0.00 0.00 88.06
20时12分45秒 1 8.87 0.00 3.45 0.49 0.00 0.49 0.00 0.00 0.00 86.70
20时12分45秒 2 9.76 0.00 2.44 0.00 0.00 0.00 0.00 0.00 0.00 87.80
20时12分45秒 3 12.32 0.00 4.43 0.00 0.00 0.00 0.00 0.00 0.00 83.25
20时12分45秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
20时12分47秒 all 13.43 0.00 4.68 0.00 0.00 0.12 0.00 0.00 0.00 81.77
20时12分47秒 0 16.59 0.00 5.69 0.00 0.00 0.47 0.00 0.00 0.00 77.25
20时12分47秒 1 12.08 0.00 3.86 0.00 0.00 0.00 0.00 0.00 0.00 84.06
20时12分47秒 2 12.80 0.00 4.74 0.00 0.00 0.00 0.00 0.00 0.00 82.46
20时12分47秒 3 12.44 0.00 5.26 0.00 0.00 0.00 0.00 0.00 0.00 82.30
20时12分47秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
20时12分49秒 all 8.44 0.00 2.02 0.00 0.00 0.13 0.00 0.00 0.00 89.42
20时12分49秒 0 7.69 0.00 1.54 0.00 0.00 0.51 0.00 0.00 0.00 90.26
20时12分49秒 1 6.47 0.00 2.99 0.00 0.00 0.50 0.00 0.00 0.00 90.05
20时12分49秒 2 10.66 0.00 1.02 0.00 0.00 0.00 0.00 0.00 0.00 88.32
20时12分49秒 3 8.46 0.00 2.49 0.00 0.00 0.00 0.00 0.00 0.00 89.05
平均时间: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
平均时间: all 10.65 0.00 3.44 0.00 0.00 0.12 0.00 0.00 0.00 85.78
平均时间: 0 11.20 0.00 3.46 0.00 0.00 0.33 0.00 0.00 0.00 85.01
平均时间: 1 9.17 0.00 3.44 0.16 0.00 0.33 0.00 0.00 0.00 86.91
平均时间: 2 11.09 0.00 2.77 0.00 0.00 0.00 0.00 0.00 0.00 86.13
平均时间: 3 11.09 0.00 4.08 0.00 0.00 0.00 0.00 0.00 0.00 84.83
mpstat -P ALL -I SUM
查看cpu中断的统计(各个cpu分开显示)
inux 4.15.0-88-generic (kyle) 2020年02月25日 _x86_64_ (4 CPU)
20时13分24秒 CPU intr/s
20时13分24秒 all 2057.27
20时13分24秒 0 473.14
20时13分24秒 1 591.17
20时13分24秒 2 687.38
20时13分24秒 3 493.70
mpstat -I SUM
查看cpu中断的统计(各个cpu合并显示)
kylechen@kyle:~$ mpstat -I SUM
Linux 4.15.0-88-generic (kyle) 2020年02月25日 _x86_64_ (4 CPU)
20时13分47秒 CPU intr/s
20时13分47秒 all 2036.32
free
功能
free指令会显示内存的使用情况,
包括实体内存,
虚拟的交换文件内存,
共享内存区段,
以及系统核心使用的缓冲区等。
输入语法
free [-bkmotV][-s <间隔秒数>]
参数说明:
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位如下:
B = bytes
K = kilos
M = megas
G = gigas
T = teras
-t 显示内存总和列。
-V 显示版本信息。
-o 不显示缓冲区调节列。
-s<间隔秒数>持续观察内存使用状况。
输出信息
total 列显示系统总的可用物理内存和交换空间大小。
used 列显示已经被使用的物理内存和交换空间。
free 列显示还有多少物理内存和交换空间可用使用。
shared 列显示被共享使用的物理内存大小。(进程间的共享内存)
buff/cache 列显示被 磁盘缓存 使用的物理内存大小。(buffer表示写缓冲 cache表示读缓冲)
available 列显示还可以被应用程序使用的物理内存大小
注意点
1.当应用程序需要内存时,如果没有足够的 free 内存可以用
,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请
求。所以从应用程序的角度来说,available = free + buffer + cache。
请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差。
2.swap space 是磁盘上的一块区域,可以是一个分区,也可以是一个文件
。所以具体的实现可以是 swap 分区也可以是 swap 文件
。当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,
这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时
,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。
交换空间可以在一定程度上缓解内存不足的情况,
但是它需要读写磁盘数据,所以性能不是很高。
实例
free 不指定单位显示内存使用情况
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 3920116 2680416 179976 596300 1059724 408108
交换: 999420 519916 479504
free -h以合适的单位显示内存使用情况
kylechen@kyle:~$ free -h
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 3.7G 2.6G 178M 573M 1.0G 401M
交换: 975M 507M 468M
free -th以合适的单位显示内存使用情 况,同时显示总量列
kylechen@kyle:~$ free -th
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 3.7G 2.5G 200M 570M 1.0G 424M
交换: 975M 507M 468M
总量: 4.7G 3.0G 668M
free -h -s 1 以1秒为间隔显示内存使用情况
kylechen@kyle:~$ free -h -s 1
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 3.7G 2.5G 198M 569M 1.0G 421M
交换: 975M 507M 468M
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 3.7G 2.5G 196M 571M 1.0G 419M
交换: 975M 507M 468M
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 3.7G 2.5G 195M 571M 1.0G 419M
交换: 975M 507M 468M
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 3.7G 2.5G 196M 571M 1.0G 420M
交换: 975M 507M 468M
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 3.7G 2.5G 199M 568M 1.0G 423M
交换: 975M 507M 468M
top
功能
top是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。
它可以动态的查看系统当前正在运行的进程情况 , 内存使用情况, cpu使用情况
也就是说上面mpstate 和free能实现的功能 它都内在的包含了
输入语法
很简单 直接输入top
输出信息
任务: 298 total, 1 running, 246 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.7 us, 1.6 sy, 0.0 ni, 92.6 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3920116 total, 301948 free, 2514912 used, 1103256 buff/cache
KiB Swap: 999420 total, 480272 free, 519148 used. 618380 avail Mem
进程id USER PR NI VIRT RES SHR � %CPU %MEM TIME+ COMMAND
1590 kylechen 20 0 3974220 265424 72628 S 7.3 6.8 5:33.19 gnome-shell
1446 kylechen 20 0 521960 38412 19292 S 6.3 1.0 3:28.27 Xorg
3008 kylechen 20 0 780520 50972 32452 S 4.6 1.3 0:17.32 gnome-term+
2779 kylechen 20 0 1201196 318344 79024 S 1.3 8.1 11:48.81 chrome
1955 kylechen 20 0 1505112 399200 243564 S 1.0 10.2 5:32.38 chrome
1 root 20 0 225908 4064 1584 S 0.7 0.1 0:08.15 systemd
1036 gdm 20 0 3492528 89676 62056 S 0.7 2.3 0:11.70 gnome-shell
1993 kylechen 20 0 556488 55780 24440 S 0.7 1.4 0:34.27 chrome
8 root 20 0 0 0 0 I 0.3 0.0 0:08.76 rcu_sched
983 mysql 20 0 1358648 0 0 S 0.3 0.0 0:03.85 mysqld
1571 kylechen 20 0 220792 156 0 S 0.3 0.0 0:03.21 at-spi2-re+
2192 kylechen 20 0 486420 5828 0 S 0.3 0.1 0:01.88 sogou-qimp+
5330 kylechen 20 0 2621992 450080 80948 S 0.3 11.5 1:13.24 XMind
5708 root 20 0 0 0 0 I 0.3 0.0 0:01.65 kworker/u8+
6974 kylechen 20 0 880400 185648 107616 S 0.3 4.7 0:45.80 chrome
7245 root 20 0 0 0 0 I 0.3 0.0 0:00.22 kworker/2:0
7760 kylechen 20 0 51360 4004 3332 R 0.3 0.1 0:00.19 top
输出信息如上所示 一大坨 很繁琐 咱们一行一行来分析
第一行表示 当前的进程状态 总共有298个进程 1个处理runing 246个处于sleeping 0个处于stopped状态
任务: 298 total, 1 running, 246 sleeping, 0 stopped
第二行表示 当前的cpu状态 这里显示的状态参数其实和mpstat那里说的是一样的 具体可以看上面的mpstat命令讲解
%Cpu(s): 5.7 us, 1.6 sy, 0.0 ni, 92.6 id, 0.1 wa, 0.0 hi,
**第三四行表示 **当前的内存状态 这里显示的状态参数其实和free那里说的是一样的 具体可以看上面的free命令讲解
KiB Mem : 3920116 total, 301948 free, 2514912 used, 1103256 buff/cache
KiB Swap: 999420 total, 480272 free, 519148 used. 6183800.1 wa, 0.0 hi,
后面几行其实 表示的就是每个进程具体占用的系统资源 会随着时间动态变化
PID
进程ID,进程的唯一标识符
USER
进程所有者的实际用户名。
PR
进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。
NI
进程的nice值(优先级)。越小的值意味着越高的优先级。
VIRT
进程使用的虚拟内存。
RES
驻留内存大小。驻留内存是任务使用的非交换物理内存大小。
SHR
SHR是进程使用的共享内存。
S
这个是进程的状态。它有以下不同的值:
D – 不可中断的睡眠态。
R – 运行态
S – 睡眠态
T – 被跟踪或已停止
Z – 僵尸态
I - 空闲状态(idle)
%CPU
自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM
进程使用的可用物理内存百分比。
TIME+
任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
COMMAND
运行进程所使用的命令。
还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组和组ID和其他更多的信息。
进程id USER PR NI VIRT RES SHR � %CPU %MEM TIME+ COMMAND
1590 kylechen 20 0 3974220 265424 72628 S 7.3 6.8 5:33.19 gnome-shell
1446 kylechen 20 0 521960 38412 19292 S 6.3 1.0 3:28.27 Xorg
3008 kylechen 20 0 780520 50972 32452 S 4.6 1.3 0:17.32 gnome-term+
2779 kylechen 20 0 1201196 318344 79024 S 1.3 8.1 11:48.81 chrome
.......
实例
实例1:top
top - 21:25:55 up 1:27, 1 user, load average: 1.51, 1.87, 1.49
任务: 305 total, 2 running, 250 sleeping, 0 stopped, 0 zombie
%Cpu(s): 22.7 us, 1.8 sy, 0.0 ni, 75.1 id, 0.1 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 3920116 total, 121880 free, 2859016 used, 939220 buff/cache
KiB Swap: 999420 total, 333328 free, 666092 used. 182088 avail Mem
PID USER PR NI VIRT RES SHR � %CPU %MEM TIME+ COMMAND
2779 kylechen 20 0 1191.7m 314.5m 59.2m S 17.1 8.2 20:45.14 chrome
1590 kylechen 20 0 3881.1m 242.1m 70.3m R 4.8 6.3 7:19.67 gnome-shell
1446 kylechen 20 0 444.6m 31.1m 11.8m S 1.3 0.8 4:42.48 Xorg
8711 kylechen 20 0 622.0m 17.4m 5.6m S 0.7 0.5 0:02.43 gnome-termi+
1955 kylechen 20 0 1458.6m 348.2m 189.5m S 0.5 9.1 7:31.10 chrome
1989 kylechen 20 0 653.0m 112.1m 47.2m S 0.5 2.9 7:06.33 chrome
8736 kylechen 20 0 50.2m 1.5m 0.8m R 0.2 0.0 0:05.51 top
1036 gdm 20 0 3410.7m 82.2m 55.3m S 0.1 2.1 0:15.10 gnome-shell
1484 kylechen 20 0 442.8m 48.0m 8.9m S 0.1 1.3 0:40.19 fcitx
1993 kylechen 20 0 551.4m 48.9m 17.8m S 0.1 1.3 0:45.63 chrome
3299 kylechen 20 0 633.0m 20.9m 5.1m S 0.1 0.5 0:17.90 chrome
1 root 20 0 220.6m 3.0m 0.6m S 0.0 0.1 0:10.02 systemd
2 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.00 kthreadd
4 root 0 -20 0.0m 0.0m 0.0m I 0.0 0.0 0:00.00 kworker/0:0H
6 root 0 -20 0.0m 0.0m 0.0m I 0.0 0.0 0:00.00 mm_percpu_wq
7 root 20 0 0.0m 0.0m 0.0m S 0.0 0.0 0:00.22 ksoftirqd/0
8 root 20 0 0.0m 0.0m 0.0m I 0.0 0.0 0:11.86 rcu_sched
实例2: 交互式命令
top是一个交互式的命令
所以用top调出动态显示的进程状态以后
在界面上继续用键盘输入指令
会继续在界面上执行对应的操作
交互命令1: 回车/空格
top命令默认在一个特定间隔(3秒)后刷新显示。
要手动刷新,用户可以输入回车或者空格。
交互命令2: B
一些重要信息会以加粗字体显示。
这个命令可以切换粗体显示。
交互命令3: d 或s
当按下’d’或’s’时,你
将被提示输入一个值(以秒为单位),
它会以设置的值作为刷新间隔。
如果你这里输入了1,top将会每秒刷新。
交互命令4 :‘R’
切换反向/常规排序。
交互命令5 :‘V’
切换树视图。
交互命令6: ‘k’
top命令中最重要的一个命令之一。
用于发送信号给任务(通常是结束任务)。
交互命令7: ‘e’
切换显示的单位
依次以k ->m->g->t->p单位选择