vmstat 命令
2018-01-17 13:42
225 查看
概述
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、IO、系统、CPU活动进行监控。vmstat 命令
-V:显示vmstat版本信息。
-n:只在开始时显示一次各字段名称。
-a:显示活跃和非活跃内存
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-s:显示内存相关统计信息及多种系统活动数量。
-m:显示slabinfo
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-f:显示从系统启动至今的fork数量 。
delay:刷新时间间隔。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
vmstat 命令说明
该命令默认显示监控5部分:procs、memory、swap、io、system、cpu信息。具体列信息说明如下:
Procs(进程)
r: 等待运行的进程数b: 处在非中断睡眠状态的进程数
Memory(内存) 单位:KB
swpd: 虚拟内存使用大小free: 空闲的内存
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小
Swap (单位:KB)
si: 从交换区写到内存的大小so: 每秒写入交换区的内存大小
IO (单位:块/秒)
bi: 每秒读取的块数bo: 每秒写入的块数
System (系统)
in: 每秒中断数,包括时钟中断。cs: 每秒上下文切换数。
CPU(以百分比表示):
us: 用户进程执行时间(user time)sy: 系统进程执行时间(system time)
id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。
wa: 等待IO时间
使用示例
1. 不使用参数如果使用vmstat命令不使用参数,那么只显示一条监控信息
2. 间隔1秒
如果只使用一个间隔时间参数,那么,vmstat会每秒钟打印一条监控信息,直到手动关闭监控程序为止。
2. 每隔1秒打印一条,总共打印5条
vmstat 命令实战
通过运行下面程序,使用vmstat进行监控public class VMStat { public static void main(String[] args) { String type = "0"; if (args.length>0) { type = args[0]; } test(type); } public static void test(String type) { if ("1".equals(type)) { new Thread(new ThreadSwitchTask()).start(); new Thread(new ThreadSwitchTask()).start(); } else if ("2".equals(type)) { new Thread(new IOTask()).start(); } else if ("3".equals(type)) { new Thread(new IOTask()).start(); } else { new Thread(new ThreadSwitchTask()).start(); new Thread(new ThreadSwitchTask()).start(); new Thread(new IOTask()).start(); new Thread(new BusyCPUTask()).start();; } } public static class ThreadSwitchTask implements Runnable { @Override public void run() { while (true) { try { TimeUnit.MILLISECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } Thread.yield(); } } } public static class IOTask implements Runnable { @Override public void run() { while (true) { try (FileOutputStream fos = new FileOutputStream(new File("file.txt"))) { for (int i = 0; i < Integer.MAX_VALUE; i++) { fos.write(i); } } catch (Exception e) { e.printStackTrace(); } try (FileInputStream fos = new FileInputStream(new File("file.txt"))) { while (fos.read() != -1); TimeUnit.SECONDS.sleep(2); } catch (Exception e) { e.printStackTrace(); } } } } public static class BusyCPUTask implements Runnable{ @Override public void run() { while(true){ double d = new Random().nextDouble() * new Random().nextDouble(); } } } }
type=“1”;测试线程上下文切换。
type=“2”;测试IO读写
type=“3”;测试CPU运算能力
type=“1”
当执行 ThreadSwitchTask 类时,发现线程上下文切换明显增加。
type=“2”
当执行IOTask类时,可以看出像磁盘中写入了2W多个磁盘块。
发现读的时候没有从磁盘中读取,是因为该文件在内存也存在一份,导致直接从内存中读取。
type=“3”
当执行BusyCPUTask类的时候,发现id空闲的cpu变成了50%了,因为我电脑是是双核CPU。
想了解更多精彩内容请关注我的公众号
本人简书blog地址:http://www.jianshu.com/u/1f0067e24ff8
点击这里快速进入简书
GIT地址:http://git.oschina.net/brucekankan/
点击这里快速进入GIT
相关文章推荐
- Linux系统日常管理1 w,vmstat,top,sar,free,ps监控命令
- vmstat命令
- (转)每天一个linux命令(46):vmstat命令
- Linux vmstat命令实战详解
- Linux vmstat命令实战详解
- Unix vmstat 命令
- Linux---vmstat命令
- vmstat命令
- Linux vmstat命令实战详解
- linux下基本性能监控命令和性能分析(vmstat)
- 使用w查看系统负载,vmstat命令,top命令,sar命令。nload命令
- Linux vmstat命令实战详解
- Linux操作系统-命令-vmstat
- Linux操作系统Vmstat命令列出的属性详解
- Unix vmstat 命令
- vmstat命令实战详解
- Linux vmstat命令实战详解
- 每天一个linux命令(37):vmstat命令
- vmstat命令动态监控系统的状态
- 016-Vmstat命令