博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux vmstat详解
阅读量:5916 次
发布时间:2019-06-19

本文共 2077 字,大约阅读时间需要 6 分钟。

 vmstat - Report virtual memory statistics,从名字上来看这是一个虚拟内存统计报告工具,这个工具在Linux/unix中都是很常用的命令,相比top、ps等命令优势在于能输出整个Linux/Unix系统的资源使用情况,可以通过此命令发现系统的性能瓶颈。

 虚拟内存的定义:在系统中运行的每个进程都需要使用内存将数据给CPU处理,但并不是进程的每时每刻都需要用到分配的内存空间。在Linux内存管理中,主要是通过“调页(paging)"和"交换(swapping)"来完成内存调度,调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。

[root@bogon ~]# vmstat 1 3procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 3  0      0 130812   1008 201816    0    0    57   133   49   87  0  1 99  0  0 0  0      0 130424   1008 201836    0    0     0     0  143  258  4  8 88  0  0 0  0      0 130424   1008 201836    0    0     0     0   29   43  0  0 100  0  0命令中1表示每过1s进行一次采样,单位为秒。命令中3表示采集3次结束进程。**procs**    r   runing,表示正在运行的进程数量    b   表示正在等待io而睡眠的进程数量,此值与wa的值过大则表示磁盘太慢已成系统性能瓶颈** memory **    swpd    表示已使用虚拟内存(交换分区)的大小        free    表示剩余的内存空间大小,这并不是真正的剩余内存大小,在Linux内存管理中,为了提供更高效的性能,会将一部分剩余的内存作为缓存最常用的文件使用,当进程需要时再释放出来,所以真正的内存剩余空间还需要加上这部分空间        buff    这是内存中的一块区域,当CPU需要写入磁盘时,由于磁盘数度比较慢,所以将数据先写入内存中的buffer,然后CPU再执行其他任务,之后再定期将buffer中的数据写入磁盘。        cache    这也是内存中的一块区域,当CPU需要从磁盘中读取数据时,由于磁盘速度比较慢,所以将数据先写入到cache中,当进程用到该数据时CPU直接从cache中读取,加快访问速度。        buff与cache都是内存中的一块区域,都可以称之为缓存**swap**      si    swap input,每秒从交换分区写入到内存的大小,由磁盘写入内存        so   swap output,每秒从内存写入到交换分区的大小,由内存写入磁盘io    bi   block input,块设备(一般是磁盘) 写入的大小        bo  block output,块设备输出的大小**system**        in 每秒CPU的中断次数,包括时间中断        cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。        sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。        id  空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。        wt 等待IO CPU时间。

转载于:https://blog.51cto.com/jying/2053736

你可能感兴趣的文章
golang使用protobuf
查看>>
少年,你想在vue的世界里掌控雷电吗,没错,看这个分享就对了!
查看>>
安装Yaconf
查看>>
Agora iOS SDK-快速入门
查看>>
响应式开发网站
查看>>
细说JS数组
查看>>
Adaptive Execution让Spark SQL更高效更好用
查看>>
W3C官方推荐使用新发布的HTML5.2
查看>>
如何应对大促?看京东核心中间件团队的高可用实践指南
查看>>
C# 7.1、7.2特性追踪
查看>>
苏宁的Node.js实践:不低于Java的渲染性能、安全稳定迭代快
查看>>
Jenkins将致力于提升稳定性、易用性和云原生兼容性
查看>>
从零开始用Python实现k近邻算法(附代码、数据集)
查看>>
Spring注解@Primary的意思
查看>>
行业看点 | 军事专家:量子技术将引起战争基因突变,颠覆未来战争形态
查看>>
Intel和ARM中国市场的芯片之战一触即发
查看>>
青云QingCloud上海1区正式商用:四大升级 连接未来
查看>>
抓住售后服务 抓住新的收入流
查看>>
亲们,不用再创建变更了
查看>>
2021年3GPP物联网标准将占蜂窝物联网无线节点出货量一半以上
查看>>