尽管整体的处理器速度、 内存大小以及 I/O执行速度在不断提高,但 I/O操作的吞吐率和延迟性能仍然要比等价的内存访问操作低多个数量级。另外,由于许多工作负荷都拥有重要的I/O组件,I/O处理很容易成为整体吞吐率和应用整体响应时间的重要瓶颈。针对 I/O操作密集的应用, 性能分析人员必须通过工具来获取关于 I/O子系统操作的信息。

磁盘 I/O的性能经常基于吞吐率和延迟来评估。 磁盘驱动器对大型顺序传输的处理常常远优于小型随机传输操作。对大型顺序传输操作可以进行优化例如预读技术或延迟写技术,存储系统还能够尽量减少磁头移动并执行全磁道写操作。然而, 许多应用都需要访问存储介质中位于毫无关联且经常难以预测的地址上的数据。因此,各种工作负荷的 I/O模式常常是顺序 I/O和随机 I/O的混合体,并且执行各种尺寸的块传输操作 。

尽管系统监视工具并不提供对特定应用执行的所有 I/O操作都进行跟踪的能力,但有些性能监视工具允许性能分析人员监视系统处理的 I/O操作总数、每个逻辑磁盘驱动器的 I/O操作数目,以及整体的 I/O传输率。下面几节主要讨论 iostat(1)和 sar(1)两种工具。可以使用这些性能监视工具来理解 I/O瓶颈位于何处、哪些磁盘或互连结构未被充分利用,以及从系统角度来显示的延迟大小(相对于应用的角度) 。
    在分析特定工具之前,应记住存在着许多可以提高 I/O性能的技术。 这些技术包括纯硬件相关的解决方案(例如使用每分钟具有更高转速的磁盘驱动器, 从而提供了更低的I/O延迟、 更大的磁盘 cache容量或 I/O控制器 cache容量)。 这些技术也包括改进读写操作的数据传输率,以及提高 I/O总线速度或 I/O互连结构的速度,这两者都可以提高数据传输率并减少 I/O延迟。一些磁盘驱动器和磁盘存储子系统还提供了多端口的逻辑或物理磁盘,从而允许单个磁盘发出的并行 I/O操作,这也提高了潜在的 I/O吞吐率。另外, 硬件和软件 RAID(RedundantArray of Independent Disks)被设计为通过在多个磁盘驱动器上对数据进行分条处理来提高访问并行性。

一、iostat

iostat命令监视系统的 I/O活动, 检查物理磁盘就平均传输率而言处于活跃状态之中的时间长度。该命令生成的报告可用于修改系统配置以便更好地平衡物理磁盘之间的 I/O负荷。 iostat(1)还提供了有助于直接与 I/O活动进行比较的 CPU利用率。如果对显示时间间隔未作规定的话, 则 iostat显示系统自从上次启动以来的 I/O信息; 否则, 第一组输出显示系统自从启动以来的全部活动信息,而后续的输出内容只显示活动变化信息。

Linux 2.6.32-431.el6.x86_64 (V-02-01-00858) 	10/17/16 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
8.17 0.00 9.93 0.17 0.00 81.72 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 2.66 29.02 128.08 12995558 57356144
dm-0 1.49 14.21 6.98 6362394 3127808
dm-1 2.52 1.75 18.45 783408 8260336
dm-2 12.99 13.05 102.65 5843266 45967960 [huangc@V-02-01-00858 ~]$

iostat报告的 CPU利用信息类似于 top工具所提供的内容。 它将 CPU时间划分成用户、 nice、 系统、 I/O等待以及系统空闲等 5个部分,之后给出磁盘利用情况的报告。磁头信息后跟随着多行磁盘统计信息,其中每行报告一个已配置的逻辑磁盘的活动情况。tps 列表示发至逻辑磁盘的 I/O 请求数,但没有给出 I/O 请求的大小。 Blk_read/s 和Blk_wrtn/s表示读写该逻辑驱动器的数据量,以每秒的块数为单位,但也未给出块大小设置。Blk_read和 Blk_wrtn分别对应于读写该逻辑驱动器的数据量,以每秒的块数为单位,但没有指定块大小。
    选项-k以千字节为单位显示统计数据, 选项-p可以获取每个分区的统计数据, 选项-x可以获得诸如平均等待时间和平均服务时间等信息。

二、sar
    sar收集并报告操作系统中的大量系统活动, 包括 I/O操作、 CPU利用情况、 上下文切换和中断速率、 页换入和页换出的速率, 以及共享内存、
缓冲区和网络的使用情况。基于数量和时间间隔参数的取值, sar在以秒为单位的指定时间间隔内执行指定次数的输出信息操作。 例如命令 sar -b 3 12表示每隔 3s报告磁盘使用情况, 总共运行 12秒。另外,在数据采集结束后,给出了统计平均数据。 sar是一个具有丰富选项的工具。
[huangc@V-02-01-00858 ~]$ sar -b 3 12
Linux 2.6.32-431.el6.x86_64 (V-02-01-00858) 10/17/16 _x86_64_ (2 CPU) 18:35:30 tps rtps wtps bread/s bwrtn/s
18:35:33 30.32 0.00 30.32 0.00 271.48
18:35:36 7.38 0.00 7.38 0.00 88.56
18:35:39 7.22 7.22 0.00 635.38 0.00
18:35:42 23.47 0.00 23.47 0.00 225.27
18:35:45 0.00 0.00 0.00 0.00 0.00
18:35:48 74.82 0.00 74.82 0.00 1145.32
18:35:51 115.87 0.00 115.87 0.00 1741.70
18:35:54 0.00 0.00 0.00 0.00 0.00
18:35:57 17.92 0.00 17.92 0.00 223.66
18:36:00 0.00 0.00 0.00 0.00 0.00
18:36:03 7.64 0.00 7.64 0.00 87.27
18:36:06 569.04 0.00 569.04 0.00 8694.66
Average: 71.87 0.60 71.26 53.12 1050.89
    sar显示 I/O统计数据的方式类似于iostat, 可以提供 I/O操作的总次数(tps), 并将其进一步分为读操作(rtps)和写操作(wtps);还给出读写操作速率(bread/s 和bwrtn/s)。 以下数据每隔 2s采集一次,总共运行 18s。在数据采集结束后,计算出这5个域的平均值,但并未给出具体逻辑驱动器的操作。

linux系统性能监控--I/O利用率的更多相关文章

  1. Linux 系统性能监控命令详解

    Linux 系统性能监控命令详解 CPU MEMORY IO NETWORK LINUX进程内存占用查看方法 系统负载过重时往往会引起其它子系统的问题,比如:->大量的读入内存的IO请求(pag ...

  2. linux系统性能监控--内存利用率

    Linux提供了对物理内存进行合理.高效的访问并可以访问潜在的海量虚存的技术.虚存通常稍多于操作系统实际拥有的内存容量,以便将较少使用的数据卸载到磁盘存储器上,同时又呈现出系统拥有大量物理内存的假象. ...

  3. linux系统性能监控--CPU利用率

    在对系统的方法化分析中,首要且最基本的工具之一常常是对系统的 CPU利用率进行简单测量. Linux以及大多数基于 UNIX的操作系统都提供了一条命令来显示系统的平均负荷(loadaverage) . ...

  4. linux系统性能监控--网络利用率

    Linux中提供了许多有助于评估各种 Linux网络性能的监视工具,其中一些监视工具也可用于解决网络问题以及监视性能. Linux内核为用户提供了大量的网络系统信息,这有助于监视网络的健康状态并检测在 ...

  5. Linux系统性能监控

    系统的性能指标主要包括CPU.内存.磁盘I/O.网络几个方面. 1. CPU性能 (1)利用vmstat命令监控系统CPU 该命令可以显示关于系统各种资源之间相关性能的简要信息,这里我们主要用它来看C ...

  6. linux系统性能监控常用命令

      一.Linux服务器性能关注点 1)CPU -> load:表示cpu在一段时间内正在处理以及等待处理的任务之和统计信息,简单可理解为cpu正处理的线程数和能同时处理的线程数的比值.一般认为 ...

  7. Linux系统性能监控之6个vmstat和6个iostat命令

    这篇文章主要介绍一些Linux性能检测相关的命令. vmstat和iostat的两个命令可以运行在主流的Linux/Unix操作系统上. 如果vmstat和iostat命令不能再你的电脑上运行,请安装 ...

  8. 监控Linux系统性能的工具--nmon(一)

    今天看到一资料上写着,nmon可以对linux系统进行性能监控,随手在自己的阿里云上敲了一下这个命令,提示'command not find' 一脸懵~,然后探索了一下如何安装这个工具以及如何更好的查 ...

  9. 20个命令行工具监控Linux系统性能

    作为Linux/Unix 系统管理员需要掌握一些常用的工具用于检测系统性能.在这里,dodo为大家推荐非常20个有用的并且最常用的命令行系统监视工具: 1. top -Linux系统进程监控 top ...

随机推荐

  1. sql serve 数据库游标的使用

      什么是游标? 通俗来讲,个人理解,游标是对一个查询结果集,每次取出一条数据进行处理操作.   使用场景: 例如,我们要修改一个表300条数据,且每条数据修改的内容不一样,那么平时用的update ...

  2. org.apache.commons.lang3.tuple.Pair 作为更新参数,XML 中的 Sql 取不到值、报错

    项目用的 Mybatis,今天改一个需求,落地实现是批量更新,且只需要根据主键(id)来更新一个字段(name). 于是,没有犹豫,像下面这样设计了数据结构: 既然是批量更新,那外层肯定是 List ...

  3. php中一些提高性能的技巧

    php中一些提高性能的技巧 tags:php性能 提高性能 php中的@ php的静态 引言:php作为一种脚本语言,本身的性能上肯定是不如c++或者java的.拥有简单易学的特性的同时,性能提升的空 ...

  4. python day two,while

    一.运算符号 算数运算符:+ .-.*././/(取整除).%(去余).** 比较运算符:>.< .>=.<=.== 赋值运算符:=.+=.-=./=.%=.**= 逻辑预算符 ...

  5. codevs 搜索题汇总(青铜+白银级)

    1792 分解质因数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 青铜 Bronze   题目描述 Description 编写一个把整数N分解为质因数乘积的程序. 输入描 ...

  6. 51 nod 1394 1394 差和问题(线段树)

    1394 差和问题基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 有一个多重集合S(即里面元素可以有重复),初始状态下有n个元素,对他进行如下操作: 1.向S里面添 ...

  7. ●POJ 1509 Glass Beads

    题链: http://poj.org/problem?id=1509 题解: 给出一个字符串,有一个操作:把首字符放到末尾,形成新的串.求任意次操作后,字典序最小的串的首字母在原串中的位置.(这就是最 ...

  8. VK Cup 2017 - Квалификация 2

    因为资格赛1已经通过了,资格赛2随便打打玩.这次题目比上次还简单,FallDream看了两眼觉得太水就不做了,我一个人闲着无聊只好默默做了 A. Новый пароль 题目大意:给出N和K,要求构 ...

  9. bzoj4518[Sdoi2016]征途 斜率优化dp

    4518: [Sdoi2016]征途 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1657  Solved: 915[Submit][Status] ...

  10. mycat 1.6 简单的操作实例

    环境: centos7.4 + mysql5.7.20 + mycat1.6单台主机上安装了5台mysql_5.7.20 实例(3306,3307,3308,3309,3310)3306为独立实例 ( ...