![Почему rsync медленнее NFS?](https://rvso.com/image/1344723/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83%20rsync%20%D0%BC%D0%B5%D0%B4%D0%BB%D0%B5%D0%BD%D0%BD%D0%B5%D0%B5%20NFS%3F.png)
Использование 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, но даже в этом случае любое копирование должно быть ограничено 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 работает медленнее, чем NFS, если rsync привязан к процессору. rsyncмногоменее эффективен, чем NFS, когда дело доходит до простой передачи данных. В моем случае rsync потреблял 100% ресурсов ЦП, тогда как NFS требовалось только 20%, и NFS все равно был быстрее в 3 раза. Это означает, что rsync потреблял в 15 раз (!) больше ресурсов ЦП, чем NFS, для того же объема сетевого трафика. Я передавал большие файлы.
Лучшим подходом в таком случае будет смонтировать каталог с помощью NFS на более быстрой машине и скопировать файлы с помощью rsync локально.
См.Статья в LWNчеловека с похожей проблемой.
решение2
RSync выполнит свою домашнюю работу, прежде чем приступить к проверке того, является ли копирование обязательным.
Если бы у вас уже были локальные версии одинаковых файлов, rsync бы победил, потому что он умнее.