vmstat性能测试中需要特别关注的指标和分析思路

vmstat 实际应用示例输出的详细字段解释,以及在性能测试中需要特别关注的指标和分析思路。结合具体场景和关键值,可以快速判断系统瓶颈。


示例 1:基础监控 (vmstat 1 5)

每秒收集一次,共5次。输出如下(数值仅供参考):

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  1   1024 104856  51200 256000    0    0    12    24  450  890 20 10 65  5  0
 1  0   1024 104000  51200 256500    0    0     0     8  220  600 15  8 75  2  0
 ... (后续3次输出)

字段解析

  1. Procs (进程)

    • r (Running)
      当前等待 CPU 资源的进程数

      • 关注点
        如果持续大于 CPU 核心数(如 CPU 是4核,r > 4),表明 CPU 资源紧张,可能存在计算密集型任务堆积。
    • b (Blocked)
      处于不可中断睡眠状态的进程数(通常是等待 I/O 完成)。

      • 关注点
        如果持续大于0,说明系统有进程因磁盘或网络 I/O 阻塞。结合 wa(CPU 等待 I/O)字段进一步分析。
  2. Memory (内存)

    • swpd
      已使用的虚拟内存(交换空间)大小(KB)

      • 关注点
        swpd > 0si(Swap In)和 so(Swap Out)为0,说明此前发生过内存不足,但当前可能缓解。
        siso 持续大于0,表明系统正在频繁使用交换空间,物理内存不足
    • free
      空闲物理内存(KB)

      • 关注点
        Linux 会尽量利用空闲内存作为缓存,free 低但 cache 高是正常现象,无需立即担心。
    • buff
      缓冲区内存(KB),用于缓存磁盘块(如文件系统元数据)。

    • cache
      页面缓存(KB),缓存文件数据(如读取过的文件)。

  3. Swap (交换分区)

    • si (Swap In)
      每秒从磁盘加载到内存的数据量(KB)

      • 关注点
        si 表示系统在从交换分区读取数据,可能因物理内存不足触发了页面换入操作。
    • so (Swap Out)
      每秒从内存换出到磁盘的数据量(KB)

      • 关注点
        so 表示内存压力大,页面被换出到磁盘。若长时间 si/so 持续大于0,需增加物理内存或优化应用内存使用。
  4. I/O (磁盘)

    • bi (Blocks In)
      每秒从块设备(磁盘)读取的块数(块大小通常为 512B)。

      • 关注点
        bi 可能是数据库查询、日志读取等操作导致。结合 wa(CPU等待I/O时间)判断是否瓶颈在磁盘。
    • bo (Blocks Out)
      每秒写入块设备(磁盘)的块数

      • 关注点
        bo 可能是写入日志、数据持久化操作。若 bowa 同时高,需优化磁盘写入策略(如异步写入)。
  5. System (系统)

    • in (Interrupts)
      每秒中断次数(包括时钟中断、硬件设备中断)。

      • 关注点
        突然大幅增加可能表示硬件问题(如网卡故障)或驱动异常。
    • cs (Context Switches)
      每秒上下文切换次数(CPU 从一个进程切换到另一个进程)。

      • 关注点
        cs(如 >100,000)可能因频繁的线程调度或锁争用,需检查进程/线程数量或调整内核调度策略。
  6. CPU (处理器)

    • us (User Time)
      用户态进程消耗的 CPU 时间百分比(应用程序代码执行)。

      • 关注点
        us(如 >70%)表示用户程序繁忙,可能是计算密集型任务(如数据处理、加密)。
    • sy (System Time)
      内核态 CPU 时间百分比(系统调用、中断处理、内核线程)。

      • 关注点
        sy(如 >30%)可能因频繁的系统调用(如文件操作)或进程创建。需排查是否有系统调用滥用(如短时频繁 open/close 文件)。
    • id (Idle)
      CPU 空闲时间百分比

    • wa (I/O Wait)
      CPU 等待 I/O 完成的空闲时间百分比

      • 关注点
        wa(如 >20%)表明磁盘或网络 I/O 成为瓶颈。需结合 bi/bob(阻塞进程数)进一步确认。
    • st (Steal Time)
      虚拟机被宿主机“偷取”的 CPU 时间百分比(仅在虚拟化环境有意义)。

      • 关注点
        st(如 >10%)表示宿主机资源不足,虚拟机抢不到 CPU 资源。

示例 2:磁盘监控 (vmstat -d)

输出示例(针对磁盘sda):

disk- ------------reads------------ ------------writes----------- -----IO-------
    total merged sectors      ms    total merged sectors      ms    cur    sec
sda 12000   400  614400    8000    5000   200  256000    4500      0      5

关键字段解析

  • reads 相关
    • total:完成的读操作总数。
    • sectors:读取的扇区总数(1扇区=512B)。
    • ms:读操作耗时(毫秒)。
  • writes 相关
    • 字段含义同上,针对写操作。
  • IO 队列
    • cur:当前正在进行的 I/O 操作数量。
    • sec:I/O 操作耗时(秒)。

性能关注点

  • 若某磁盘的 cur 值持续大于0,且 sec 较高,表明该磁盘存在排队延迟。
  • mssec 表示磁盘响应慢,可能是硬件性能不足或负载过高。

示例 3:内存事件汇总 (vmstat -s)

输出示例:

   4096 M total memory
   1024 M used memory
   ...
   1000 swaps in
    200 swaps out

关键字段

  • total memory:系统物理内存总量。
  • swaps in/out:历史累计的交换分区使用次数。
  • 非活跃内存(inact):可以被回收的内存(vmstat -a 输出)。

性能关注点

  • 对比 total memoryused memory 判断物理内存是否充足。
  • 如果 swaps in/out 持续增长且 si/so(动态输出)不为0,必须优化内存使用或扩容。

性能测试关键关注点

  1. CPU 瓶颈

    • 检查 ussy:若两者之和接近 100%(如 us=70%, sy=25%),说明 CPU 是瓶颈。
    • 配合 r 值:若 r ≥ CPU 核心数,需优化代码或增加 CPU。
  2. 内存瓶颈

    • si/so 持续 >0:物理内存不足,优先减少缓冲或优化应用内存分配。
    • cache 高但 free 低:无需担心(Linux主动利用内存缓冲)。
  3. I/O 瓶颈

    • wa >20% 且 b >0:I/O 成为瓶颈,需检查磁盘读写速度(如 iostat)或改用 SSD。
    • bi/bo 过高:判断是读密集还是写密集,优化程序 I/O 模式(如批量写入)。
  4. 进程阻塞

    • b 持续 >0:检查等待 I/O 的进程(使用 ps aux | grep 'D' 查找状态为 D 的进程)。
  5. 上下文切换

    • cs 过高:减少线程数或优化锁竞争(如使用无锁数据结构)。

解决思路

  • 高 CPU (us/sy)

    • 使用 perftop 找到高 CPU 进程。
    • 优化算法或启用多线程/分布式计算。
  • 高 I/O 延迟 (wa/bi/bo)

    • 使用 iostat -x 1 查看磁盘 await(平均等待时间)或 %util(利用率)。
    • 升级磁盘硬件或优化写入模式(如异步写入)。
  • 内存不足 (si/so)

    • 使用 smemps 查找内存泄漏进程。
    • 调整应用内存配置或增加物理内存。

通过 vmstat 的实时数据,结合 topiostatpidstat 等工具,可以形成完整的性能分析链路,精准定位系统瓶颈。

posted @ 2025-05-23 10:04  玛卡巴卡糖  阅读(317)  评论(0)    收藏  举报