vmstat是virtual memory statistics的缩写,可以对操作系统的虚拟内存,进程和CPU进行监控
物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。
例子1
vmstat 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 0 0 0 3029876 199616 690980 0 0 0 2 3 2 0 0 100 0 0 0 0 0 3029752 199616 690980 0 0 0 41 1009 39 0 0 100 0 0 0 0 0 3029752 199616 690980 0 0 0 3 1004 36 0 0 100 0 0 0 0 0 3029752 199616 690980 0 0 0 4 1004 36 0 0 100 0 0 0 0 0 3029752 199616 690980 0 0 0 6 1003 33 0 0 100 0 0
表示5秒钟进行6次采样,其中r表示运行中的进程数量,b表示等待IO的进程的数量,swap表示虚拟内存的大小,free表示可用内存大小,buffe表示用户缓冲的内存的大小,cache表示用于缓存的内存大小。si表示每秒从交换区到内存的大小,so表示每秒写入交换区的内存大小。bi表示每秒读取的块数,bo表示每秒写入的块数。in表示每秒中断数,cs表示每秒中上下文切换数,us表示用户执行进程的时间,sy表示系统进程执行的时间,id表示空闲时间的百分比,wa表示等待io的时间
例子2 -f表示系统到现在fork了多少次,是从process/stat中的process字段获取到的
vmstat -f
例子3 -s表示查看使用内存的详细信息,这些信息的分别来自于/proc/meminfo,/proc/stat和/proc/vmstat。
vmstat -s
例子4 -d 参数表示查看磁盘的读写,数据来自/proc/diskstats
vmstat -d
例子5 -p 磁盘分区表示查看磁盘分区统计信息
vmstat -p /dev/sda1
例子6 -m参数表示查看系统的slab信息,信息来自/proc/slabinfo
vmstat -m
slab:由于内核会有许多小对象,这些对象构造销毁十分频繁,比如i-node,dentry,这些对象如果每次构建的时候就向内存要一个页(4kb),而其实只有几个字节,这样就会非常浪费,为了解决这个问题,就引入了一种新的机制来处理在同一个页框中如何分配小存储区,而slab可以对小对象进行分配,这样就不用为每一个对象分配页框,从而节省了空间,内核对一些小对象创建析构很频繁,slab对这些小对象进行缓冲,可以重复利用,减少内存分配次数。
iostat是一个对磁盘进行监控的工具,可以查看cpu,网卡,tty设备,磁盘等设备的活动信息和负载信息
例子1
iostat Linux 2.6.18-128.el5 (CT1186) 2012年12月28日 avg-cpu: %user %nice %system %iowait %steal %idle 8.30 0.02 5.07 0.17 0.00 86.44 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 22.73 43.70 487.42 674035705 7517941952 sda1 0.00 0.00 0.00 2658 536 sda2 0.11 3.74 3.51 57721595 54202216 sda3 0.98 0.61 17.51 9454172 270023368 sda4 0.00 0.00 0.00 6 0 sda5 6.95 0.12 108.73 1924834 1677123536 sda6 2.20 0.18 31.22 2837260 481488056 sda7 12.48 39.04 326.45 602094508 5035104240
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。
rqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
r/s: 每秒完成的读 I/O 设备次数。即 rio/s
w/s: 每秒完成的写 I/O 设备次数。即 wio/s
rsec/s: 每秒读扇区数。即 rsect/s
wsec/s: 每秒写扇区数。即 wsect/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s: 每秒写K字节数。是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
avgqu-sz: 平均I/O队列长度。
await: 平均每次设备I/O操作的等待时间 (毫秒)。
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比
例子2 表示2秒钟刷新一次,且显示3次
iostat 2 3
例子3 -d 表示显示具体磁盘的信息
iostat -d sda1
例子4 -t表示显示tty和cpu的信息
iostat -t
例子5 显示tps和吞吐量信息
iostat -d -k 1 1
例子6 显示设备使用率和相应时间
iostat -d -x -k 1 1
例子7 -c 表示显示cpu信息
iostat -c 1 1
参考文档:
http://www.cnblogs.com/peida/archive/2012/12/25/2833108.html
http://www.cnblogs.com/peida/archive/2012/12/28/2837345.html
linux命令--vmstat命令&iostat命令