AIX挂载NFS写入效率低效解决

背景: Linux是NFS的Server端,AIX是NFS的Client端(此外,有一个Linux也作为Client端对比测试)。 1.NFS对应的底层设备是闪存卡,本地测试I/O写性能可达2GB/s; 2.服务器是千兆网卡,FTP测试传输可达到100MB/s; 3.AIX成功挂载NFS,dd测试写入速度只有10MB/s; 4.Linux成功挂载NFS,同样dd测试写入速度可达到100MB/s; 说明:以上速度主要是体现数量级的差异,实际测试会有少许偏差。 具体环境: NFS Server:RHEL 6.8 NFS Client:AIX 6.1、RHEL 6.8 挂载参数均依据MOS文档配置: Mount Options for Oracle files for RAC databases and Clusterware when used with NFS on NAS devices (文档 ID 359515.1) 根据本次实际需求,提炼一下需要配置的参数: --MOS建议(AIX): cio,rw,bg,hard,nointr,rsize=32768, wsize=32768,proto=tcp,noac, vers=3,timeo=600 --MOS建议(Linux): rw,bg,hard,nointr,rsize=32768, wsize=32768,tcp,actimeo=0, vers=3,timeo=600 AIX NFS的挂载参数: mount -o cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 10.xx.xx.212:/xtts /xtts 直接挂载提示如下错误: # mount -o cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 10.xx.xx.212:/xtts /xtts mount: 1831-008 giving up on: 10.xx.xx.212:/xtts vmount: Operation not permitted. 查资料确认AIX需要额外设置网络参数: # nfso -p -o nfs_use_reserved_ports=1 再次尝试挂载成功: mount -o cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 10.xx.xx.212:/xtts /xtts 可dd测试的速度非常不理想,只有10MB/s: --test performance; AIX NFS # time dd if=/dev/zero of=/xtts/test-write bs=8192 count=102400 102400+0 records in. 102400+0 records out. real 0m43.20s user 0m0.79s sys 0m5.28s # time dd if=/xtts/test-write of=/dev/null bs=8192 count=102400 102400+0 records in. 102400+0 records out. real 0m30.86s user 0m0.84s sys 0m5.88s 所有参数都是根据实际需求,按照MOS的建议设置的。有什么问题吗? 尝试去掉cio参数测试,发现结果几乎没变化; 尝试去掉hard参数测试,发现结果几乎没变化; 尝试协议从tcp改为udp测试,发现结果几乎没变化; 几乎能试的参数都试了,结果都不理想,马上都准备协调资源找主机工程师定位了。 此时,灵感乍现,突然想到一个可能性。有没有可能AIX上的NFS限制了单个进程的I/O吞吐能力?带着这个猜测,进行并行测试: 开5个窗口同时开始dd: time dd if=/dev/zero of=/xtts/test-write1 bs=8192 count=102400 time dd if=/dev/zero of=/xtts/test-write2 bs=8192 count=102400 time dd if=/dev/zero of=/xtts/test-write3 bs=8192 count=102400 time dd if=/dev/zero of=/xtts/test-write4 bs=8192 count=102400 time dd if=/dev/zero of=/xtts/test-write5 bs=8192 count=102400 惊喜的发现5个窗口都在55s同时完成,这相当于800M*5=4000M,都在55s完成,每秒达到72MB/s,通过这种并行的方式已满足提升效率的需求。 而且看起来只要继续尝试多开窗口测试,基本也能达到网络上限100MB/s(千兆网卡限制)。 附:测试同样的NFS挂载到另一台Linux服务器上,无需并行,dd写入速度就可达100MB/s,这也是之前影响自己思考的因素。 Linux NFS的挂载参数: # mount -o rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=3,timeo=600 10.xx.xx.212:/xtts /xtts Linux NFS的测试结果: --test performance; Linux NFS # dd if=/dev/zero of=/xtts/test-write bs=8192 count=102400 102400+0 records in 102400+0 records out 838860800 bytes (839 MB) copied, 6.02451 s, 139 MB/s # dd if=/xtts/test-write of=/dev/null bs=8192 count=102400 102400+0 records in 102400+0 records out 838860800 bytes (839 MB) copied, 8.55925 s, 98.0 MB/s 对AIX不熟悉,没有进一步深究底层原理。开始解决问题过程中的主要困惑在于,为何Linux作为client时,无需并行就可以dd测试达到100MB/s的速度,使自己陷入了固有思维中。从这件事情得到的思考是:有些时候,要跳出常规思维去思考方可有所突破。 最后把NFS Server端本地测试的结果也贴出来,感叹下闪存卡的I/O能力: # dd if=/dev/zero of=/dev/test-write2 bs=8192 count=1024000 1024000+0 records in 1024000+0 records out 8388608000 bytes (8.4 GB) copied, 4.19912 s, 2.0 GB/s AlfredZhao©版权所有「从Oracle起航,领略精彩的IT技术。」https://www.cnblogs.com/jyzhao/p/9849886.html
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信