如何使用`vmstat`命令查看系统的内存使用情况?
美国、香港服务器
如何使用`vmstat`命令查看系统的内存使用情况?
07-16 来源:
在 Linux 系统中,vmstat(Virtual Memory Statistics)命令是监控系统内存、CPU、IO 等资源使用情况的强大工具。以下是使用vmstat查看内存使用情况的详细方法:
一、基本用法:查看实时内存状态
bash
vmstat # 显示系统内存、CPU等实时状态(单次输出)
vmstat 1 # 每秒刷新一次,实时监控(按Ctrl+C停止)
关键内存相关字段解释:
字段 含义
swpd 已使用的交换空间(Swap)大小(KB),值高可能表示物理内存不足。
free 空闲的物理内存(KB)。
buff 用于块设备的缓冲区内存(KB),用于加速磁盘 IO。
cache 用于文件系统的缓存内存(KB),用于加速文件读取。
si 每秒从磁盘交换到内存的数据量(KB),值高可能表示内存不足。
so 每秒从内存交换到磁盘的数据量(KB),值高可能表示内存不足。
二、查看详细内存统计(包含活跃 / 非活跃内存)
bash
vmstat -a # 显示活跃和非活跃内存(active/inactive)
新增字段解释:
字段 含义
inact 非活跃内存(近期未使用的内存,可优先回收)。
active 活跃内存(近期频繁使用的内存)。
三、监控内存变化趋势(持续输出)
bash
vmstat 1 10 # 每秒刷新一次,共输出10次(用于观察内存变化趋势)
示例输出分析:
plaintext
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 524288 655360 2097152 0 0 0 0 123 234 1 1 98 0 0
0 0 0 524288 655360 2097152 0 0 0 0 123 234 1 1 98 0 0
内存充足状态:free值高,swpd为 0,si/so为 0。
内存压力状态:free值低,swpd增长,si/so持续大于 0。
四、结合其他工具深度分析内存
1. 与free命令对比
bash
free -m # 以MB为单位显示内存使用(更直观)
2. 查看内存使用百分比
bash
vmstat 1 | awk "{if(NR>2) print "Memory Usage: " ($4+$6+$7)/($3+$4+$6+$7)*100 "%"}"
五、内存问题排查思路
高 Swap 使用率(swpd高,si/so持续非零)
可能原因:物理内存不足,需增加内存或优化应用内存使用。
排查命令:top/htop查看占用内存最高的进程。
缓冲区 / 缓存过高(buff/cache高)
正常现象:Linux 会自动利用空闲内存作为缓存,提升性能。
手动释放缓存:sync && echo 3 > /proc/sys/vm/drop_caches(谨慎使用)。
活跃 / 非活跃内存异常
active持续增长:可能存在内存泄漏,需结合pmap、valgrind等工具分析。
六、常见参数组合
参数 作用
-s 显示内存使用的汇总统计信息(类似free命令)。
-d 显示磁盘统计信息(与内存相关的 IO 操作)。
-p DEV 显示指定磁盘分区的统计信息。
示例:监控内存并保存结果到文件
bash
vmstat 1 60 > memory_stats.txt # 监控1分钟,每秒记录一次,保存结果
通过vmstat命令的输出,可快速判断系统内存状态,为优化内存配置或定位应用问题提供依据。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快