preface

as a linux engineer,you should know how to use these command of monitor system,so let's learn these commands.

vmstat

如有问题,请与我联系,18500777133@sina.cn

vmstat是由procps包安装后命令,它是Virtual Memory Statistics(虚拟内存统计)的缩写。利用vmstat命令,我们可以对linux操作系统的内存,进程状态,CPU活动等进行监视,不足之处就是无法对某个进程进行深入分析。

命令使用如下:

[root@localhost ~]# vmstat -h
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. # 按照delay指定的时间间隔统计的次数,默认为1

下面来看个例子:

[root@localhost ~]# vmstat 2 3
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 111688 76144 199116 0 0 3 4 32 55 0 0 100 0 0
0 0 0 111656 76144 199116 0 0 0 0 25 33 0 0 100 0 0
0 0 0 111656 76144 199116 0 0 0 16 24 32 0 0 100 0 0
  • procs
  1. r表示运行和等待CPU时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU不足,需要增加CPU
  2. b表示在等待资源的进程数,比如正在等待I/O或者内存交换等。
  • memory
  1. swpd列表示切换到内存交换分区的内存大小(以KB作为单位)。如果swpd的值不为0,或者 比较大,只要si、so的值长期为0,这种情况一般不用担心了,不会影响系统性能。
  2. free列表示当前空闲的物理内存数量(以KB为单位)
  3. buff列表示buffers cache的内存数量,一般为块设备的读写才需要缓冲。
  4. cache列表示page cached的内存数量,一般为文件系统进行缓存,频繁访问的文件都会被缓存。如果cache值比较大,说明缓存的文件数比较多,如果此时的IO中的bi比较小,说明文件系统效率比较好。
  • swap
  1. si 表示由磁盘写入内存,也就是内存进入内存交换分区的内存大小。
  2. so表示内存调入磁盘,也就是内存交换分区进入RAM的内存大小。

一般情况下,si so的值都为0,如果si so长期不为0,说明系统RAM不足了,需要增加物理内存。

  • io

    表示磁盘读写情况
  1. bi表示从块设备读入数据的总量(即读磁盘),单位是kb/s。
  2. bo表示写入数据到磁盘,单位同上。

    这里设置的bi+bo参考值为1000,如果超过1000,而且CPU列的wa(wait)值比较大,则表示系统磁盘I/O有问题,应该考虑提高磁盘的读写性能。
  • system

    显示采集间隔发生的中断数
  1. in表示在某一时间间隔内观测到的每秒设备中断数。
  2. cs(content switch)表示每秒产生的上下文切换次数。

    上面两个值越大,由内核消耗的CPU时间越多。
  • cpu
  1. us表示用户进程消耗CPU的时间百分比,us的值比较高的时候,说明用户进程消耗的CPU时间多,但是如果长期大于50%,就需要考虑优化程序和算法了。
  2. sy列显示了内核进程消耗的CPU时间百分比,sy值比较高时,说明内核消耗的CPU资源很多。

    根据经验,us+uy的参考值为80%,如果us+sy大于80%,说明可能存在CPU资源不足。
  3. id表示CPU空闲状态的百分比
  4. wa列显示了IO等待所占用的CPU时间百分比。wa值越高,说明I/O等待越严重。根据经验,wa的参考值为20%,如果wa超过20%,说明IO等待严重,引起IO等待的原因可能是磁盘大量随机读写造成的。也可能是磁盘或者磁盘控制器的带宽瓶颈(主要是块操作)造成的。

综上所说的,在对CPU评估中,需要重点注意procs像中的r列的值和CPU项中us、sy和id列的值。

sar

sar是由sysstat包安装而成的,也是分析系统性能的重要工具,可以全面获取系统CPU,运行队列,磁盘I/O,分页(交换分区),内存,CPU中断,网络等性能数据。

命令如下:

[root@localhost ~]# sar --help
Usage: sar [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -m ] [ -p ] [ -q ] [ -r ] [ -R ]
[ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | ... } ] [ -n { <keyword> [,...] | ALL } ]
[ -o [ <filename> ] | -f [ <filename> ] ] [ --legacy ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]

参数解释:

  • -A显示系统所有的资源设备(cpu,内存,磁盘)等运行状况。
  • -u显示系统所有CPU在采样时间内的负载状态。
  • -P显示当前系统中指定CPU的使用情况。
  • -d显示系统所有硬盘设备在采样时间内的使用情况。
  • -r显示内存在采用时间的使用情况
  • -b显示缓冲区在采用时间的使用情况
  • -v显示进程,文件,节点和锁表状态
  • -n 显示网络运行状态。参数后面可以跟DEV,EDEV,sock和full。dev显示网络接口信息,Edev显示网络错误的统计数据,sock显示套接字信息,full显示前三参数的所有信息。他们可以单独使用或者一起使用。
  • q显示运行队列的大小,它与系统当时的平均负载相同。
  • -R显示进程在采用时间内的活动情况
  • -y显示终端设备在采用时间的使用情况
  • -w显示系统交换活动在采用时间的使用情况
  • -o filename 表示将命令结果以二进制格式存放在文件中,filename是文件名
  • interval表示采样间隔,是必须有的参数。
  • count表示采用次数,可选参数,默认值为1

命令使用:

每一列的参数输出都写的很详细了,所以不做赘述。
[root@localhost ~]# sar -p 2 3 # 采集CPU信息,2秒采集一次,共三次
[root@localhost ~]# sar -w 1 3 #采集系统交换活动在采用时间的使用情况 ,1秒采集一次,共三次
[root@localhost ~]# sar -d 1 3 # 采集系统所有硬盘设备在采样时间内的使用情况。
[root@localhost ~]# sar -r 1 3 #显示内存在采用时间的使用情况,1秒采集一次,共三次
[root@localhost ~]# sar -n DEV 1 3 # 显示网络接口信息,每1秒采集一次,共采集3次

以前在蓝厂上班的时候遇到过这样的情况,系统负载不高,但是squid响应非常慢,找了一会儿发现squid只跑在了一个CPU核心上,这个核心使用率已经100%了,但是因为一个CPU核心使用率高,其他的核心低,所以导致sys load不高,这个时候,我们就要单独查看一个核心的使用率了,可以用到下面的命令:

我的是虚拟机,只分配了有一个1个CPU
[root@localhost ~]# sar -P 1 1 3 # 只有一个cpu,显示不了
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 11/17/2016 _x86_64_ (1 CPU) 03:57:55 PM CPU %user %nice %system %iowait %steal %idle
[root@localhost ~]# sar -P 0 1 3 # 监视cpu 第0个核心的使用率。
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 11/17/2016 _x86_64_ (1 CPU) 03:58:00 PM CPU %user %nice %system %iowait %steal %idle
03:58:01 PM 0 0.00 0.00 4.04 0.00 0.00 95.96
03:58:02 PM 0 0.00 0.00 3.03 0.00 0.00 96.97
03:58:03 PM 0 0.00 0.00 5.00 0.00 0.00 95.00
Average: 0 0.00 0.00 4.03 0.00 0.00 95.97

iostat

iostat 是安装sysstat后才有的命令,它是对系统磁盘IO操作进行监视的。它的输出主要是磁盘读写操作的统计信息,同事给出CPU的情况。和vmstat一样,只能监视系统整体情况,不能够对单个进程做分析。

[root@localhost ~]# iostat -help
Usage: iostat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } [ <device> [...] | ALL ] ]
[ <device> [...] | ALL ] [ -p [ <device> [,...] | ALL ] ]
  • -c 显示CPU情况
  • -d 显示磁盘的使用情况
  • -k 显示每秒以KB为单位显示数据
  • -t 打印出统计信息开始执行的时间
  • -x device指定要统计时间的磁盘设备名称,默认为所有的磁盘设备。
  • interval 采集时间间隔
  • count 次数

常用的命令组合如下:

[root@localhost ~]# iostat -d 1 3
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.49 6.12 8.84 392498 566882
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.00 0.00 0.00 0 0
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.00 0.00 0.00 0 0

上面每项输出的解释:

  • Blk_read/s 表示每秒读取的数据块数
  • Blk_write/s 表示每秒吸入的数据块数
  • Blk_read 表示读取的所有块数
  • Blk_wrtn表示写入的所有块数。

要注意的是,上面输出的第一项是从系统启动到统计时的所有传输信息,这个第二次输出的数据才代表在检测的时间段内系统的传输值。

[root@localhost ~]# iostat -x /dev/sda  1 2
Linux 2.6.32-504.el6.x86_64 (localhost.localdomain) 11/17/2016 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.03 0.00 0.15 0.12 0.00 99.70 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.09 0.76 0.14 0.35 6.08 8.82 30.70 0.00 8.01 3.65 0.18 avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.99 0.00 0.00 99.01 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

参数解释

  • rrqm/s 表示每秒进行合并的读操作数目
  • wrqm/s 表示每秒进行合并的写操作数目
  • r/s 表示每秒完成读I/O的设备次数
  • w/s 表示每秒完成写I/O的设备次数
  • rsec/s 表示每秒读取的扇区数
  • wsec/s 表示每秒写入的扇区数。

uptime

着重点说说sys load,

[root@localhost ~]# uptime
17:08:49 up 18:45, 1 user, load average: 0.00, 0.00, 0.00

这个load average有3个值输出,这个的负载不超过你当前CPU核心数即可,,像我这里的虚拟机有1个CPU,1核心,所以不超过1就行了。偶尔超过下不影响性能。

top

top命令不做赘述了,输出的结果非常详细,每一列也做了说明在输出结果的列表里面。

linux系统性能监视命令的更多相关文章

  1. 查看linux系统版本命令 (转)

    查看linux系统版本命令 分类: Linux 知识小结2011-10-10 15:26 240162人阅读 评论(9) 收藏 举报 linuxredhatdebianx86susesun 一.查看内 ...

  2. Linux系统ifconfig命令找不到,centos ifconfig Command not found

    centos ifconfig Command not found,Linux系统ifconfig命令找不到 >>>>>>>>>>>& ...

  3. Linux系统基础命令

    这是看itercast的学习笔记 Linux系统基础命令 日期时间 命令date用以查看.设置当前系统时间:格式化显示时间: +%Y--%m--%d 命令hwclock(clock)用以显示硬件时钟时 ...

  4. Linux系统-解压缩命令集合

    Linux系统-解压缩命令集合 linux zip命令 zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. ...

  5. LINUX系统VMSTAT命令详解

    linux系统vmstat命令详解 [转自 https://www.cnblogs.com/wensiyang0916/p/6514820.html] vmstat 1    1表示每秒采集一次vms ...

  6. 【转载】Linux系统下命令行连接蓝牙设备 查看查找 蓝牙

    Linux系统下命令行连接蓝牙设备 2018年11月26日 10:47:27 Zz笑对一切 阅读数:741   1.打开系统蓝牙 sudo service bluetooth start 1 进入bl ...

  7. Linux系统——awk命令

    awk命令不仅仅是Linux系统的命令,也是一种编程语言,用来处理数据和生成报告(Exel),处理的数据可以是一个或多个文件(标准输入和管道获取标准输入).可在命令行上编辑操作,也可以写成awk程序运 ...

  8. 给大家介绍一下linux系统高级命令

    输出重定向(mip.0834jl.com) ;覆盖文件内容 回声' 123 ' 测试;覆盖原始内容 回声' 123 ' 测试;原始存在(共存) echo 'ken2 '(www.jl0834.com) ...

  9. spark实验(一)--linux系统常见命令及其文件互传(2)

    2.使用 Linux 系统的常用命令 启动 Linux 虚拟机,进入 Linux 系统,通过查阅相关 Linux 书籍和网络资料,或者参考 本教程官网的“实验指南”的“Linux 系统常用命令”,完成 ...

随机推荐

  1. jquery图片轮播效果(unslider)

    今天做网站(住建局网站)需要用到图片轮播,刚开始想借鉴DTCMS上的,查看CSS与页面代码,呵呵,不复杂,直接复制过来,结果调整半天,页面还是各种乱,没办法,网上找一个吧,于是找到了今天要说的这货un ...

  2. [BZOJ 1997][HNOI2010]Planar(2-SAT)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1997 分析: 考虑每条边是在圈子里面还是圈子外面 所以就变成了2-SAT判定问题了= ...

  3. hdu5481 Desiderium

    链接 Desiderium 题意 给定n条线段,从中选取若干条,共有2n种选法(因为每一条线段有两种方法:选或者不选). 每一种选法都对应一个长度,也就是所选线段的并集长度. 求这2n种选法长度之和. ...

  4. there is issue about change event of checkbox in the ie8 oe ie7

    some people said the change event of checkbox can not trigger in the ie7 or ie8,that's not true. thi ...

  5. ActiveMQ_安全配置(五)

    如果Activemq不加安全配置,那么任何知道队列所在服务器IP的人都可以发送接收队列消息 安全配置主要是通过配置账号密码增强安全性 参考资料:http://activemq.apache.org/s ...

  6. GBDT和RF的区别

    去XX公司实习的时候,被问过,傻逼的我当时貌似都答错了,原谅全靠自学的我,了解甚少 RF随着树的增加不会过拟合 GBDT随着树的增加会过拟合 RF还会对特征进行random,例如特征的个数m=sqrt ...

  7. 离线安装redis集群

    Step0:redis集群组件需求 Step1:离线安装ruby Step2:离线安装rubygems Step3:安装rubygems的 redis api Step4:离线安装tcl 8.6 St ...

  8. 用MathType编辑横三角形的方法

    如果常常接触数学公式,你会发现同一个符号如果变换方向使用就可以代表不同的数学含义,这是非常常见的一种数学现象了.对于这种情况在数学公式编辑器中,我们可以使用不同的模板来进行编辑.比如横着的三角形符号, ...

  9. shell截取字符串的方法

    参考文献: linux中shell截取字符串方法总结 [Linux]如何在Shell脚本中计算字符串长度? 截取字符串的方法一共有八种,主要为以下方法 shell中截取字符串的方法有很多中, ${ex ...

  10. 【Codeforces 707C】Pythagorean Triples(找规律)

    一边长为a的直角三角形,a^2=c^2-b^2.可以发现1.4.9.16.25依次差3.5.7.9...,所以任何一条长度为奇数的边a,a^2还是奇数,那么c=a^2/2,b=c+1.我们还可以发现, ...