linux中iostat命令_linux运维和网络运维

linux中iostat命令_linux运维和网络运维Linux系统中的iostat是I/Ostatistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。……………

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

 系列专题:Linux运维入门教程 


      Linux系统中的iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

      本文包括iostat的安装、用法、常用参数和解析。

1、安装

看提供iostat的软件包

[root@devvm ~]# yum provides */iostat
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.bupt.edu.cn
 * extras: ftp.sjtu.edu.cn
 * updates: ftp.sjtu.edu.cn
pcp-4.3.2-12.el7.x86_64 : System-level performance monitoring and performance management
Repo        : base
Matched from:
Filename    : /var/lib/pcp/config/pmlogconf/tools/iostat



pcp-4.3.2-13.el7_9.x86_64 : System-level performance monitoring and performance management
Repo        : updates
Matched from:
Filename    : /var/lib/pcp/config/pmlogconf/tools/iostat



pcp-testsuite-4.3.2-12.el7.x86_64 : Performance Co-Pilot (PCP) test suite
Repo        : base
Matched from:
Filename    : /var/lib/pcp/testsuite/sadist/iostat



pcp-testsuite-4.3.2-13.el7_9.x86_64 : Performance Co-Pilot (PCP) test suite
Repo        : updates
Matched from:
Filename    : /var/lib/pcp/testsuite/sadist/iostat



sysstat-10.1.5-19.el7.x86_64 : Collection of performance monitoring tools for Linux
Repo        : base
Matched from:
Filename    : /usr/bin/iostat



[root@devvm ~]# 

可以选择pcp或sysstat

[root@devvm ~]# yum install sysstat -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.bupt.edu.cn
 * extras: ftp.sjtu.edu.cn
 * updates: ftp.sjtu.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package sysstat.x86_64 0:10.1.5-19.el7 will be installed
--> Processing Dependency: libsensors.so.4()(64bit) for package: sysstat-10.1.5-19.el7.x86_64
--> Running transaction check
---> Package lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================
 Package                  Arch            Version                                  Repository     Size
=======================================================================================================
Installing:
 sysstat                  x86_64          10.1.5-19.el7                            base          315 k
Installing for dependencies:
 lm_sensors-libs          x86_64          3.4.0-8.20160601gitf9185e5.el7           base           42 k

Transaction Summary
=======================================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 357 k
Installed size: 1.2 M
Downloading packages:
(1/2): lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64.rpm                |  42 kB  00:00:00     
(2/2): sysstat-10.1.5-19.el7.x86_64.rpm                                         | 315 kB  00:00:00     
-------------------------------------------------------------------------------------------------------
Total                                                                  1.1 MB/s | 357 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64                               1/2 
  Installing : sysstat-10.1.5-19.el7.x86_64                                                        2/2 
  Verifying  : sysstat-10.1.5-19.el7.x86_64                                                        1/2 
  Verifying  : lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64                               2/2 

Installed:
  sysstat.x86_64 0:10.1.5-19.el7                                                                       

Dependency Installed:
  lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7                                              

Complete!
[root@devvm ~]# 

2. 用法

语法

iostat [选项] [<时间间隔>] [<次数>]

参数说明

  • -c: 显示CPU使用情况
  • -d: 显示磁盘使用情况
  • -N: 显示磁盘阵列(LVM) 信息
  • -n: 显示NFS 使用情况
  • -k: 以 KB 为单位显示
  • -m: 以 M 为单位显示
  • -t: 报告每秒向终端读取和写入的字符数和CPU的信息
  • -V: 显示版本信息
  • -x: 显示详细信息
  • -p:[磁盘] 显示磁盘和分区的情况

3. 实践

3.1 常用参数

[root@devvm ~]$ iostat -x
Linux...
avg-cpu:  %user   %nice %system %iowait  %steal   %idle

2.49    0.00    0.52    0.10    0.00   96.89


Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

vda               0.06     4.00    0.44    2.70    11.96    44.78    36.11     0.03   10.64    9.33   10.86   0.73   0.23

cpu字段说明:

%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。

注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

磁盘字段说明:

rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s: 每秒写K字节数。是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。即 delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。

4.性能指标分析

[root@RedHat ~]# iostat -xdk 1 10 | egrep "sda|Device"
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda              10.66    23.71    8.46    4.46   243.03   211.25    70.30     0.43   32.87   8.64  11.17
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00   25.00     0.00 12800.00  1024.00     7.27  327.76  39.40  98.50
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00   19.00     0.00  9728.00  1024.00     7.24  322.26  51.79  98.40
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    1.00   36.00     4.00 13852.00   748.97     7.58  105.14  26.30  97.30
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00   27.27     0.00 13963.64  1024.00     8.86  488.37  36.63  99.90
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00   21.00     0.00 10752.00  1024.00     7.12  330.81  46.86  98.40
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    9.00     0.00  4608.00  1024.00     4.18  761.44  79.56  71.60
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/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
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/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
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    8.00     0.00    24.00     6.00     0.11   14.12  14.12  11.30
[root@RedHat ~]#

重要参数解析:util,svctm,await,avgqu-sz:

       util是设备的利用率。如果它接近100%,通常说明设备能力趋于饱和(并不绝对,比如设备有写缓存)。有时候可能会出现大于100%的情况,这多半是计算时四舍五入引起的,但如果是磁盘阵列等多盘系统,因为具有并发IO操作的能力,也会出现大于100%的情况。

       svctm是平均每次请求的服务时间。从源代码里可以看出:(r/s+w/s)*(svctm/1000)=util。举例子:如果util达到100%,那么此时svctm=1000/(r/s+w/s),假设IOPS是1000,那么svctm大概在1毫秒左右,如果长时间大于这个数值,说明系统出了问题。不过前面已经说过在磁盘阵列等多盘系统中util可能出现偏大的情况,所以svctm相应的也可能偏大。

       await是平均每次请求的等待时间。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。

       avgqu-sz是平均请求队列的长度。毫无疑问,队列长度越短越好。

       如果%util接近100%且,表明IO请求太多,IO系统已经满负荷,磁盘可能存在瓶颈,但是并不是更改存储设备就能提高性能的;(最近,经历一个实践,%util是100%,svctm为6~7毫秒,但是就存储系统分开部署于两个存储设备上,却依旧为100%,并且svctm也为6~7毫秒,IO状态信息没有多大的改变。说明现在可以通过软件层面进行调优)。

       svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加。

await 的大小一般取决于服务时间(svctm) 以及I/O 队列的长度和 I/O 请求的发出模式。

       如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185436.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • JavaWeb – GET 请求中 URL 的最大长度限制(附:解决方案)[通俗易懂]

    JavaWeb – GET 请求中 URL 的最大长度限制(附:解决方案)[通俗易懂]今天在写一个PHP相应JSOUP请求的功能时,发现当URL中包含的请求参数过长时会返回414错误。浏览器1、IEIE浏览器(MicrosoftInternetExplorer)对URL长度限制是2083(2K+53),超过这个限制,则自动截断(若是form提交则提交按钮不起作用)。中文字符的话只有2083/9=231个字符。2、Firefoxfi…

  • 数组求和方法汇总_用函数的方法对输入的数组求和

    数组求和方法汇总_用函数的方法对输入的数组求和vararr=[1,2,3,4,5,6];测试时我不想过度使用全局变量影响命名空间,所以没使用未声明变量。而是直接通过私有作用域设置静态私有变量,也可以用其他设计模式来限定变量作用域。因为数组对象的迭代方法也是一种遍历,所以也可以借助用来实现求和。一、利用数组对象的各迭代方法:1.array.every()查询是否有所有项都匹配的方法:1(function(){…

  • modelsim se 10.1a 下载与破解

    modelsim se 10.1a 下载与破解学HDL避免不了的要用到modelsim,遗憾的是至今也没怎么用,昨天下载了modelsim装上了,鼓捣破解鼓捣了一阵子。     我是一个软件控,除非是对就器件不支持或者有明显bug的一般都会尝试用最新版,觉得既然搞电子做嵌入式就得更得上潮流,能适应得了新环境。所以很多软件,哪怕是用的再顺的除了变化较大的新版也会毫不犹豫去尝试。好了,闲话不多说,看一下modelsim,modelsim

  • idea如何进行debug调试断点上被打了个对钩_debug调试教程

    idea如何进行debug调试断点上被打了个对钩_debug调试教程IDEA如何进行debug调试第一步,设断点,打开debug第二步,使用Debug调试的功能键程序调试,相信是所有程序员必经之路,因为程序写出来是不可能没有错误的,当然除了非常简单的一些程序之外。相信大家肯定使用过不同的编译软件,都有调试功能,在功能上大多都是大同小异,没有什么区别的,可能唯一的区别在于调试按钮的样式和快捷键不一样。接下来我将带领大家来了解IDEA调试功能,以Java程序为例。第一步,设断点,打开debug      &n

    2022年10月15日
  • C++通过TinyXML类库读写XML文件

    C++通过TinyXML类库读写XML文件TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。

  • java程序日志管理

    java程序日志管理初入软件开发这一行的人,可能对日志管理的概念并不是很明确,大概是由于经验所限,以至于根本还考虑不到这个问题。而从某种意义上来说,日志管理实际上也不需要初入这一行的人来管,他们只需要负责实现自己的主要业务逻辑和功能就好了。我当初刚入行的时候就有很长一段时间完全不用去关心日志,到后来偶尔涉及到的时候,也都是从其他地方采用cv大法直接搬用。不过,随着工作时间的变化,随着手头上任务重要程度的变化

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号