Vmstat 可以看到整个机器的CPU、内存、IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率。
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0
R 表示运行队列(就是多少个进程真的分配到CPU)当这个值超多CPU数,就会出现CPU瓶颈。这个也和top的负载有关系,一般负载超过3就比较高,超过5就高,超过10就不正常,服务器状态危险。Top的负载类似每秒运行队列。如果运行队列过大,表示CPU很忙使用率很高。
B 表示阻塞的进程。
Swpd 虚拟内存已使用的大小,如果大于0,表示机器物理内存不足,如果不是程序内存泄露的原因,就该升级内存或者把耗内存的任务迁到其他机器。
Free 空闲的物理内存大小,剩余3415M。
Buff 用来存储目录里面有什么内容,权限等缓存。
Cache 直接记忆打开的文件。(把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快被使用。)
Si 每秒从磁盘读入虚拟内存的大小,如果大于0,表示物理内存不够用或者内存泄露,要查找耗内存进程干掉。
So 每秒虚拟内存写入磁盘的大小,如果大于0,同上
Bi 块设备每秒接收块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,拷贝大数据时可以看到140000/s,磁盘写入速度差不多140M每秒。
Bo 块设备每秒发送的块数量,例如读取文件bo就要大于0。Bi和bo一般都要接近0,不然就是IO过于频繁。
In 每秒CPU的中断次数,包括时间中断。
Cs 每秒上下文切换次数,例如调用系统函数就要进行上下文切换,线程的切换,也要进程上下文切换,这个值越小越好,太大了要考虑调低线程或者进程的数目,例如在apache和nginx服务器上,一般做性能测试时会进行几千次并发甚至几万次并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调、压测,知道cs到一个比较小的值,这个进程和线程数就比较合适。系统调动也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个很消耗资源,尽量避免频繁调用系统函数。上下文切换过多表示CPU大部分浪费在上下文切换,没有充分利用。
Us 用户CPU时间,
Sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
Id 空闲CPU时间。Id+us+sy=100,一般认为id是空闲CPU使用率,us是用户CPU使用率。
Wt 等待IO CPU时间。
vmstat
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。