zoukankan      html  css  js  c++  java
  • linux系统性能监控--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操作数目,以及整体的 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_readBlk_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个域的平均值,但并未给出具体逻辑驱动器的操作。


  • 相关阅读:
    AngularJS中的Provider们:Service和Factory等的区别
    解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
    关于EL表达式不起作用的问题
    Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群,Tomcat集群
    Java WebService 简单实例
    火狐浏览器中表单内容在表单刷新时候不重置表单信息
    ie文本框内容不居中问题
    javascript call和apply方法
    javascript的词法作用域
    C++提高编程 deque容器
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332263.html
Copyright © 2011-2022 走看看