Rsync'im neden bu kadar yavaş?


42

Dizüstü bilgisayarım ve iş istasyonum bir Gigabit Switch'e bağlı. Her ikisi de Linux kullanıyor. Ancak dosyaları kopyaladığımda rsynckötü performans gösteriyor.

Yaklaşık 22 MB / s alıyorum. Teorik olarak yaklaşık 125 MB / s almamalı mıyım? Buradaki sınırlayıcı faktör nedir?

EDIT: Bazı deneyler yaptım.

Dizüstü bilgisayarda performans yaz

Dizüstü bilgisayar, tam disk şifrelemeli bir xfs dosya sistemine sahiptir. aes-cbc-essiv:sha256256 bit anahtar uzunluğunda şifre modunu kullanır . Diske yazma performansı 58.8 MB / sn'dir .

iblue@nerdpol:~$ LANG=C dd if=/dev/zero of=test.img bs=1M count=1024
1073741824 Bytes (1.1 GB) copied, 18.2735 s, 58.8 MB/s

İş istasyonundaki performansı oku

Kopyaladığım dosyalar 5 HDD üzerinden RAID-5 yazılımında. Baskın üstüne bir lvm. Birimin kendisi aynı şifre ile şifrelenmiştir. İş istasyonunda, şifrelemeyi hızlandıran yerel bir AES-NI komut seti olan bir FX-8150 işlemci var. Disk okuma performansı 256 MB / s (önbellek soğuktu).

iblue@raven:/mnt/bytemachine/imgs$ dd if=backup-1333796266.tar.bz2 of=/dev/null bs=1M
10213172008 bytes (10 GB) copied, 39.8882 s, 256 MB/s

Ağ performansı

İki müşteri arasında dolandım. Ağ performansı 939 Mbit / s

iblue@raven $ iperf -c 94.135.XXX
------------------------------------------------------------
Client connecting to 94.135.XXX, TCP port 5001
TCP window size: 23.2 KByte (default)
------------------------------------------------------------
[  3] local 94.135.XXX port 59385 connected with 94.135.YYY port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.09 GBytes   939 Mbits/sec

3
rsync: // protokolü veya SSH üzerinden tünel açma? İkincisi de çok kesin performans sınırlamaları var ¹ .
ephemient

Yanıtlar:


18

Yüksek CPU kullanımını azaltmak, ancak rsync'in işlevselliğini korumak için başka bir yol da, rsync / SSH'den rsync / NFS'ye geçmektir. NFS üzerinden kopyalamak istediğiniz yolları dışa aktarabilir ve daha sonra yerel olarak NFS montajından hedef konumunuza rsync kullanabilirsiniz.

Bir WD MyBook Live ağ diskinden yapılan bir testte, bir Gigabit ağındaki NAS'tan 2 yerel USB diske doğru NAS'tan bir veya daha fazla rsyncs, dışa aktardıktan sonra 10 MB / sn'den daha fazla kopyalamaz (CPU:% 80 usr,% 20 sys) NFS ve yerel olarak NFS paylaşımından her iki diske de rsyncing yaparak toplam 45 MB / sn (hem USB2 disklerini maksimize ediyor) hem de çok az CPU kullanımı elde ettim. Rsync / SSH kullanırken disk kullanımı yaklaşık% 6 ve rsync / NFS kullanımı% 24'e yaklaşırken her iki USB2 diski de% 100'e yakındı.

Bu yüzden tıkanıklığı NAS CPU'dan her iki USB2 diske de etkili bir şekilde taşıdık.


4
Yine de, NFS'nin güvenlik sağlamadığı konusunda uyarılmalıdır (ör: şifreleme).
WhyNotHugo

Bu harika çalıştı! Şimdi daha önce sadece ~ 100 Mb / s elde ettiğimde neredeyse tam gigabit hızları alıyordum.
PHLAK

1
Rsync / NFS'nin nasıl kullanıldığını gösterir misiniz? 2 MyCloud sürücüsü arasında 8Tb aktarmaya çalışıyorum ve sonsuza dek ssh üzerinden rsync ile sürüyor (4MB / sn)
FMaz008

26

Sebepler şunları içerebilir: sıkıştırma, şifreleme, kopyalanacak dosyaların sayısı ve boyutu, kaynak ve hedef sistemlerinizin disk G / Ç yetenekleri, TCP ek yükü ... Bunlar, yürüttüğünüz aktarma türünü etkileyebilecek faktörlerdir.

Lütfen kullandığınız rsync komutunu gönderin ve her iki bilgisayarın da özellikleri hakkında ayrıntılı bilgi verin.


Düzenleme: Şifreleme genellikle rsync hızlarında sınırlayıcı bir faktördür. Ssh ve benzeri hafif bir şifreleme şifresi ile çalıştırabilirsinizarcfour

Gibi bir şey: rsync -e "ssh -c arcfour"

Veya şifrelemeyi devre dışı bırakabilen değiştirilmiş bir rsync / ssh kullanabilirsiniz. Bkz. Hpn-ssh: http://psc.edu/networking/projects/hpn-ssh

Ancak yine, dizüstü bilgisayarınızda iş istasyonunuza kıyasla daha yavaş bir sürücü var. Yazma engellenmiş olabilir ve dizüstü bilgisayarınız için G / Ç'yi bekliyor olabilir. Gerçek performans beklentileriniz neler?


1
Dizüstü bilgisayarlarda genellikle daha yavaş (7200 rpm - 5400 rpm) disk bulunur, çünkü daha az güç kullanırlar. Bu, rsync'in tam olarak ne yaptığına bağlı olarak kolayca sınırlayıcı faktörünüz olabilir.
Ladadadada

1
Teşekkürler. İçin rsyncningbir gelen dm-kript bir bir atom processer bağlı şifrelenmiş diskin eCryptfs ARM NAS kutusu, bu 4MiB benim aktarım hızı / değiştirilir 6MiB için s / s. rsync --protocol=29 -auh --progress /mnt/esata/pics/ -e "ssh -c arcfour" diskstation:/volume1/picsHiç yoktan iyidir.
Sebastian

Bu cevap Rsync -azP'den rsync -aPe'ye geçiş "ssh -c arcfour", iki MyCloud Mirror sürücüsü arasında aktarım hızını 4 MB / sn'den 25 MB / sn'ye yükseltti. Alıcı birim CPU şimdi maksimize edildi. (ünitenin veri yazabildiği kadar hızlı transfer ettiğimi düşünün)
FMaz008

10

Biraz daha testten sonra nihayet cevabı kendim buldum. rsyncvarsayılan olarak ssh üzerinden tünellemeyi kullanır. Kripto yavaşlatıyor. Bu yüzden kripto işlerini halletmem gerekiyordu.

1. Çözüm: Bir rsync sunucusu kurma

rsyncProtokol ile kullanmak için , bir rsyncd sunucusu kurmalısınız. /etc/init.d/rsyncDizüstü bilgisayarımda bir komut dosyası vardı, sanırım rsyncd çalışıyordu. Ben hatalıydım. /etc/init.d/rsync startrsync etkin olmadığında sessizce var olur /etc/default/rsync. Öyleyse /etc/rsyncd.conf, onu bir acı olarak yapılandırmak zorundasın .

Bütün bunları yaptıysan, kullanmak zorundasın rsync file.foo user@machine::directory. Lütfen iki kolon olduğunu unutmayınız .

2. Çözüm: Eski okul rsh-server

Ancak, yapılandırma benim için çok karmaşıktı. Bu yüzden yeni kurdum ve rsh-serverdizüstü bilgisayarıma. İş istasyonunda rsync'i çağırmak -e rexecdaha sonra ssh yerine rsh kullanır. Daha sonra performansı neredeyse iki katına çıkaran 44.6 MB / sn . Hız, 58 MB / s ile 33 MB / s arasında sekerek , arabellek ya da tıkanıklık kontrolü sorunları olabileceğini gösterir. Ancak bu, bu sorunun kapsamı dışındadır.


2
Burada yoğun olarak rsync kullanıyoruz ve milyonlarca 4K dosyayı geçmedikçe genellikle tam arayüz hızına sahip oluyoruz. Bazı ciddi yıpranmış donanım kullanmıyorsanız kripto sorun olduğunu sanmıyorum.
Magellan

ThinkPad R61'deki Intel Core2 Duo T8100 ciddi bir şekilde eskimiş donanım sayılıyor mu? Değilse, neden ssh üzerindeki rsync, rsh yerine rsync'den daha yavaş?
iblue

5
Şifreleme genellikle dosya sayısı ile birlikte rsync hızlarında sınırlayıcı bir faktördür. Bunu geliştirmeye yönelik standart yaklaşımlar, ya rsync'i şifrelemeyi rsync -e "ssh -c arcfour"devre dışı bırakabilen değiştirilmiş bir rsync / ssh gibi daha hafif bir şifreleme şifresiyle çalıştırmaktır . Bakınız hpn-ssh: psc.edu/networking/projects/hpn-ssh
ewwhite

2

Bunlar çok eski bir soru ve cevaplar, ancak önemli bir şey eksik: Zaten sıkıştırılmış veya şifreli veri kopyalıyorsanız, sıkıştırmayı kapatın.

Verileriniz sıkıştırılmamış veya şifrelenmemişse, yine de yalnızca bir kez sıkıştırmak istersiniz! Rsync -z ile sıkıştırır, ssh -C ile sıkıştırır (varsayılan olarak olabilir). Verilerim sıkıştırıldığından beri hangisinin daha iyi olduğunu test etmedim.

Ben varken, X yönlendirme ve TTY tahsisini kapatarak sonuçlandı:

rsync -avh -e "ssh -x -T -c arcfour -o Compression=no" $src $dst

Son olarak, (örneğin kullanarak iptraf) gerçekte, kullandığınızı düşündüğünüz ağ arabirimini kullandığınızdan emin olun . OSX'imde giden ssh'nin, paketlerin yönlendirilmesi gereken arayüzdeki IP yerine varsayılan giden arayüzdeki IP'ye bağlandığını belirtti. Doğrudan GB ile bağlanan iki dizüstü bilgisayar arasındaki doğrudan GB bağlantım kullanılmıyordu. Soruşturmadan sonra, Mac'in tüm arayüzlere koyduğu 169.254 / 16'yı kullanmak isteniyordu ve istek farklı bir arayüzde olsa bile, ARP taleplerine cevap veren hedef bilgisayardı.


Geçerli seçenekler, ancak -x -T ve -o Sıkıştırma = 'nin transfer hızı üzerinde çok az etkisi olmadığını buldum.
FMaz008

3
Ayrıca OpenSSH 6.7'nin kemeri engellediğini de belirtmekte fayda var.
bparker

Bu biraz üzücü! İşlemcide kalan şifreli şifrelerin hangisinin en hafif olduğunu biliyor muyuz?
Yasa29,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.