Linux性能监控命令_vmstat & 同时监控cpu、内存、磁盘、分页

描述

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. 常用参数

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

 

 

 

2. 关键字解释

vmstat -twn 1    # 每秒输出一次

Linux性能监控命令_vmstat & 同时监控cpu、内存、磁盘、分页_第1张图片

 

2.1. procs列:显示进程信息

Linux性能监控命令_vmstat & 同时监控cpu、内存、磁盘、分页_第2张图片

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

 

 

2.2. memory列:显示内存信息

Linux性能监控命令_vmstat & 同时监控cpu、内存、磁盘、分页_第3张图片

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

 

 

2.3. swap列:显示交换分区

Linux性能监控命令_vmstat & 同时监控cpu、内存、磁盘、分页_第4张图片

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

 

 

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

Linux性能监控命令_vmstat & 同时监控cpu、内存、磁盘、分页_第5张图片

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

 

 

2.5. system列:显示系统信息

Linux性能监控命令_vmstat & 同时监控cpu、内存、磁盘、分页_第6张图片

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

 

 

2.6. cpu列:显示CPU信息

Linux性能监控命令_vmstat & 同时监控cpu、内存、磁盘、分页_第7张图片

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

 

 

 

3. 模拟消耗

3.1. 模拟CPU消耗

模拟CPU消耗shell脚本
vim cpu.sh

cpu(){
        c=1
        while true;do
                c="$(( c + 1))"
        done
        }

num=$1
for (( i=1; i<=$num; i++));do
        cpu &
done

执行脚本
bash cpu.sh 1    # 1表示进程数

杀死进程
ps -ef |grep cpu.sh |grep -v grep |awk '{print $2}' |xargs kill -9

 

 

3.2. 模拟内存消耗

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

 

 

3.3. 模拟磁盘消耗

模拟磁盘读,共读出8GB(直接走磁盘,不通过内存)
time dd iflag=direct,nonblock if=/dev/sda2 of=/dev/null bs=8k count=1048576    #/dev/sda2 表示需要测试的块设备

模拟磁盘写,共写入8GB(直接走磁盘,不通过内存)
time dd oflag=direct,nonblock if=/dev/zero of=`pwd`/test_w bs=8k count=1048576 #没有指定某个块设备,表示测试当前路径所使用的磁盘

模拟磁盘同时读写,共读写8GB(直接走磁盘,不通过内存)
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 & 统计进程信息

你可能感兴趣的:(性能笔记,性能优化,linux,运维,服务器)