Почему rsync медленнее, чем NFS?

Использование rsync для копирования некоторых больших файлов (по 24 МБ каждый):

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

Как это может быть? Сжатие или шифрование не используются, однако загрузка ЦП на стороне сервера составляет 100%. Это NAS с медленным процессором ARM, но даже в этом случае любое действие копирования должно быть ограничено вводом-выводом.

Файл 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

2 ответа

Решение

rsync медленнее, чем NFS, если rsync привязан к процессору. rsync гораздо менее эффективен, чем NFS, когда речь идет о простой передаче данных. В моем случае rsync потребляла 100% ЦП, в то время как NFS требовалось только 20%, а NFS был все еще быстрее в 3 раза. Это означает, что rsync потреблял в 15 раз (!) Больше ресурсов ЦП, чем NFS, для того же объема сетевого трафика. Я передал большие файлы.

Наилучшим подходом в таком сценарии является монтирование каталога с NFS на более быстрой машине и локальное копирование файлов с помощью rsync.

Смотрите статью LWN о ком-то с подобной проблемой.

RSync собирается сделать свою домашнюю работу, прежде чем начать, чтобы убедиться, что копирование является даже обязательным требованием.

Если у вас уже были локальные версии файлов, которые были одинаковыми, rsync выиграл бы, потому что он умнее.

Другие вопросы по тегам