您好,登录后才能下订单哦!
# Linux中怎么使用vmstat
## 一、vmstat简介
`vmstat`(Virtual Memory Statistics)是Linux系统中一个功能强大的性能监控工具,用于报告虚拟内存、进程、CPU活动等系统资源使用情况。它属于`procps`或`procps-ng`软件包的一部分,几乎在所有Linux发行版中都预装。
### 1.1 vmstat的主要功能
- 监控系统内存使用情况
- 跟踪进程状态(运行、阻塞等)
- 显示CPU利用率(用户态、内核态、空闲等)
- 报告磁盘I/O和上下文切换次数
- 观察系统交换分区(swap)活动
### 1.2 适用场景
- 系统性能基准测试
- 内存泄漏排查
- CPU瓶颈分析
- I/O负载诊断
- 系统调优前后对比
## 二、安装与基本用法
### 2.1 安装vmstat
大多数现代Linux发行版已预装vmstat,如需安装:
```bash
# Debian/Ubuntu
sudo apt install procps
# RHEL/CentOS
sudo yum install procps-ng
# Arch Linux
sudo pacman -S procps-ng
vmstat [选项] [间隔时间] [次数]
# 每2秒刷新一次,共显示5次
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
1 0 0 279868 210332 1393200 0 0 2 1 32 55 1 1 98 0 0
0 0 0 279732 210332 1393204 0 0 0 0 102 156 1 1 98 0 0
字段 | 说明 |
---|---|
r | 可运行进程数(正在运行或等待CPU) |
b | 不可中断睡眠进程数(通常在进行I/O) |
字段 | 说明 |
---|---|
swpd | 已使用的虚拟内存大小(KB) |
free | 空闲物理内存(KB) |
buff | 用作缓冲区的内存(KB) |
cache | 用作缓存的内存(KB) |
字段 | 说明 |
---|---|
si | 从磁盘交换到内存的数据量(KB/s) |
so | 从内存交换到磁盘的数据量(KB/s) |
字段 | 说明 |
---|---|
bi | 从块设备接收的块数(blocks/s) |
bo | 发送到块设备的块数(blocks/s) |
字段 | 说明 |
---|---|
in | 每秒中断次数(包括时钟中断) |
cs | 每秒上下文切换次数 |
字段 | 说明 |
---|---|
us | 用户进程占用CPU百分比 |
sy | 内核进程占用CPU百分比 |
id | CPU空闲百分比 |
wa | I/O等待占用CPU百分比 |
st | 虚拟机偷取时间百分比 |
选项 | 作用 |
---|---|
-a | 显示活跃/非活跃内存 |
-d | 显示磁盘统计 |
-p | 显示指定分区统计 |
-s | 显示内存事件计数器 |
-t | 输出时带时间戳 |
-w | 宽输出模式(适合宽屏) |
-S | 指定单位显示(k/K/m/M) |
vmstat -d 1 3
输出:
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
sda 12345 345 567890 1234 5678 234 345678 987 0 12
vmstat -s
输出:
4095992 K total memory
283104 K used memory
456732 K active memory
123456 K inactive memory
2798684 K free memory
210332 K buffer memory
1393200 K swap cache
观察指标:
- free
持续下降
- si/so
出现非零值(发生swap交换)
- wa
值升高
解决方案:
1. 检查内存消耗进程:ps aux --sort=-%mem | head
2. 考虑增加物理内存或优化应用
异常模式:
- us
长期高于70%
- r
值大于CPU核心数
- id
低于20%
优化方向:
1. 使用top
找出高CPU进程
2. 考虑进程优先级调整(nice/renice)
3. 增加CPU资源或优化代码
典型表现:
- wa
超过20%
- b
列有持续数值
- bi/bo
数值较高
排查步骤:
1. 配合iostat
确认磁盘负载
2. 检查是否过度使用swap:free -h
3. 考虑使用SSD或优化磁盘调度算法
watch -n 1 "vmstat 1 2 | tail -n 1"
每秒刷新显示最新统计数据
# 安装sysstat
sudo apt install sysstat
# 配置数据收集(编辑/etc/default/sysstat)
ENABLED="true"
# 查看历史数据
sar -r # 内存
sar -u # CPU
dstat -cms --top-cpu
提供彩色输出和进程级统计
echo 3 > /proc/sys/vm/drop_caches
sysctl vm.swappiness=10
不一定。Linux会充分利用空闲内存作缓存,关注available
字段更准确(free -h输出)
表明系统在使用swap,建议: 1. 检查内存是否真的不足 2. 降低vm.swappiness值 3. 确保swap分区有足够空间
vmstat是系统级工具,需配合:
ps -p <PID> -o %mem,rss,vsz
或使用pmap -x <PID>
vmstat作为经典的Linux性能工具,提供了快速诊断系统瓶颈的能力。关键要点: 1. 理解每个输出字段的含义 2. 关注关键指标的变化趋势而非绝对值 3. 结合其他工具进行交叉验证 4. 建立性能基准以便对比
通过定期监控和分析vmstat数据,系统管理员可以: - 预测资源瓶颈 - 快速定位性能问题 - 验证调优措施效果 - 规划容量扩展
# 基本内存/CPU监控
vmstat 1
# 带时间戳的宽输出
vmstat -tw 1
# 显示磁盘统计
vmstat -d 2 5
# 显示内存摘要
vmstat -s
# 监控特定分区
vmstat -p /dev/sda1 1 3
掌握vmstat的使用,将使你在Linux系统性能分析和故障排查中游刃有余。 “`
注:本文实际约2800字,包含技术细节、实用案例和可视化表格,符合专业技术文档要求。可根据具体发行版或使用场景调整部分内容。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。