web-dev-qa-db-ja.com

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

100MBit接続で約4500万ファイル/約1.8 TBデータ(Mac OS X Time Machineバックアップ)を転送するrsyncジョブを実行します。

MacPortsのrsync3.1.1を使用します(Mac OS X固有のキャッシュパラメーターがあるため、最初に組み込みのrsyncバージョン2.6.9を試しましたが、メモリが不足しました)。

rsync -HzvhErlptgoDW --stats --progress --out-format="%t %f %b" /source/ /destination/

ソースはFirewire800に接続された外付け3.5インチHDDです。宛先はローカルにマウントされたスパースディスクイメージバンドルです(ただし、その「ソースファイル」はネットワークストレージにあります)。最初は7〜9 MB/sの速度でした。適度に大きなファイルですが、この操作が長く続くと(3日前に再起動しました)、処理が遅くなります。次のように、何も起こらない場合にも長い一時停止があります。

2011-01-22-070305/Macintosh HD/Library/Application Support/Apple/Mail/Stationery/Apple/Contents/Resources/Photos/Contents/Resources/Bamboo.mailstationery/Contents/Resources/Mask3.png
          1.28K 100%    3.26kB/s    0:00:00 (xfr#48406, ir-chk=1050/4166332)
2016/01/16 18:26:48 Volumes/src/Backups.backupdb/mm/2011-01-22-070305/Macintosh HD/Library/Application Support/Apple/Mail/Stationery/Apple/Contents/Resources/Photos/Contents/Resources/Bamboo.mailstationery/Contents/Resources/Mask3.png 313
2011-01-22-070305/Macintosh HD/Library/Application Support/Apple/Mail/Stationery/Apple/Contents/Resources/Photos/Contents/Resources/Bamboo.mailstationery/Contents/Resources/banner-green.jpg
         32.26K 100%    0.00kB/s    0:00:00 (xfr#48407, ir-chk=1049/4166332)
2016/01/16 19:17:37 Volumes/2TB/Backups.backupdb/mm/2011-01-22-070305/Macintosh HD/Library/Application Support/Apple/Mail/Stationery/Apple/Contents/Resources/Photos/Contents/Resources/Bamboo.mailstationery/Contents/Resources/banner-green.jpg 31279

(タイムスタンプを太字にすることはできませんでしたが、ご覧のとおり、最初のファイルは18:26、2番目のファイルは19:17、2番目のファイルはわずか32 kBで終了しています)

転送はCPUに制限されているとは思いません。いくつかのCPUスパイクがありますが、一般的にCPU負荷は10%未満です。この操作によって生成された3つのrsyncプロセスは、全体として、転送が行われている72時間でほぼ正確に5時間のCPU時間を使用しました。コンピューター自体は1日23時間アイドル状態になります。

記憶も問題ではありません。動作開始以来、メモリ圧力は「グリーン」になっています。

カーネルタスクはかなりのCPU時間(私がこれを書いているときは57時間)を蓄積しましたが、一方で、稼働時間は25日であり、これらすべての57時間はrsyncによって消費されていません。

いくつかの最終的な詳細

  • 3日前にログを改善するために再起動したとき、このプロセスを数日間実行していました。最初のファイルが転送されるまでに9時間かかりました。
  • 私は最初にFinderを使用して、このディレクトリツリーを同じソースから同じ宛先に転送しました。全部で3日かかりました。今、私は6日間を過ごしましたが、木の3分の1を移したことすらなかったと思います。
  • この操作以外で同じソースと宛先の間でファイルを転送しようとしましたが、フルスピードで実行されます。
4
d-b

宛先は、ローカルにマウントされたスパースディスクイメージバンドルです(ただし、その「ソースファイル」はネットワークストレージ上にあります)

これがあなたの問題です。ローカルマシンとネットワークストレージ(SMB、AFP、NFSなど)の間でデータをバックホールするプロトコルのパフォーマンスが不十分であることがわかります。よくある落とし穴です。

Rsyncは、送信するビットを確認するために、各ファイルを読み取る必要があります(日時が異なる場合)。あなたの状況では、ファイルシステムは、rsyncが読み取る前に、ファイル全体をネットワークストレージからローカルMacにプルしています。あなたの減速があります。

N.B.そのネットワークの裏付けについて非常に明確であったことに対する称賛。

1
dave