您好,登录后才能下订单哦!
# 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_cachessysctl 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。