将文件并行复制到相同的NFS挂载是否有意义?

这是一个例子:

( cp /tmp/one /nfs/one ) & ( cp /tmp/two /nfs/two ) & ( cp /tmp/three /nfs/three ) & ( cp /tmp/four /nfs/four ) & ( cp /tmp/five /nfs/five ) & wait 

对于一个繁忙的NFS服务器,这样做是否会获得任何收益

 cp /tmp/one /nfs/one; cp /tmp/two /nfs/two; cp /tmp/three /nfs/three; cp /tmp/four /nfs/four; cp /tmp/five /nfs/five; 

我的想法是,我可能会花更多的时间在第一个例子中旋转子shell(特别是在一次多次执行此操作的计算机上,旋转了大量的用户进程),由于带宽和NFS inode更新限制,无法获得我什么都可以

有问题的文件在20k到2mb之间,一次不超过6个,并且它们总是被复制到相同的完整path(只是不同的文件名)。 在一系列服务器(〜50)上发生了大量的这些事情,所有这些都引用了同一小组的NFS挂载。

并行化可能无济于事。 这取决于一些事情:本地磁盘的速度,本地networking的速度以及服务器上的速度。

如果您的本地磁盘在执行单个副本时被挂起,则不会。 这不会有帮助。

如果您的本地networking在执行单个副本时被挂钩,则不会。 这不会有帮助。

如果您的NFS服务器的networking在执行单个副本时被挂钩,则不会。 这不会有帮助。

如果您的NFS服务器的磁盘在执行单个副本时被挂起,那么…您就可以看到图片。

确定是否有帮助的最好方法是重复进行两次操作,例如10次运行,以获得统计上有用的东西。 基本上,如果您在执行单一副本时发现上述四件事情中的任何一件都没有超出上述任何一项,那么您可能会看到并行执行的性能优势。 但只有testing会告诉你这一点。

由于一些文件是20K,你可能会花费一些带宽在操作上,而不是真正的写作。

iostat工具中有一个非常好的NFS -n选项,它可以显示你的IOPS在实际写入上花费的百分比。

 # iostat -nmht 20 Filesystem: ... rMB_svr/s wMB_svr/s ops/s rops/s wops/s nfsserv:/share ... 0.00 17.5 9660 0.00 4508 

请等待几个时期(每个时间段为20秒),以便iostat积累一些统计数据。

在这个例子中,只有一半的IOPS是写操作。 你也可以看到这里的块大小是4k。 您可能会通过重叠WOPS和非WOPS并行运行您的stream程来提高性能。

尝试观察NFS服务器上的CPU负载以及networking带宽利用率。 在具有磁盘arrays的NFS服务器上,运行多个进程应该有非常好的效果。