web-dev-qa-db-ja.com

ネットワーク上のパイプライン(RSHおよびSSH)のパフォーマンスを最適化する方法

次のようなリモートシェル(RSH)を備えたレガシーシステムのパイプラインネットワークを介したデータ転送について考えてみます。

rsh Host -l user tar -cf - /home/dir \| compress | uncompress | tar -xvf -

そしてこれは「現代の」システムにあります:

ssh user@Host tar -cf - /home/dir \| gzip | ungzip | tar -xvf -

パフォーマンスの問題:

RSHを使用してAIX4.3からAIX5.3への転送を実行すると、パフォーマンスが非常に悪くなりました。アイドルスイッチを介してアイドルカード(10/100)を接続していても、5.4GBを転送する約350Kbpsのパフォーマンスが得られました。

この転送をAIX5.3とLinuxの間で実行し、SSHとgzipを使用すると、パフォーマンスは大幅に向上しますが、ネットワーク容量に達することはありません(1ギガビットLANでは平均約400Mbpsになります)。

ネットワークパイプラインのパフォーマンスを最適化する方法はありますか?パイプバッファーまたはネットワークブロック/バッファーをカスタマイズすることはできますか?

3
Luciano

少なくともsshの部分では、帯域幅が制限されるのではなく、CPUが制限されるようになっていると思います。

サーバーでの暗号化/復号化が制限要因であるため、2つのアイドル状態のサーバー間でscp(ssh cp)を使用して約45〜50 MB/sを取得します。 gzip/ungzipを追加すると、使用可能なコアの量によってはさらにドロップする可能性があります。

圧縮されていない転送と暗号化されていない転送の方が数値が高くなります。圧縮コマンドなしで試して、それがどのように行われるかを確認できます。

3
JRiis

圧縮とディスクI/Oを除外するために、基本的な速度テストをまだ実行しましたか?

これは非常に簡単で、影響を受けるホストの1つからftp経由で別のホストに接続し、実行します。
put "|dd if=/dev/zero bs=1M count=1000″ /dev/null
一方の側で/ dev/zeroから1GBを読み取り、もう一方の側で/ dev/nullに書き込みます。これにより、純粋なネットワーク帯域幅がテストされます。これは、より詳細に説明されています。で
AIXChangeブログ:ネットワークパフォーマンスを測定する2つの方法

Scpを介した転送の場合、scpのオプションとして-o Cipher=arcfour ...を介した要求の少ないストリーム暗号(RC4)を使用して、暗号化を減らすことができます。

参照 関連する質問 圧縮を有効にするために-Cの使用を提案しますが、あなたの場合、CPUパフォーマンスが制限要因であり、ネットワーク帯域幅ではないため、圧縮はおそらく事態を悪化させます。

1
doktor5000