Linux vmstat

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:

xiaojia@xiaojia-Lenovo-G460:~$ vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1812428 111372 979624    0    0    51    31  211  849  6  3 90  1  0

2表示每个两秒采集一次服务器状态,1表示只采集一次。

实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如:

xiaojia@xiaojia-Lenovo-G460:~$ vmstat 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      0 1802348 111596 979808    0    0    50    31  211  848  6  3 90  1  0
 0  0      0 1802780 111604 979808    0    0     0     8 1174 2677  5  2 92  0  0
 1  0      0 1802480 111604 979808    0    0     0     0 1157 2553  5  2 93  0  0
 0  0      0 1802628 111612 979808    0    0     0    42 1127 2495  4  2 93  1  0
 0  0      0 1801968 111612 979808    0    0     0     0 1133 2496  5  2 93  0  0
 1  0      0 1802108 111612 979808    0    0     0     0 1142 2433  4  2 93  0  0

这表示vmstat每2秒采集数据,一直采集,直到我结束程序,这里采集了6次数据我就结束了程序。
标识符含义
procs
r运行队列长度,值是运行队列中轻量级进程的实际数量。注1
b阻塞的进程,值是等待IO的进程数量
memory
swpd虚拟内存已使用的大小。如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器
free空闲的物理内存的大小
buff用作缓冲的内存大小
cache用作缓存的内存大小
swap
si每秒从交换区写到内存的大小
so每秒写入交换区的内存大小。注2
io
bi每秒读取的块数
bo每秒写入的块数
system
in每秒中断数,包括时钟中断。
cs每秒上下文切换数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
cpu(%)
us用户进程执行时间(user time)
sy系统进程执行时间(system time)。注3
id空闲时间(包括IO等待时间),中央处理器的空闲时间
wa等待IO时间

1.系统运行队列长度等于虚拟处理器的个数时,用户不会明显感到性能下降。当运行队列的长度达到虚拟处理的4倍或更多时,系统响应就非常迟缓了。此处虚拟处理器的个数就是系统硬件线程的个数,也就是JAVA API中Runtime.availableProcessors()的返回值。

2.留意出现空闲内存少和页面频繁调度的情况,因为这可能表示着系统在进行页面交换。java垃圾回收器为了回收不可达的对象占用的空间,需要访问大量的内存。如果java堆的一部分被置换出去,就必须先置换进内存以便垃圾回收器扫描存活的对象,这会增加垃圾收集的持续时间。垃圾收集是一种Stop-The-World(时空停滞)操作,即停止正在运行的应用线程,如果此时系统正在进行页面交换,会引起JVM长时间停顿。如果发现垃圾收集时间变长,系统有可能正在页面交换。

3.原本用于执行操作系统内核调用的CPU周期也可以用来执行应用代码。所以理想情况下,应用达到最高性能和扩展性时,它的系统态CPU使用率为0。因此,提高应用性能和扩展性的一个目标是尽可能的降低系统态CPU使用率。

Windows性能监控中,可以按需添加计数器实现Linux vmstat命令同样的监控,当然你也可以使用Windows typeperf命令进行监控。

Windows中CPU调度程序运行队列的监控:
Windows中CPU调度程序运行队列的监控
:比例因子为10,因此上图实际的运行队列长度是0~10。上图红线为运行队列长度(System\Processor Queue Length)。

Windows内存利用率的监控:
Windows内存利用率的监控
:当可用内存变少,并用页面调度时,系统可能正在进行页面交换。上图绿线为每秒内存页面调度(Memory\Page/Second),红线为可用内存字节数(Memory\Available MBytes)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值