我在两台喘不过气的机器之间使用NFS的性能非常不一致,而且似乎无法确定。
设定:
机器1'video1':双5506 w / 12GB内存,8x3TB RAID6上的XFS从'/ mnt / storage'导出为'video1'
机器2'storage1':Phenom X2 @ 3.2Ghtz w / 8GB ram,5x2TB上的ZFS从/ mnt / storage1-storage导出为'storage1'
本地写入性能:
mackek2@video1:/mnt/storage/testing$ dd if=/dev/zero of=localwrite10GB bs=5000k count=2000
2000+0 records in
2000+0 records out
10240000000 bytes (10 GB) copied, 16.7657 s, 611 MB/s
本地读取性能:
两者都连接到同一个HP千兆交换机,而iperf两种方式都能提供坚如磐石的940mbps。
我的问题是,当我从storage1写入video1导出时,性能无处不在。似乎对于前几(5-7)个文件传输(我希望尽快移动30-120GB AVCHD或MJPEG文件),性能从900mbps下降到150-180mbps,因此慢到30mbps。如果我重新启动NFS内核服务器,则性能会提高一些。
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=remoteWrite10GB count=2000 bs=5000K
2000+0 records in
2000+0 records out
10240000000 bytes (10 GB) copied, 223.794 s, 45.8 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=remoteWrite10GBTest2 count=2000 bs=5000K
2000+0 records in
2000+0 records out
10240000000 bytes (10 GB) copied, 198.462 s, 51.6 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=bigfile776 count=7000 bs=2000K
7000+0 records in
7000+0 records out
14336000000 bytes (14 GB) copied, 683.78 s, 21.0 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=/dev/zero of=remoteWrite15GB count=3000 bs=5000K
3000+0 records in
3000+0 records out
15360000000 bytes (15 GB) copied, 521.834 s, 29.4 MB/s
当事情进展很快时,客户端上的nfsiostat可以提供几毫秒的平均RTT,但是一旦性能下降,它的RTT最高可达1.5秒。此外,在写入过程中,CPU队列深度跳升到8以上。
现在,当从同一出口读取数据时,我得到的890Mbps传输速度很不错,整个读取速度为几mbps。
mackek2@storage1:/mnt/video1/testing$ dd if=remoteWrite10GBTest2 of=/dev/null
20000000+0 records in
20000000+0 records out
10240000000 bytes (10 GB) copied, 89.82 s, 114 MB/s
mackek2@storage1:/mnt/video1/testing$ dd if=remoteWrite15GB of=/dev/null
30000000+0 records in
30000000+0 records out
15360000000 bytes (15 GB) copied, 138.94 s, 111 MB/s
对于NFS服务器,与storage1相反,也会发生相同的事情。CPU队列猛增,速度下降到无法控制,我拔了头发。
我曾尝试将NFS守护程序的数量增加到多达64个,但经过数次演出后它仍然会消失。