Linux工具之vmstat
vmstat (virtual memory statistics,虚拟内存统计)的缩写。可以对操作系统的虚拟内存、进程、CPU活动进行监控。
1.命令格式
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]
2、命令功能
用来显示虚拟内存的信息
3.命令参数
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-V:显示vmstat版本信息。
4、使用实例
实例1:显示虚拟内存使用情况
[root@natasha etc]# vmstat 5 6 【表示在5秒时间内进行6次采样。】
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 874200 110868 817340 0 0 27 24 52 46 0 0 99 1 0
0 0 0 874448 110892 817344 0 0 0 17 49 39 0 0 100 0 0
0 0 0 874316 110900 817344 0 0 0 3 14 17 0 0 100 0 0
0 0 0 874316 110900 817344 0 0 0 0 14 15 0 0 100 0 0
0 0 0 874316 110900 817344 0 0 0 0 14 15 0 0 100 0 0
0 0 0 874316 110900 817344 0 0 0 6 15 15 0 0 100 0 0
字段说明:
Procs(进程):
r: 运行队列中进程数量
b: 等待IO的进程数量
Memory(内存):
swpd: 使用虚拟内存大小
free: 可用内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小
Swap:
si: 每秒从交换区写到内存的大小
so: 每秒写入交换区的内存大小
IO:(现在的Linux版本块的大小为1024bytes)
bi: 每秒读取的块数
bo: 每秒写入的块数
系统:
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
CPU(以百分比表示):
us: 用户进程执行时间(user time)
sy: 系统进程执行时间(system time)
id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。
wa: 等待IO时间
备注: 如 果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。如果pi,po 长期不等于0,表示内存不足。如果disk 经常不等于0, 且 在 b中的队列 大于3, 表示 io性能不好。Linux在具有高稳定性、可靠性的同时,具有很好的可伸缩性和扩展性,能够针对不同的应用和硬件环境调整,优化出满足当前应用需要的最佳性能。因此企业在维护Linux系统、进行系统调优时,了解系统性能分析工具是至关重要的。
命令:
vmstat 5 5
表示在5秒时间内进行5次采样。将得到一个数据汇总能够反映真正的系统情况。
实例2:显示活跃和非活跃内存
[root@natasha etc]# vmstat -a 2 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
0 0 0 874324 789836 152472 0 0 27 23 51 45 0 0 99 1 0
0 0 0 874324 789836 152440 0 0 0 0 23 15 0 0 100 0 0
0 0 0 874316 789836 152496 0 0 0 0 16 20 0 0 100 0 0
0 0 0 874316 789836 152496 0 0 0 0 13 14 0 0 100 0 0
0 0 0 874316 789836 152496 0 0 0 0 15 18 0 0 100 0 0
实例3:查看系统已经fork了多少次
[root@natasha etc]# vmstat -f
57772 forks
说明:
这个数据是从/proc/stat中的processes字段里取得的
实例4:查看内存使用的详细信息
[root@natasha etc]# vmstat -s
1938628 total memory
1064428 used memory
152472 active memory
789836 inactive memory
874200 free memory
110948 buffer memory
817344 swap cache
4161528 total swap
0 used swap
4161528 free swap
363 non-nice user cpu ticks
3431 nice user cpu ticks
12176 system cpu ticks
3264498 idle cpu ticks
28344 IO-wait cpu ticks
6 IRQ cpu ticks
67 softirq cpu ticks
0 stolen cpu ticks
872232 pages paged in
761984 pages paged out
0 pages swapped in
0 pages swapped out
1679490 interrupts
1478922 CPU context switches
1448312772 boot time
57774 forks
说明:
这些信息的分别来自于/proc/meminfo,/proc/stat和/proc/vmstat。
实例5:
查看磁盘的读/写
[root@natasha etc]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
ram0 0 0 0 0 0 0 0 0 0 0
ram1 0 0 0 0 0 0 0 0 0 0
ram2 0 0 0 0 0 0 0 0 0 0
ram3 0 0 0 0 0 0 0 0 0 0
ram4 0 0 0 0 0 0 0 0 0 0
ram5 0 0 0 0 0 0 0 0 0 0
ram6 0 0 0 0 0 0 0 0 0 0
ram7 0 0 0 0 0 0 0 0 0 0
ram8 0 0 0 0 0 0 0 0 0 0
ram9 0 0 0 0 0 0 0 0 0 0
ram10 0 0 0 0 0 0 0 0 0 0
ram11 0 0 0 0 0 0 0 0 0 0
ram12 0 0 0 0 0 0 0 0 0 0
ram13 0 0 0 0 0 0 0 0 0 0
ram14 0 0 0 0 0 0 0 0 0 0
ram15 0 0 0 0 0 0 0 0 0 0
loop0 0 0 0 0 0 0 0 0 0 0
loop1 0 0 0 0 0 0 0 0 0 0
loop2 0 0 0 0 0 0 0 0 0 0
loop3 0 0 0 0 0 0 0 0 0 0
loop4 0 0 0 0 0 0 0 0 0 0
loop5 0 0 0 0 0 0 0 0 0 0
loop6 0 0 0 0 0 0 0 0 0 0
loop7 0 0 0 0 0 0 0 0 0 0
sda 46034 10817 1740264 445160 8384 182115 1524000 988214 0 451
sr0 45 0 360 3 0 0 0 0 0 0
dm-0 55308 0 1711602 733301 190477 0 1523816 19493891 0 451
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
dm-1 322 0 2576 439 0 0 0 0 0 0
dm-2 251 0 2002 338 7 0 56 0 0 0
说明:
这些信息主要来自于/proc/diskstats.
merged:表示一次来自于合并的写/读请求,一般系统会把多个连接/邻近的读/写请求合并到一起来操作.
实例6:查看/dev/sda1分区的读/写
[root@natasha etc]# vmstat -p /dev/sda1
sda1 reads read sectors writes requested writes
681 22108 19 12
说明:
这些信息主要来自于/proc/diskstats。
reads:来自于这个分区的读的次数。
read sectors:来自于这个分区的读扇区的次数。
writes:来自于这个分区的写的次数。
requested writes:来自于这个分区的写请求次数。
苦难并非乐事,但能者等闲视之,人生本来就是苦中作乐,切莫长吁短叹,虚度年华。