なぜrsyncがそんなに遅いのですか?


42

私のラップトップとワークステーションは両方ともギガビットスイッチに接続されています。両方ともLinuxを実行しています。しかしrsync、でファイルをコピーすると、パフォーマンスが低下します。

約22 MB / sを取得します。理論的に約125 MB / sを取得すべきではありませんか?ここでの制限要因は何ですか?

編集:私はいくつかの実験を行った。

ラップトップでの書き込みパフォーマンス

ラップトップには、完全なディスク暗号化を備えたxfsファイルシステムがあります。aes-cbc-essiv:sha256256ビットのキー長で暗号モードを使用します。ディスクの書き込み性能は、58.8メガバイト/秒

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

ワークステーションでの読み取りパフォーマンス

コピーしたファイルは、5つのHDD上のソフトウェアRAID-5上にあります。RAIDの上にはlvmがあります。ボリューム自体は同じ暗号で暗号化されています。ワークステーションには、暗号化を高速化するネイティブAES-NI命令セットを持つFX-8150 CPUがあります。ディスク読み取りパフォーマンスは256 MB / sです(キャッシュはコールドでした)。

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

ネットワーク性能

2つのクライアント間でiperfを実行しました。ネットワークパフォーマンスは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://プロトコルまたはSSH経由のトンネリング?後者には非常に明確なパフォーマンスの制限があります¹
一時的な

回答:


18

高いCPU使用率を緩和しながらrsyncの機能を維持する別の方法は、rsync / SSHからrsync / NFSに移行することです。NFS経由でコピーしたいパスをエクスポートし、NFSマウントから目的の場所にローカルでrsyncを使用できます。

WD MyBook Liveネットワークディスクからの1つのテストでは、ギガビットネットワーク上のNASから2つのローカルUSBディスクへの1つ以上のrsyncは、エクスポート後に10MB /秒(CPU:80%usr、20%sys)を超えてコピーしませんNFSとNFS共有から両方のディスクへのローカルでのrsyncing合計45MB /秒(両方のUSB2ディスクを最大化)でCPU使用量はほとんどありませんでした。rsync / SSHを使用した場合のディスク使用率は約6%で、rsync / NFSを使用した場合は24%近くでしたが、両方のUSB2ディスクは100%近くでした。

そこで、ボトルネックをNAS CPUから両方のUSB2ディスクに効果的に移動しました。


4
ただし、NFSはセキュリティ(つまり、暗号化)を提供しないことに注意してください。
-WhyNotHugo

これはうまくいきました!今では、〜100 Mb / sしか取得できなかったときに、ほぼ完全なギガビット速度が得られます。
PHLAK 14年

1
rsync / NFSの使用方法を教えてください。私は2つのMyCloudドライブ間で8TBを転送しようとしていると、それは、SSH(4メガバイト/秒)上のrsyncで永遠に取る
FMaz008

26

理由には、圧縮、暗号化、コピーされるファイルの数とサイズ、ソースおよび宛先システムのディスクI / O機能、TCPオーバーヘッドなどがあります。これらはすべて、実行する転送のタイプに影響を与える要因です。

使用しているrsyncコマンドを投稿し、両方のコンピューターの仕様の詳細を提供してください。


編集:多くの場合、暗号化はrsync速度の制限要因です。sshと、より軽量な暗号化暗号を使用して実行できますarcfour

何かのようなもの: rsync -e "ssh -c arcfour"

または、暗号化を無効にできる修正されたrsync / sshを使用できます。hpn-sshを参照してください:http ://psc.edu/networking/projects/hpn-ssh

しかし、再び、ラップトップはワークステーションに比べて遅いドライブを持っています。書き込みがブロックされ、ラップトップへのI / Oを待機している場合があります。あなたの本当のパフォーマンス期待は何ですか?


1
ラップトップは、消費電力が少ないため、低速(7200 rpm-5400 rpm)のディスクを持っていることがよくあります。これは、rsyncの実行内容に応じて、簡単に制限要因になる可能性があります。
ラダダダダ

1
ありがとう。以下のためrsyncningDM-cryptのに原子プロセサに添付暗号化されたディスクのeCryptfs ARM NASボックス、これは4MiBから私の転送速度を変更/ 6MiBにS / S。rsync --protocol=29 -auh --progress /mnt/esata/pics/ -e "ssh -c arcfour" diskstation:/volume1/pics何もないよりマシ。
セバスチャン

この答え。rsync -azPからrsync -aPe "ssh -c arcfour"に移行すると、2つのMyCloudミラードライブ間の転送速度が4MB /秒から25MB /秒に向上しました。受信ユニットのCPUが最大になりました。(私はユニットがデータを書き込むことができますように高速として譲渡するんだ、これが平均だと思う)
FMaz008

10

さらにテストを重ねた結果、最終的に自分で答えを見つけました。rsyncデフォルトでsshを介したトンネリングを使用します。暗号化により遅くなります。だから私はその暗号のものを回避する必要がありました。

解決策1:rsyncサーバーをセットアップする

rsyncプロトコル経由で使用するには、rsyncdサーバーをセットアップする必要があります。/etc/init.d/rsyncラップトップにスクリプトがあったので、rsyncdが実行されていたと思います。私は間違っていた。/etc/init.d/rsync startでrsyncが有効になっていない場合、静かに存在し/etc/default/rsyncます。次に/etc/rsyncd.conf、で設定する必要もありますが、これは苦痛です。

これをすべて完了したら、を使用する必要がありますrsync file.foo user@machine::directoryコロン2つあることに注意してください。

解決策2:古い学校のrshサーバー

しかし、構成は私にとって非常に複雑でした。だから私はちょうどrsh-serverラップトップにインストールしました。-e rexecその後、ワークステーションでrsyncを呼び出すと、sshではなくrshが使用されます。その結果、パフォーマンスはほぼ倍増して44.6 MB / sになりましたが、それでもまだ低速です。間の速度バウンス58メガバイト/秒33メガバイト/秒一部バッファ又は輻輳制御の問題があるかもしれない示します。しかし、それはこの質問の範囲を超えています。


2
ここではrsyncを広範に使用しており、通常、何百万もの4Kファイルをスキャンしない限り、完全なインターフェース速度が得られます。深刻な老朽化したハードウェアを使用していない限り、暗号化が問題になるとは思わない。
マゼラン

ThinkPad R61のIntel Core2 Duo T8100は深刻な老朽化したハードウェアとしてカウントされますか?そうでない場合、なぜrsh over rshはrsh over rshより遅いのですか?
iblue

5
暗号化は、多くの場合、ファイルの数とともにrsync速度の制限要因です。これを改善する標準的なアプローチは、より軽い暗号化方式でrsyncを実行するか、rsync -e "ssh -c arcfour"暗号化を無効にできる修正されたrsync / sshを試すことです。参照hpn-sshpsc.edu/networking/projects/hpn-ssh
ewwhite

2

これらは非常に古い質問と回答ですが、重要なことが1つありません。すでに圧縮または暗号化されたデータをコピーする場合は、圧縮をオフにします。

データが圧縮も暗号化もされていない場合でも、一度だけ圧縮したいだけです!Rsyncは-zで圧縮し、sshは-Cで圧縮します(デフォルトの場合があります)。データは圧縮されているため、どちらの方が良いかはテストしていません。

私がそれに取り組んでいる間に、X転送とTTY割り当てをオフにすることができます。

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

最後に、使用iptrafしていると思われるネットワークインターフェイスを実際に使用していることを確認します(たとえば、使用中)。私の驚いたことに、OSXでは、発信sshが、パケットがルーティングされるはずのインターフェースのIPではなく、デフォルトの発信インターフェースのIPにバインドされていました。WiFiで接続された2台のラップトップ間の直接GBクロスコネクトは使用されていませんでした。調査後、Macがすべてのインターフェイスに配置する169.254 / 16を使用したことと、リクエストが別のインターフェイスで受信された場合でも宛先コンピューターがARPリクエストに応答したことが原因でした。


有効なオプションですが、-x -Tおよび-o Compression = noは転送速度にほとんど影響しません。
FMaz008

4
OpenSSH 6.7がarcfourを無効にすることにも言及する価値があります。
-bparker

それは残念な@bparkerです!残りの利用可能な暗号のうち、CPUで最も軽い暗号を知っていますか?
法律
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.