Linux1天1命令—3.vmstat
vmstat 是virtual meomory statistics的缩写,意为虚拟内存统计
功能:在给定时间对操作系统的虚拟内存、进程、CPU、IO读写活动进行监控
特点:linux/unix都能用;有别于top,不看单一进程,看整体;低开销工具
基本用法
- 使用:一般通过两个数字参数(间隔时间和次数)完成监控,也可以其他方式使用
- vmstat // 单次查看
- vmstat 3 // 每3秒查看1次;动态
- vmstat 5 10 // 每5秒查看1次,查看10次;动态
输出字段
[root@wg ~]# vmstat 2 5
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 3029876 199616 690980 0 0 0 2 3 2 0 0 100 0 0
0 0 0 3029752 199616 690980 0 0 0 41 1009 39 0 0 100 0 0
0 0 0 3029752 199616 690980 0 0 0 3 1004 36 0 0 100 0 0
0 0 0 3029752 199616 690980 0 0 0 4 1004 36 0 0 100 0 0
0 0 0 3029752 199616 690980 0 0 0 6 1003 33 0 0 100 0 0
--- 说明 ---
# Procs 进程
- r: 运行队列中进程数量
- b: 等待队列中进程数量
# Memory 内存
- swpd 使用虚拟内存大小
- free 可用虚拟内存大小
- buff 用于缓冲内存大小
- cache 用于缓存内存大小
# Swap 交换内存
- si 每秒从交换区写到内存的大小
- so 每秒写入交换区的内存的大小
# IO 输入输出(现在linux版本块大小为1024b)
- bi 每秒读取的块数
- bo 每秒写入的块数
# System 系统
- in 每秒终端数,包括时钟中断
- cs 每秒上下文切换数
# CPU (用百分比表示)
- us 用户进程执行时间(user time)
- sy 系统进程执行时间(system time)
- id 空闲时间(包括IO等待时间,中央处理器的空闲时间);百分比表示,一般id+us+sy=100
- wa 表示等待使用CPU的百分比(该数值大说明CPU不足)
- st 表示被偷走的CPU所占百分比(该值一般为0,不用关注)
# 备注:
- 如果r经常大于4,且id经常少于40,表示cpu负荷很重
- 如果bi,bo长期不等于0,表示内存不足
- 如果disk经常不等于0,且在b中的队列大于3,表示io性能不好。 // 不懂,原作这里..,disk来的没头没脑
『 Linux具有高稳定性,可靠性和很好的可伸缩性和扩展性,能针对不同的应用和硬件环境调整,优化出满足当前应用需要的最佳性能。因此企业在维护Linux系统、进行系统调优时,了解系统性能分析工具是至关重要的。』
虚拟内存和物理内存(虚拟内存回头补)
用法详解
1、vmstat -a 显示活跃和非活跃内存
vmstat -a 5 5 // 每5秒执行1次,5次,比基础命令增加inact和active显示
- inact: 非活跃内存大小
- active: 活跃的内存大小
2、vmstat -f 显示从系统启动至今的fork数量
vmstat -f // 结果xxx forks
- linux下创建进程的系统调用是fork
- 数据从/proc/stat中的processes字段里取得
3、vmstat -s 查看内存使用详细信息
vmstat -s
- 信息分别来自/proc/meminfo,/proc/stat和/proc/vmstat
4、vmstat -d 显示磁盘相关统计信息(读/写?)
vmstat -d
- 信息主要来自于/proc/diskstats
- merged表示一次来自于合并的写/读请求
- 一般系统会把多个连接/邻近的读/写请求合并到一起来操作
5、vmstat -p 显示指定磁盘分区统计信息
vmstat -p /dev/sda1 // 显示/dev/sda1分区信息
- 信息主要来自于/proc/diskstats
- reads:来自于这个分区的读的次数
- read sectors:来自于这个分区的读扇区的次数
- writes:来自于这个分区的写的次数
- requested writes:来自于这个分区的写请求次数
6、vmstat -m 查看系统的slab信息
vmstat -m
- 信息来自于/proc/slabinfo
『 slab:由于内核会有许多小对象,这些对象构造销毁十分频繁,比如i-node,dentry,这些对象如果每次构建的时候就向内存要一个页(4kb),而其实只有几个字节,这样就会非常浪费,为了解决这个问题,就引入了一种新的机制来处理在同一个页框中如何分配小存储区,而slab可以对小对象进行分配,这样就不用为每一个对象分配页框,从而节省了空间,内核对一些小对象创建析构很频繁,slab对这些小对象进行缓冲,可以重复利用,减少内存分配次数。』
7、vmstat -S 使用指定单位显示
vmstat -a -S M // 以兆为单位显示内存
- 参数有 k、K、m、M,分别代表1000、1024、1000000、1048576字节(byte)
- 默认单位为K(1024 bytes)
8、vmstat -V:显示vmstat版本信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律