リモートマシン上の素敵なrsync


25

rsync + sshを使用してリモートマシンにアクセスする場合、リモートマシンのrsyncプロセスを「ナイス」にする方法はありますか(優先度を下げるため)。

質問を編集して明確にする:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
backups  16651 86.2  0.1   3576  1636 ?        Rs   11:06   0:06 rsync --ser...

(rsync行が省略されています)

これは通常午前4時に実行されるバックアップcronジョブですが、起きたときに(そして同じマシンでホストされているBugzillaを使用してコミットすると)サーバーのパフォーマンスが低下するため、手早く「ハック」して修正しようとしましたそれは少し。

回答:


35

--rsync-pathたとえば、オプションを使用できます。

rsync --rsync-path="nice rsync" foo remotebox:/tmp/

15
たとえば、最新のLinuxではniceプロセスのIO優先順位が自動的に低下しますが、ioniceの使用を検討することもでき--rsync-path="ionice -c 3 nice rsync"ます(リンクされているmanページを参照)。
ジョーリス

私はすでにそれを試しましたが、私のsshdはまだ実行されていますnice 0
フェリペアルバレス14

あなたが持っていないシステムのようなFreeBSD ioniceでは、--bwlimitオプションを設定することは、より良いrsyncに適しています。
deed02392

1
また、このオプションに違いが出ないという問題もありました。私が接続していたサーバー--rsync-pathは、指定したオプションを無効にしていた特定のrsyncコマンドのみを受け入れるようにauthorized_keysで設定されていました。
アンディビバリー

7
  • あなたが持っている--rsync-pathオプションを取るrsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • 撮影設定ファイルのオプションは、ファイルに変更することができますまたはコメント解除値と値を/etc/default/rsyncRSYNC_NICE='17'RSYNC_IONICE='-c3'

両方のionice値は、ハードディスクの優先度になります

  • 1->リアルタイム
  • 2->ベストエフォート
  • 3-> Ildle(他のプロセスがHDを使用していない場合)

Linuxの場合、cfqスケジューラーだけがIOクラスと優先順位を実際に実装することに注意してください。リモートシステム管理者がIOスケジューラーnoopdeadlineまたはよりエキゾチックなバリアントを選択した場合、ionice実際には何も実行されないことがあります。cfqを正しく調整するcfqことにより、IOクラスと優先順位を使用して高いパフォーマンスを得ることができるはずです。

以下のための素敵なプロセッサの優先度の値

  • -20(プロセスに最も有利)
  • (デフォルト10)-nが指定されていない場合
  • 19(プロセスに最も好ましくない)

誰が責任を負い/etc/default/rsyncますか?rsync自体がこのファイルを読み取っていますか、それともlinux-flavor / distributionによって行われていますか?
ゲットリ

...解決策/etc/default/rsyncはrsyncデーモンモードのデフォルトファイルであることがわかったと思います。rsync-protocolを介してrsyncデーモンに接続する場合にのみ適用されると思います。ssh経由で呼び出した場合は適用されないと思います。
ゲットリ

2

迅速で汚い解決策は、実際のrsyncバイナリの前に$ PATHをシャドウする 'rsync'と呼ばれる小さなラッパースクリプトを作成することです。

#!/bin/sh
nice -10 /path/to/proper/rsync $*

または、rsyncのnicingを実行するようにauthorized_keysファイルをセットアップします。(sshキーを使用していると仮定)。

例:

command=”/home/user/bin/nice-rsync.sh" ssh-dss asdf....

これで/home/user/bin/nice-rsync.sh

#!/bin/sh
case $SSH_ORIGINAL_COMMAND in
  rsync\ --server*)
    nice -10 $SSH_ORIGINAL_COMMAND
    ;;
  *)
    $SSH_ORIGINAL_COMMAND
    ;;
esac

HTH


2

-z引数を含めないことで、ネットワークに沿った圧縮を無効にできます。これにより、どちらかの側でCPU時間を節約できます。または、rsyncがチェックサムを使用する方法を変更します。--checksum


Hasturkunの答えを受け入れました(質問に答えたため)。しかし、あなたは良い点を持ち出しました。-avzをフラグとして使用することに慣れて、-zを落とすことを考えたことがありません。
mwalling 2009

私の習慣は-aPhを使用することです、私はめったに-z使用しない
ロリー・

0

RsyncはCPUをあまり使用しないでください。相手から特定の良さを強制できるとは思いませんが、rsyncがファイアウォールで使用する帯域幅を制限することで、最終的にX時間で処理できる量を減らすことができます。


「ps aux」からの出力を追加して、CPUに関する限りの処理を示します。低速リンクを経由しているので、--compressオプションを有効にしますが、これはかなりの量のディスクアクセスも引き起こします。これは、素敵な(意図しない副作用)
mwalling

nice値を設定すると、通常、I / O nicenessにも影響します。
Bram Schoenmakers

rsyncCPUをあまり必要としませんが、topそれでも現在のカーネルがI / O待機をビジーと見なすかどうかに応じて表示される場合があります。さらに、他のプロセスがストレージにアクセスする必要があり、フルペースでrsync実行できる場合、他のすべてのプロセスは結果として遅くなります。
ミッコランタライネン

-7

私はそうは思わない、あなたはそのためのカスタムソリューションが必要です。


6
いいですね。リモートマシンで実行されるデーモンを使用せずにsshで実行できる(およびsshの固有の暗号化)、圧縮の転送、ダウンロードの再開、差分の転送のみなど、rsyncのすべての機能が必要な人...むくみ。今すぐ家に帰り、PS / 2 System 60を使ってアニメをFTPで送信します!
mwalling 2009

質問への回答に失敗し、質問の例よりも著しく悪い代替案を提示するため、この回答を削除してください。
-user1133275
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.