当前位置:   article > 正文

Linux性能监控命令_vmstat & 同时监控cpu、内存、磁盘、分页_linux vmstat命令详解:监控系统资源

linux vmstat命令详解:监控系统资源

描述

vmstat报告有关进程、内存、分页、块IO、陷阱和cpu活动的信息。

注意:生成的第一份报告给出了上次重启以来的平均值。附加报告给出了采样周期长度延迟的信息。

目录

1. 语法

1.1. 常用参数

2. 关键字解释

2.1. procs列:显示进程信息

2.2. memory列:显示内存信息

2.3. swap列:显示交换分区

2.4. io列:显示IO读写速度

2.5. system列:显示系统信息

2.6. cpu列:显示CPU信息

3. 模拟消耗

3.1. 模拟CPU消耗

3.2. 模拟内存消耗

3.3. 模拟磁盘消耗

4. 其他性能监控命令


1. 语法

vmstat  [选项]  [ <时间间隔> [ <监控次数> ] ]

 

1.1. 常用参数

  1. -w:扩大显示宽度,利于阅读
  2. -t:显示时间戳
  3. -d:监控磁盘统计数据
  4. -p:指定某块分区
  5. -S:指定单位(-S [k | K | m | M]:分别表示1000、1024、1000000、1048576字节(byte))
  6. -n:使头部只显示一次,而不是周期性地显示
  7. -m:显示slabinfo
  8. -f:显示从系统启动至今的fork数量

 

 

 

2. 关键字解释

vmstat -twn 1    # 每秒输出一次

 

2.1. procs列:显示进程信息

  1. r:运行队列中等待的进程数 #正在执行和等待CPU的任务数。当此列数大于cpu数量时,cpu将处于负载。正常情况应当低于cpu数量75%
  2. b:等待IO的进程数 #IO消耗过高会出现此进程数大于0的情况。说明系统有未完成的磁盘I/O请求

 

 

2.2. memory列:显示内存信息

  1. swpd :正在使用的虚拟内存 #当物理内存不足时才会调用虚拟内存,这时需要着重注意内存使用情况,一旦虚拟内存使用完,Linux系统将面临死机的情况
  2. free :空闲的物理内存
  3. buff :正在对块设备进行读写的缓冲 #用作缓冲的内存,内存不足时自动释放
  4. cache:放置已打开文件的缓冲 #用作缓冲的内存,内存不足时自动释放

 

 

2.3. swap列:显示交换分区

  1. si:从磁盘交换的内存量(/s) #物理内存不足时会启动交互分区,使用磁盘读写,此时性能开始变差
  2. so:交换到磁盘的内存量(/s) #同上

 

 

2.4. io列:显示IO读写速度

  1. bi:从块设备接收到的块(Blocks/s) #每秒磁盘读
  2. bo:发送到块设备的块(Blocks/s) #每秒磁盘写

 

 

2.5. system列:显示系统信息

  1. in:每秒CPU的中断次数(包括时间中断) #这个值越大,说明内核CPU消耗越严重
  2. cs:每秒上下文切换次数 #注意:切换次数越多,CPU做事越少,性能也就会越差

 

 

2.6. cpu列:显示CPU信息

  1. us:运行用户消耗CPU时间
  2. sy:运行内核消耗CPU时间
  3. id:CPU空闲时间 #不低于25%。超过25% 说明CPU消耗过高,会造成服务器响应变慢,用户使用不稳定
  4. wa:等待IO的CPU时间 #不超过20%。当IO消耗过高,此时应当关注物理内存是否被消耗完,swap频繁使用,IO使用率可能达到100%
  5. st:从虚拟机窃取的时间

 

 

 

3. 模拟消耗

3.1. 模拟CPU消耗

  1. 模拟CPU消耗shell脚本
  2. vim cpu.sh
  3. cpu(){
  4. c=1
  5. while true;do
  6. c="$(( c + 1))"
  7. done
  8. }
  9. num=$1
  10. for (( i=1; i<=$num; i++));do
  11. cpu &
  12. done
  13. 执行脚本
  14. bash cpu.sh 1 # 1表示进程数
  15. 杀死进程
  16. ps -ef |grep cpu.sh |grep -v grep |awk '{print $2}' |xargs kill -9

 

 

3.2. 模拟内存消耗

  1. 使用 dd 命令写入80GB数据,走内存
  2. time dd if=/dev/zero of=`pwd`/test_w bs=8k count=10485760
  3. --if表示输入的文件名,这里直接指定磁盘
  4. --of表示输出的文件名
  5. --bs表示同时读入/输出的块大小
  6. --count表示拷贝的块数
  7. --数据大小 = bs * count

 

 

3.3. 模拟磁盘消耗

  1. 模拟磁盘读,共读出8GB(直接走磁盘,不通过内存)
  2. time dd iflag=direct,nonblock if=/dev/sda2 of=/dev/null bs=8k count=1048576 #/dev/sda2 表示需要测试的块设备
  3. 模拟磁盘写,共写入8GB(直接走磁盘,不通过内存)
  4. time dd oflag=direct,nonblock if=/dev/zero of=`pwd`/test_w bs=8k count=1048576 #没有指定某个块设备,表示测试当前路径所使用的磁盘
  5. 模拟磁盘同时读写,共读写8GB(直接走磁盘,不通过内存)
  6. time dd iflag=direct,nonblock oflag=direct,nonblock if=/dev/sda2 of=`pwd`/test_rw bs=8k count=1048576 #/dev/sda2 表示需要测试的块设备

 

 

4. 其他性能监控命令

Linux性能监控命令_top & 实时监控主机信息

Linux性能监控命令_sar & 自动保存30天历史信息

Linux性能监控命令_iostat & 监控I/O状态

Linux性能监控命令_pidstat & 统计进程信息

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号