vmstat [-a] [-n] [delay [ count]]
vmstat [-f] [-s] [-m]
vmstat [-S unit]
vmstat [-d]
vmstat [-p disk partition]
vmstat [-V]
vmstat, Virtual Meomory Statistics(虚拟内存统计), 可对操作系统的虚拟内存、进程、CPU活动进行监视. 它是对系统的整体情况进行统计, 但不能针对某个进程进行深入分析.
[root@localhost ~]# vmstat
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 284 66240 165924 419584 0 0 0 5 2 1 0 0 100 0 0
#to output active/inactive memory info
[root@localhost ~]# vmstat -a
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 284 65620 86928 833976 0 0 0 5 3 1 0 0 100 0 0
#To run vmstat with 2 updates, five seconds apart
[root@localhost ~]# vmstat 5 2
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 284 65620 165924 419824 0 0 0 5 3 1 0 0 100 0 0
0 0 284 65620 165924 419828 0 0 0 7 1014 64 0 0 100 0 0
procs, 下面三种状态的进程数
memory, 虚拟内存和实存信息
swap, 显示磁盘与内存每秒的交换
io, 显示块设备每秒发送和收到的块数
system
CPU, CPU 故障时间的百分比, 在多处理器系统上, 这是全部处理器的平均值
disk, 显示每秒的磁盘操作, s 表示 scsi 盘, 0 表示盘号
pages, 每秒页面调度活动数量的信息(Solaris vmstat)
fault, 显示每秒的中断数(Solaris vmstat)
准测
表明磁盘io没有也许存在不合理的平衡, 或者对磁盘操作比较频繁
通过 vmstat 识别 CPU 瓶颈
r(运行队列)展示了正在执行和等待 CPU 资源的任务个数. 当这个值超过了 CPU 数目, 就会出现CPU瓶颈
获得 CPU 个数的命令(Linux):
[root@localhost ~]# cat /proc/cpuinfo | grep processor | wc -l
当 r 值超过了CPU个数, 就会出现CPU 瓶颈, 解决办法大体如下
通过 vmstat 识别 CPU 满负荷
vmstat 中 CPU 的度量是百分比. 当us+sy≈100时, 表示 CPU 正在接近满负荷工作. 但要注意的是, CPU 满负荷工作并不能说明什么, *nix 总是试图要 CPU 尽可能的繁忙, 使得任务的吞吐量最大化. 唯一能够确定 CPU 瓶颈的还是 r(运行队列) 的值.
通过 vmstat 识别 RAM 瓶颈
数据库服务器都只有有限的 RAM, 出现内存争用现象是常见问题
首先察看 RAM 的数量, 命令如下
[root@localhost ~]# free
total used free shared buffers cached
Mem: 1035292 969548 65744 0 165924 419720
-/+ buffers/cache: 383904 651388
Swap: 2096472 284 2096188
也可使用 top 等其他命令来显示RAM.
当内存的需求大于RAM的数量, 服务器启动虚拟内存机制, 通过虚拟内存, 可以将 RAM 段移到 SWAP DISK 的特殊磁盘段上, 这样会出现虚拟内存的页导出和页导入现象, 页导出并不能说明 RAM 瓶颈, 虚拟内存系统经常会对内存段进行页导出, 但页导入操作就表明了服务器需要更多的内存了, 页导入需要从 SWAP DISK 上将内存段复制回 RAM, 导致服务器速度变慢.
解决办法有如下几种