本文主要介绍在磁盘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所示。物理磁盘的架构以及常见磁盘类型 IOPS与吞吐量的概念磁盘的IOPS,也就是在一秒内,磁盘进行多少读次I/O写。
磁盘的吞吐量,也就是每秒磁盘I/O的流量,即磁盘写入加上读出的数据的大小。
IOPS与吞吐量的关系
每秒 I/O吞吐量=IOPS *平均I/O大小。从公式可以看出:I/O规模越大,IOPS越高,那么每秒I/O 的吞吐量就越高,因此,我们会认为IOPS 和吞吐量的数值越高越好。实际上,对于一个磁盘来讲,这两个参数均有其最大值,而且这两个参数也存在着一定的关系。
下图为各种磁盘的IOPS极限值。
表 1. 常见磁盘类型及其IOPS 回页首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的性能。