【Linux】性能监控指令vmstat

一、概述

监控通常分为机器监控和服务监控,机器监控是基础监控,目的是为了获得系统当前的运行状态,服务监控则是主要目的,也是最应该关心的监控,机器监控也是为了更好的服务监控而存在,简单来说,服务监控和系统上部署的具体服务有关,但监控模式可以统一。

监控是为了获得相关的目标数据,获得数据是为了异常情况下作出分析,分析的目的是为了解决线上case以及性能调优。这基本上就是监控存在的意义了。一台线上服务器的机器监控,基本上可以分成四大类:cpu监控、磁盘容量监控、IO监控和网卡监控。不同业务将会导致服务器不同的瓶颈,应该视具体业务而言。本文主要讨论Linux下常见的获得cpu状态的命令行:vmstat。

二、使用详解

在使用指令之前,应该明白监控的具体内容以及含义。cpu监控分为两种:cpu使用率和IPC/CPI,两者的应用场景也不相同,通常使用的是cpu使用率监控,基本上操作系统都会提供,而IPC/CPI监控则需要性能专家的协助,操作系统上基本没有相关的指令。

非计算密集型只需要监控cpu的使用率,而cpu的使用率需要关注用户态cpu使用率和系统态cpu使用率,前者表示系统上运行业务获得cpu的执行时间占总cpu时间的百分比,后者表示系统获得cpu时间的百分比。对用户而言,用户态cpu百分比为100%是最理想的状况,但这通常不可能,当出现程序调度、线程上下文切换以及IO交互的时候,系统态cpu使用率会较多的增长。应当明确的是,应用消耗很多CPU并不意味着性能或者扩展性达到了最高或瓶颈。如果长时间出现系统态cpu使用率居高不下,那么就需要关注,有可能是程序写的不优雅,有可能是磁盘即将损坏导致IO消耗时间过长,这时候就需要cpu监控从而分析得出结果。

对计算密集型应用来首,只监控cpu使用率是不够的,还需要监控IPC(每时钟指令数)或CPI(每指令时钟周期)。为什么需要知道这一项数据?IPC或CPI都可以反映了没有指令被执行的时候占用cpu时钟周期的百分比,简而言之就是CPU等待指令从内存中装入寄存器消耗时间的百分比,即停滞(stall)。停滞——当cpu执行指令而所用到的操作数不在寄存器或缓存中并且当前钟周期还未失效时,cpu就需要停滞等待数据从内存中装入寄存器,停滞一旦发生,通常会浪费几百个cpu时钟周期。要想提高计算密集型应用的性能,就需要获得IPC/CPI监控数据,减少停滞减少cpu等待内存数据时间或改善高速缓存。

1. vmstat用法

[[email protected] ~]$ vmstat --help
usage: vmstat [-V] [-n] [delay [count]]
              -V prints version.
              -n causes the headers not to be reprinted regularly.
              -a print inactive/active page stats.
              -d prints disk statistics
              -D prints disk table
              -p prints disk partition statistics
              -s prints vm table
              -m prints slabinfo
              -t add timestamp to output
              -S unit size
              delay is the delay between updates in seconds.
              unit size k:1000 K:1024 m:1000000 M:1048576 (default is K)
              count is the number of updates.

2. vmstat示例

[[email protected] ~]$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0  56400  43444 324868    0    0    20    14   28   45  0  0 99  1  0
 0  0      0  56400  43452 324864    0    0     0    48   36   58  0  0 98  2  0
 0  0      0  56400  43452 324868    0    0     0     0   22   34  0  0 100  0  0
 0  0      0  56400  43452 324868    0    0     0     0   34   48  0  1 99  0  0
 1  0      0  56400  43452 324868    0    0     0     0   22   31  0  1 99  0  0
 0  0      0  56400  43452 324868    0    0     0     0   31   48  0  0 100  0  0
 0  0      0  56400  43452 324868    0    0     0     0  129  163  3  1 96  0  0
 0  0      0  56400  43452 324868    0    0     0     0   35   56  0  2 98  0  0
 0  0      0  56400  43452 324868    0    0     0     0   22   32  0  0 100  0  0
 0  0      0  56400  43452 324868    0    0     0     0   58   61  0  0 100  0  0
 0  0      0  56400  43452 324868    0    0     0     0   24   38  0  1 99  0  0

3. vmstat详解

vmstat 1:表示每隔一秒钟采集、展示一次数据,要想停下来Ctrl+d即可,如果想指定采集次数,则使用“vmstat 1 10",表示每隔一秒钟采集一次数据,总共采集10次。

procs:

r:表示除了cpu资源外已经准备好的进程队列,即等待可用cpu的进程数,获取该值用于判断系统负荷情况,如果长时间该值超过处理器硬件线程个数一倍,则需要关注,系统可能面临高负载状况,如果长时间是处理器硬件线程数的三、四倍,则需要立即关注并采取行动,此时系统已经能感觉到明显的性能下降,要么增加cpu,要么分析当前系统进程状况。

附注:硬件线程个数的概念,举个例子,双核四线程的cpu,表示有2个物理cpu,但是每个cpu有两个逻辑上的线程,对操作系统而言,它认为有4个cpu。

b:表示阻塞的进程队列,阻塞的时候进程还在内存(和挂起不一样,注意区别),但是需要额外的资源(例如IO)等。

cpu:

us:表示用户态cpu使用率,即应用获得cpu执行时间占用cpu总时间的百分比,占比高并不表示系统瓶颈。

sy:表示系统态cpu使用率,常指系统调度占用cpu总时间的百分比。

id:表示系统空闲时间百分比。

获得这三项数据的目的是为了分析、减少sy的百分比,实际上要判断导致应用异常需要综合很多监控数据,具体靠经验。

swap:

si:每秒从磁盘读入虚存(swap)的大小,如果该值较大,则表示系统内存资源紧张,需要频繁的进行内存交换。

so:每秒从内存写入到虚存的大小,和si一致,但是要注意两个值是配合使用,当两个值都较大的时候才真正表示内存资源紧张。

io:

bi:块设备(磁盘)每秒接收的块数量,对应IO中的写操作,太大表示IO操作频繁。

bo:块设备每秒输出的块数量,对应IO中的读操作,太大表示IO操作频繁。

system:

in:每秒cpu中断次数。

cs:每秒上下文切换次数,例如调用系统函数、线程上下文切换、进程切换都会导致该值增大,上下文切换会浪费cpu时钟,配合in值,因此如果该值长时间太大,就需要考虑应用中的线程数是否开启太多等。

附注:

本文如有错漏,烦请不吝指正,谢谢!

时间: 2024-10-08 02:14:01

【Linux】性能监控指令vmstat的相关文章

Linux性能监控

Linux性能监控的目的是找到系统的瓶颈,并且调节系统来设法消除这些瓶颈.我们在监控性能的时候重点在于监视一下子系统: 1.CPU 2.MEMORY 3.IO 4.NETWORK 但这些系统都是彼此依赖,不能单独只看其中一个.当一个系统负载过重时往往会引起其它子系统的问题,比如说:       ->大量的读入内存的IO请求(page-in IO)会用完内存队列:        ->大量的网络流量会造成CPU的过载:        ->CPU的高使用率可能正在处理空闲内存队列:      

Linux 性能检测工具Vmstat命令

Linux 性能检测工具Vmstat命令提供了对进程.内存.页面I/O块和CPU等信息的监控,vmstat可以显示检测结果的平均值或者取样值,取样模式可以提供一个取样时间段内不同频率的监测结果. Linux 性能检测工具Vmstat命令process(procs)r:等待运行时间的进程数量b:处在不可中断睡眠状态的进程w:被交换出去但是仍然可以运行的进程,这个值是计算出来的 ·Linux 性能检测工具Vmstat命令memoryswpd:虚拟内存的数量free:空闲内存的数量buff:用做缓冲区

六个 Linux性能监控命令行工具

六个 Linux性能监控命令行工具  1.htop - http://htop.sourceforge.net/一个可以让用户与之交互的进程查看器.作为文本模式的应用程序,主要用于控制台或 X 终端中.当前具有按树状方式来查看进程,支持颜色主题,可以定制等特性. 2.dstat - http://dag.wieers.com/home-made/dstat/一个用来替换vmstat, iostat, netstat, nfsstat 和ifstat 这些命令的工具,是一个全能系统信息统计工具. 

Linux性能监控与分析之

Linux性能监控与分析之---CPU CPU性能指标 1. 用户进程使用CPU的比率 2. 系统进程使用CPU的比率 3. WIO, 等待I/O 而是CPU处于空闲状态的比率. 4. CPU的空闲率 5. CPU用于上下文交换的比率 6,nice 7,real-time 8,运行进程队列的长度 9,平均负载 Linux下常用监控CPU性能的工具有 1. iostat  www.ahlinux.com 只能查看所有CPU的平均信息 2. vmstat 能查看所有CPU的平均信息, 能查看CPU队

Linux 性能监控 —— 磁盘 I/O

零. 前言 如果从磁盘(disk)中读取/写入数据, CPU 就会处于空闲状态, 大大浪费了这段等待时间 CPU 的计算能力. 所以SSD. 缓存. 内存. 寄存器之类的设计就是为了减少 CPU 的等待时间, 释放计算能力. 可以看出业界对磁盘 I/O 的重视, 以及磁盘 I/O 对系统的影响之大. 一.  如何查看磁盘 I/O 在 Linux 平台或者 BSD 平台下, 借助 top 命令可以清楚看到磁盘 I/O 情况. 二. 如何衡量磁盘 I/O 存在瓶颈 磁盘 I/O 是否存在瓶颈取决于当

vmstat和iostat命令进行Linux性能监控

这是我们正在进行的Linux命令和性能监控系列的一部分.vmstat和iostat两个命令都适用于所有主要的类unix系统(Linux/unix/FreeBSD/Solaris). 如果vmstat和iostat命令在你的系统中不可用,请安装sysstat软件包.vmstat,sar和iostat命令都包含在sysstat(系统监控工具)软件包中.iostat命令生成CPU和所有设备的统计信息.你可以从这个连接中下载源代码包编译安装sysstat,但是我们建议通过YUM命令进行安装. 在Linu

使用vmstat和iostat命令进行Linux性能监控【转】

转自:https://linux.cn/article-4024-1.html 这是我们正在进行的Linux命令和性能监控系列的一部分.vmstat和iostat两个命令都适用于所有主要的类unix系统(Linux/unix/FreeBSD/Solaris). 如果vmstat和iostat命令在你的系统中不可用,请安装sysstat软件包.vmstat,sar和iostat命令都包含在sysstat(系统监控工具)软件包中.iostat命令生成CPU和所有设备的统计信息.你可以从这个连接中下载

linux优先级、性能监控指令

一.优先级 优先级的值=优先系数+nice值     优先系数由系统内核决定,不可更改 nice值可以手动更改,范围是 -20~19 优先级的值越低,优先级越高:优先级的值越高,优先级越低. 所以想调整成最高优先级的话,就将nice值设为-20:想调整成最低优先级的话,将nice值设为19. 调整优先级: 1.任务未运行前进行调整 # nice -n-20  sh /xxx/xxx.sh          --以最高优先级运行xxx.sh这个脚本 # nice -n19  sh /xxx/xxx

linux 性能监控-实用命令(摘抄)

1.TOP——Linux进程监控 top: linux 进行监控 运行时间 当前时间 当前登录用户数 cpu 内存 load average 系统负载 (1分钟 5分钟 15分钟[一般会小于1,高于5会硬性系统性能,需要详细查看进程) 2.VMSTAT——虚拟内存统计 Linux的vmstat命令用于显示虚拟内存统计,kernerl线程.磁盘.系统进程.I/O模块.中断.CPU活动等.默认情况下,需要在Linux系统上安装一个sysstat包才可以使用vmstat命令.. LSOF——列出打开的