mike79 发表于 2013-11-11 14:49

aix下的磁盘块设备性能

本帖最后由 mike79 于 2013-11-11 14:53 编辑

看到某专家说“AIX下块设备性能为什么总是那么差,不管底层用了多么高端的存储”,并且归因于“用了DIO性能也还是较差,本质原因在于AIX死心眼,低下都被拆分为4K的page IO,Linux就没这个问题”

说块设备比较拗口,我刚开始还以为是说裸设备性能。由于磁盘块设备基本用于文件系统,那就直接说文件系统性能了。

AIX下影响文件系统的性能很多,这就只针对一个问题:AIX针对文件系统的IO,无论文件系统是否采用dio,无论用户访问模式(读/写?顺序/随机?大容量?多并发?),都是以4KB为单位么?AIX这么傻么?
AIX针对磁盘的单个IO的最大吞吐量是在VG层面决定的,简单讲就是某个VG中吞吐量最小的磁盘决定了这个VG中所有磁盘的最大吞吐量。例如VG中有10块磁盘,9块磁盘的最大吞吐量可以到1MB,有1块磁盘只能到256KB,那么这个VG中所有磁盘的吞吐量就是256KB。

单个磁盘的吞吐量和整个VG的吞吐量都可以通过命令查看。看磁盘的吞吐量是lsattr -El hdiskX,max_transfer参数就是。不过有些存储厂商的设备没有提供这个参数。因此可以在VG层面看,lsvg XXvg,LTG size就是。

接下来我们做实验,看针对文件系统的IO吞吐量究竟能否超过4KB,到达LTG限定的值。
实验很简单,我们通过topas看磁盘的KBPS和TPS,两个值相除,也就是每个IO的吞吐量,暂且称之为KBPT。
先创建文件系统,用dio方式mount,然后用dd命令测试小并发(1个并发)、大容量(dd的bs参数决定)、顺序(dd就是测试顺序)、读写。
在我的实验环境中,LTG是1MB,那么就是看针对文件系统的IO的KBPT能否达到1MB。
为了突出实验效果,测试中设置bs=8m。其实只要超过LTG,相差其实不大。
因为专家特意提到了dio,以下就是dio的测试结果
写:dd if=/dev/zero of=test.txt bs=8m


读:dd if=/dev/test.txt of=/dev/null bs=2m


显然无论读写,hdisk5的吞吐量都近似为1MB,也就是LTG。这至少说明,AIX的文件系统IO并不限于4KB的page,是可以到达LTG。但这个也取决于用户的访问模式,比如将bs设置为4KB,那么吞吐量就只有4KB了。
页: [1]
查看完整版本: aix下的磁盘块设备性能