rsync が NFS より遅いのはなぜですか?

rsync が NFS より遅いのはなぜですか?

rsync を使用していくつかの大きなファイル (各 24 MB) をコピーします。

bronger@steed:/tmp$ time rsync -r root@my_nas::media/distortion .
Password: 

real    0m18.128s
user    0m2.600s
sys     0m5.756s

(パスワード入力にかかる 2 秒を差し引きます。) 次に、NFS で同じことを行います。

bronger@steed:/tmp$ time cp -a /mnt/media/distortion .

real    0m5.569s
user    0m0.036s
sys     0m2.128s

なぜこんなことが起こるのでしょうか? 圧縮や暗号化は行われていないのに、サーバー側の CPU 使用率は 100% です。これは低速の ARM CPU を搭載した NAS ですが、それでもコピー操作は IO によって制限されるはずです。

rsyncd.conf ファイルには次のように書かれています:

pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
use chroot = no

[media]
path = /volume1/media 
comment = Main volume                      
fake super = yes                         
uid = 1000
gid = 1000    
read only = no
list = yes     
charset = utf-8  
auth users = root                 
secrets file = /etc/rsyncd.secrets

答え1

rsyncはCPU依存の場合NFSより遅くなります。rsyncは多くの単なるデータ転送に関しては、NFS よりも効率が悪いです。私の場合、rsync は CPU を 100% 消費しましたが、NFS は 20% しか消費せず、それでも NFS の方が 3 倍高速でした。つまり、同じ量のネットワーク トラフィックに対して、rsync は NFS よりも 15 倍 (!) 多くの CPU リソースを消費したことになります。私は大きなファイルを転送しました。

このようなシナリオでは、ディレクトリを NFS で高速なマシンにマウントし、rsync を使用してファイルをローカルにコピーするのが最善のアプローチです。

を参照してくださいLWN記事同様の問題を抱えている人の。

答え2

RSync は、コピーが必須であることを確認するために、開始する前に十分な調査を行う予定です。

すでに同じファイルのローカル バージョンがある場合、rsync の方がスマートなので、rsync が勝利します。

関連情報