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を使用しているとき)、サーバーのパフォーマンスが低下するため、すばやく「ハック」して修正しようとしましたそれは少し。
--rsync-path
オプション。
rsync --rsync-path="Nice rsync" foo remotebox:/tmp/
--rsync-path
オプションを取ると、rsync --rsync-path="ionice -c 3 Nice -n 12 rsync" localDirectory remoteHost:/tmp/
/etc/default/rsync
RSYNC_Nice='17'
値とRSYNC_IONICE='-c3'
値を変更またはコメント解除できます両方のionice値は、ハードディスクの優先順位になります
Linuxでは、cfq
スケジューラのみが実際にIOクラスと優先度を実装することに注意してください。リモートシステム管理者がIOスケジューラnoop
、deadline
、またはその他のエキゾチックなバリアントを選択している場合、ionice
が実際には何も実行しないことがわかります。 cfq
から高いパフォーマンスを得ることができ、さらにcfqを正しく チューニングすることによってIOクラスと優先度を使用できるようにする必要があります 。
プロセッサの優先順位のNice値
すばやくダーティな解決策は、次のような実際のrsyncバイナリの前に$ PATHをシャドウする 'rsync'と呼ばれる小さなラッパースクリプトを作成することです。
#!/bin/sh
Nice -10 /path/to/proper/rsync $*
または、authorized_keysファイルをセットアップして、rsyncのナイシングを実行します。 (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
-z
引数を含めないことで、ネットワークに沿った圧縮を無効にできます。これにより、どちらかの側でCPU時間を節約できます。または、rsyncがチェックサムを使用する方法を変更して、--checksum
を確認してください
Rsyncは多くのCPUを使用するべきではありません。もう一方の端から特定の快適さを強制できるとは思えませんが、できることは、rsyncがファイアウォールで使用している帯域幅を制限することです。これにより、最終的にX時間で実行できる処理量が減少します。