11.5 vmstat:虚拟内存统计
vmstat
vmstat是Virtual Memory Statistics(虚拟内存统计)的缩写,利用vmstat命令可以对操作系统的内存信息、进程状态和CPU活动等进行监视。但是只能对系统的整体情况进行统计,无法对某个进程进行深入分析。
【语法格式】
vmstat foption [delay fcountl]
vmstat [选项] [时间间隔(次数]
1)在vmstat命令及后面的选项里,每个元素之间都至少要有一个空格。
2)delay表示两次输出之间的间隔时间。
3)count表示按照delay指定的时间间隔统计的次数。
【选项说明】
-a 显示活跃和非活跃内存
-f 显示从系统启动至今的fork进程数量
-m 显示slab信息
-n 只在开始时显示一次各字段名称
-s 显示内存相关统计信息及多种系统活动数量深
-d 显示磁盘相关统计信息
-p 显示指定磁盘分区统计信息
-S 使用指定单位显示。参数有k、K、m、M,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024byte)
-t 统计信息带上时间戳
[root@lewen ~]# vmstat #<行如果省略“间隔时间”和“次数”的参数,则仅显示一次报告后 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 2792792 2108 790956 0 0 15 20 61 146 0 0 99 0 0 以下是命令结果的详细说明。 第1列:procs。 r列表示运行和等待CPU时间片的进程数。 b列表示正在等待资源的进程数。 第2列:memory。 swpd列表示使用虚拟内存的大小。 free列表示当前空闲的物理内存数量。 buff列表示buffers的内存数量。 cache列表示cache的内存数量。 第3列:swap。 si(swap in)列表示由磁盘调入内存,也就是内存进入内存交换区的数量。 so(swap out)列表示由内存调入磁盘,也就是内存交换区进入内存的数量。 第4列:I/O项显示磁盘读写状况。 bi列表示从块设备读入数据的总量(即读磁盘)(块/s)。 bo列表示写入块设备的数据总量(即写磁盘)(块/s)。 第5列:system显示采集间隔内发生的中断数。 in列表示在某一时间间隔中观测到的每秒设备中断数。 cs列表示每秒产生的上下文切换次数。 第6列:CPU项显示了CPU的使用状态。 us列显示了用户进程消耗的CPU时间百分比。 sy列显示了系统(内核)进程消耗的CPU时间百分比。 id列显示了CPU处在空闲状态的时间百分比。 wa列显示了I/0等待所占用的CPU时间百分比。 st列显示了虚拟机占用的CPU时间的百分比。
显示活跃和非活跃内存
[root@lewen ~]# vmstat -aS M 2 3 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free inact active si so bi bo in cs us sy id wa st 2 0 0 2727 290 657 0 0 15 20 61 146 0 0 99 0 0 0 0 0 2727 290 657 0 0 0 0 53 118 0 0 100 0 0 0 0 0 2727 290 657 0 0 0 0 51 112 1 1 99 0 0 使用-a选项显示活跃和非活跃内存时,所显示的内容除去增加了inact和active之外,其他显示内容与范例11-12相同。 memory列增加了inact和active两列,其说明具体如下。 inact:非活跃的内存大小(当使用-a选项时显示)。 active:活跃的内存大小(当使用-a选项时显示)。
查看内存使用的详细信息
[root@lewen ~]# vmstat -s 4026348 K total memory 440568 K used memory 673792 K active memory 297756 K inactive memory 2792680 K free memory 2108 K buffer memory 790992 K swap cache 这些信息分别来自于/proc/meminfo、/proc/stat和/proc/vmstat。
查看磁盘的读/写
[root@lewen ~]# vmstat -d disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec sda 8333 8 673201 140450 21689 1376 907042 61431 0 73 sr0 18 0 2056 678 0 0 0 0 0 0 dm-0 6339 0 648333 139872 23055 0 902906 75051 0 73 dm-1 90 0 4920 7 0 0 0 0 0 0 这些信息主要来自于/proc/diskstats。其中的merged表示一次来自于合并的写/读请求,系统一般会把多个连接/邻近的读/写请求合并到一起来操作。
查看/dev/sda1磁盘的读写统计信息
[root@lewen ~]# vmstat -p /dev/sda1 sda1 reads read sectors writes requested writes 1799 12364 10 4136 这些信息主要来自于/proc/diskstats。各列的说明具体如下。 reads:来自于该分区的读的次数。 read sectors:来自于该分区的读扇区的次数。 writes:来自于该分区的写的次数。 requested writes:来自于该分区的写请求次数。