linux命令--vmstat命令&iostat命令

柔情痞子 提交于 2019-12-07 12:04:58

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



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!