AIX下磁盘I/O性能分析

  

  本文主要介绍在磁盘I/O性能的概念以及相关的指标,并介绍AIX系统下,衡量和监控磁盘I/O性能的方法,以及在AIX下,常见的可调整参数。   

  
  

  磁盘I/O的概念   

  

  I/O   的概念,从字义来理解就是输入输出。操作系统从上层到底层,各个层次之间均存在I/O .比如,CPU有I/O,内存有I/O, VMM有   I/O,底层磁盘上也有I/O,这是广义上的I/O。通常来讲,一个上层的I/O可能会产生针对磁盘的多个I/O,也就是说,上层的   I/O是稀疏的,下层的I/O是密集的。   

  

  磁盘的I/O,顾名思义就是磁盘的输入输出。输入指的是对磁盘写入数据,输出指的是从磁盘读出数据。   

  
  

  衡量磁盘I/O性能的指标   

     图1所示。物理磁盘的架构以及常见磁盘类型       AIX下磁盘I/O性能分析”>
  <p>
  我们常见的磁盘类型有ATA (SATA, FC, SCSI, SAS。这几种磁盘中,服务器常用的是SAS和FC磁盘,一些高端存储也使用SSD盘。每一种磁盘的性能是不一样的。
  </p>
  <p>
  我们在测试工作中,衡量磁盘I/O性能主要参考IOPS和吞吐量两个参数。下面,将介绍一下这两个参数的含义。
  </p>
  <h4 id=   IOPS与吞吐量的概念      

  磁盘的IOPS,也就是在一秒内,磁盘进行多少读次I/O写。   

  

  磁盘的吞吐量,也就是每秒磁盘I/O的流量,即磁盘写入加上读出的数据的大小。   

  

  IOPS与吞吐量的关系   

  

  每秒   I/O吞吐量=IOPS *平均I/O大小。从公式可以看出:I/O规模越大,IOPS越高,那么每秒I/O   的吞吐量就越高,因此,我们会认为IOPS   和吞吐量的数值越高越好。实际上,对于一个磁盘来讲,这两个参数均有其最大值,而且这两个参数也存在着一定的关系。   

  

  下图为各种磁盘的IOPS极限值。   

     表 1. 常见磁盘类型及其IOPS       AIX下磁盘I/O性能分析”>
  
  <img src=   回页首   

     

  I/O读写的类型   

  

  大体上讲,I/O的类型可以分为:读/写I/O,大/小块I/O,连续/随机I/O,顺序/并发I/O .在这几种类型中,我们主要讨论一下:大/小块I/O,连续/随机I/O,顺序/并发I/O。   

  

  大/小块I/O   

  

  这个数值指的是控制器指令中给出的连续读出扇区数目的多少。如果数目较多,如64128等,我们可以认为是大块I/O;反之,如果很小,比如4,8,我们就会认为是小块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指令后,不必等待它回应,接着向另外一块磁盘发I/O指令。对于具有条带性的   RAID (LUN),对其进行的I/O操作是并发的,例如:RAID 0 + 1 (1 + 0), raid5等。反之则为顺序I/O。   

     

  磁盘I/O性能的监控   

  

  监控磁盘的I/O性能,我们可以使用AIX的系统命令,例如:sar - d, iostat, topas, nmon等。下面,我将以nmon和topas为例,讲述在系统中如何观察磁盘I/O的性能。   

AIX下磁盘I/O性能分析