vmstat是Linux下的系统工具。通过vmstat,我们可以得到进程、内存、分页、IO、trap和CPU等信息。
vmstat用法:
vmstat [-a] [n] [delay [count]]
vmstat [-f] [-s] [-m]
vmstat [-S unit]
vmstat [-d]
vmstat [-D]
vmstat [-p disk partition]
vmstat [-V]
vmstat参数:
-a 显示活跃内存(active memory)和非活跃内存(inactive memory)。非活跃内存是指映射到进程空间,但是当前进程没有使用的内存。
-f 显示系统执行fork/vfork/clone的次数。这个值是系统创建的全部任务的数目。只显示一次。
-m 显示slabinfo。
-n 只显示一次字段头。
-s 以表格形式显示。只显示一次。
delay 两次输出之间间隔的秒数。
count 输出的次数。
-d 显示硬盘信息。只显示一次。
-D 显示硬盘统计信息。只显示一次。
-p partition 显示分区信息。
-S k/K/m/M 设置单位为1000/1024/1000000/1048576 bytes,默认为K。
-V 显示版本信息。
VM模式(默认)输出字段:
procs
r: 等待调度的进程数量(任务队列长度)。一个经验数值是CPU核数乘以4作为r的阈值。超过这个值,说明CPU资源紧张。
b: 处于非中断睡眠(阻塞)的进程数量。说明进程在等待I/O或者进行内存交换。
memory
swpd: 虚拟内存容量。相对swpd值,si/so两个值更重要。如果si/so都比较大,说明系统频繁使用内存交换区。如果si/so都为0,swpd值即使很大也不会影响系统性能。
free: 空闲内存容量。
buff: 用作缓冲区的内存容量。通常是对块设备的读写缓冲区。
cache: 用作缓存的内存容量。作为page cached的内存数量。一般是用作文件系统缓存。如果cache很大,而bi很小,说明文件系统效率较高。文件的读取都是在内存中完成。
inact: 非活跃内存容量。
active: 活跃内存容量。
swap
si: 每秒从硬盘交换到内存的数据容量。
so: 每秒从内存交换到硬盘的数据容量。如果si/so长期大于0,说明系统内存不足。
io
bi: 每秒从设备输入的块数量。 在Linux下,块的容量通常是1024字节。要查看块的容量,可以使用stat --file-system / 或者tune2fs -l /dev/sda1。
bo: 每秒向设备输出的块数量。
system
in: 每秒中断数,包括时钟中断(clock)。
cs: 每秒上下文切换数。
cpu
us: cpu执行非内核代码的时间,包括nice时间。
sy: cpu执行内核代码的时间。
id: cpu空闲时间。
wa: cpu等待设备IO操作的时间。
st: 操作系统在虚拟机中运行时,cpu丢失的时间。
硬盘模式(-d)输出字段:
reads
total: 读操作完成的总量。系统调用write返回并不意味着硬盘操作成功,参考sync和fsync。
merged: 合并读操作(一次硬盘I/O完成多次read)完成的总量。
sectors: 读取的扇区数。
ms: 读操作消耗的毫秒数。
writes
total: 写操作完成的总量。
merged: 实际完成的硬盘写操作数量。
secotrs: 写入扇区数量。
ms: 写操作消耗的毫秒数。
IO
cur: 正在进行的I/O。
sec: I/O操作消耗的秒数。
硬盘分区模式的字段
reads: 在分区上提交的全部读请求的数量。
read sectors: 分区上读取的扇区数量。
writes: 分区上提交的全部写请求的数量。
requested writes: 分区上全部写请求的数量。
vmstat不将自己作为一个running process统计。执行vmstat不需要额外的权限。
参考:
vmstat手册
/proc/meminfo
/proc/stat
/proc/*/stat
http://serverfault.com/questions/132088/what-can-cause-an-increase-in-inactive-memory-and-how-to-reclaim-it
http://serverfault.com/questions/29887/how-do-i-determine-the-block-size-of-an-ext3-partition-on-linux
http://serverfault.com/questions/442336/file-with-information-about-filesystem-block-size-in-linux
http://zhengdl126.iteye.com/blog/804567
vmstat用法:
vmstat [-a] [n] [delay [count]]
vmstat [-f] [-s] [-m]
vmstat [-S unit]
vmstat [-d]
vmstat [-D]
vmstat [-p disk partition]
vmstat [-V]
vmstat参数:
-a 显示活跃内存(active memory)和非活跃内存(inactive memory)。非活跃内存是指映射到进程空间,但是当前进程没有使用的内存。
-f 显示系统执行fork/vfork/clone的次数。这个值是系统创建的全部任务的数目。只显示一次。
-m 显示slabinfo。
-n 只显示一次字段头。
-s 以表格形式显示。只显示一次。
delay 两次输出之间间隔的秒数。
count 输出的次数。
-d 显示硬盘信息。只显示一次。
-D 显示硬盘统计信息。只显示一次。
-p partition 显示分区信息。
-S k/K/m/M 设置单位为1000/1024/1000000/1048576 bytes,默认为K。
-V 显示版本信息。
VM模式(默认)输出字段:
procs
r: 等待调度的进程数量(任务队列长度)。一个经验数值是CPU核数乘以4作为r的阈值。超过这个值,说明CPU资源紧张。
b: 处于非中断睡眠(阻塞)的进程数量。说明进程在等待I/O或者进行内存交换。
memory
swpd: 虚拟内存容量。相对swpd值,si/so两个值更重要。如果si/so都比较大,说明系统频繁使用内存交换区。如果si/so都为0,swpd值即使很大也不会影响系统性能。
free: 空闲内存容量。
buff: 用作缓冲区的内存容量。通常是对块设备的读写缓冲区。
cache: 用作缓存的内存容量。作为page cached的内存数量。一般是用作文件系统缓存。如果cache很大,而bi很小,说明文件系统效率较高。文件的读取都是在内存中完成。
inact: 非活跃内存容量。
active: 活跃内存容量。
swap
si: 每秒从硬盘交换到内存的数据容量。
so: 每秒从内存交换到硬盘的数据容量。如果si/so长期大于0,说明系统内存不足。
io
bi: 每秒从设备输入的块数量。 在Linux下,块的容量通常是1024字节。要查看块的容量,可以使用stat --file-system / 或者tune2fs -l /dev/sda1。
bo: 每秒向设备输出的块数量。
system
in: 每秒中断数,包括时钟中断(clock)。
cs: 每秒上下文切换数。
cpu
us: cpu执行非内核代码的时间,包括nice时间。
sy: cpu执行内核代码的时间。
id: cpu空闲时间。
wa: cpu等待设备IO操作的时间。
st: 操作系统在虚拟机中运行时,cpu丢失的时间。
硬盘模式(-d)输出字段:
reads
total: 读操作完成的总量。系统调用write返回并不意味着硬盘操作成功,参考sync和fsync。
merged: 合并读操作(一次硬盘I/O完成多次read)完成的总量。
sectors: 读取的扇区数。
ms: 读操作消耗的毫秒数。
writes
total: 写操作完成的总量。
merged: 实际完成的硬盘写操作数量。
secotrs: 写入扇区数量。
ms: 写操作消耗的毫秒数。
IO
cur: 正在进行的I/O。
sec: I/O操作消耗的秒数。
硬盘分区模式的字段
reads: 在分区上提交的全部读请求的数量。
read sectors: 分区上读取的扇区数量。
writes: 分区上提交的全部写请求的数量。
requested writes: 分区上全部写请求的数量。
vmstat不将自己作为一个running process统计。执行vmstat不需要额外的权限。
参考:
vmstat手册
/proc/meminfo
/proc/stat
/proc/*/stat
http://serverfault.com/questions/132088/what-can-cause-an-increase-in-inactive-memory-and-how-to-reclaim-it
http://serverfault.com/questions/29887/how-do-i-determine-the-block-size-of-an-ext3-partition-on-linux
http://serverfault.com/questions/442336/file-with-information-about-filesystem-block-size-in-linux
http://zhengdl126.iteye.com/blog/804567