web-dev-qa-db-ja.com

VM XCP-ng(XEN)サーバー間の転送速度

RAID 1 +0セットアップのHPp420RAIDコントローラーに4x1TBのHPDL380G8サーバーが2台あります。 Eth0はルーターに接続され、Eth3とEth4は結合(LACP)され、マシン間で直接接続されます。

走ったら

#!/bin/bash
clear

echo 'Starting disk speed analysis..'
echo -e '\n  Reading different size files (1M, 100M, 1G):\n \e[93m'

dd if=/dev/sda of=/dev/zero iflag=direct bs=1M count=1000 &> test-results.log
tail -1 test-results.log

dd if=/dev/sda of=/dev/zero iflag=direct bs=100M count=10 &> test-results.log
tail -1 test-results.log

dd if=/dev/sda of=/dev/zero iflag=direct bs=1G count=1 &> test-results.log
tail -1 test-results.log

echo -e '\n  \e[39mWriting different size files (1M, 100M, 1G):\n \e[93m'
dd if=/dev/zero of=/root/testfile oflag=direct bs=1M count=1000 &> test-results.log
tail -1 test-results.log

dd if=/dev/zero of=/root/testfile oflag=direct bs=100M count=10 &> test-results.log
tail -1 test-results.log

dd if=/dev/zero of=/root/testfile oflag=direct bs=1G count=1 &> test-results.log
tail -1 test-results.log

rm test-results.log
echo -e '\e[39m'

私は得る:

Reading different size files (1M, 100M, 1G):
1048576000 bytes (1.0 GB) copied, 2.81374 s, 373 MB/s
1048576000 bytes (1.0 GB) copied, 1.98058 s, 529 MB/s
1073741824 bytes (1.1 GB) copied, 1.88088 s, 571 MB/s

Writing different size files (1M, 100M, 1G):
1048576000 bytes (1.0 GB) copied, 0.871918 s, 1.2 GB/s
1048576000 bytes (1.0 GB) copied, 3.08039 s, 340 MB/s
1073741824 bytes (1.1 GB) copied, 3.2694 s, 328 MB/s

そして

Reading different size files (1M, 100M, 1G):
1048576000 bytes (1.0 GB) copied, 2.80229 s, 374 MB/s
1048576000 bytes (1.0 GB) copied, 2.50451 s, 419 MB/s
1073741824 bytes (1.1 GB) copied, 2.136 s, 503 MB/s

Writing different size files (1M, 100M, 1G):
1048576000 bytes (1.0 GB) copied, 1.64036 s, 639 MB/s
1048576000 bytes (1.0 GB) copied, 3.48586 s, 301 MB/s
1073741824 bytes (1.1 GB) copied, 4.5464 s, 236 MB/s

これはかなりの速度のようですが、結合されたネットワークを介して100GbサイズのVM)を別のマシンに移行しようとすると、最大60MB /秒のネットワーク転送速度と転送時にそのWMが実行されている場合は120MB/s。

ネットワークvsシングルのストレージ速度VM transfer

ただし、ストレージI/Oレートは非常に高くなる可能性があります。ネットワーク速度をはるかに上回ります。oストレージ速度は問題ではないと思います。

VPN経由で接続されたXCP-ngCenterを使用しています。その新規インストールであるXCP-ngはv7.6です。

理想的には、サーバー間で約2x125 MB/sの転送速度が期待されますが、これが発生しない理由はありますか?

たぶん、同じようなスタックを持っている人なら誰でも経験を共有できますか?ありがとう!

4
Sakvojage

送信元と宛先のIPアドレスが固定されているため、ここではボンディングは役に立ちません。 LACPは、これらのIPアドレス(およびオプションでTCPポート番号)に基づいてハッシュを計算し、使用する物理リンクを決定します。したがって、単一のTCPセッションが常に同じ物理リンク上の同じフローからのパケット。

ギガビットイーサネットインターフェースは 8b/10bエンコーディング を使用しているため、レイヤー2、3、4のオーバーヘッドを含め、最大800Mbpsで送信できます。のオーバーヘッドを考えると:

  • 18バイトのイーサネットヘッダー
  • IPヘッダー用に20バイト。そして
  • TCPヘッダーの場合は20バイト

これにより、1518バイトのレイヤー2フレームあたり58バイトのオーバーヘッド、つまり約4パーセントが得られます。これを800Mbps(= 100MB/s)から引くと、最大96MB/sになります。 パケット間ギャップ はまだ除外されています。これはギガビットイーサネットでは96nsです。

したがって、得られる速度は、予想されるほど異常ではありません。

編集して回答 rjt の質問:

LACPは、1つまたは複数(最大16がアクティブになることができる16まで)の物理インターフェースを結合する仮想インターフェースを作成するプロトコルです。このプロトコルは、サーバー、ルーター、スイッチに実装できます。ただし、リンクの一端がスイッチである必要はありません

LACPはラウンドロビンを使用できません。以下は、CCIE Routing&Switching v5.0、CCIE試験の公式認定ガイド、155ページ(私の強調)からの引用です。

このハッシュ関数は決定論的です。つまり、単一フロー内のすべてのフレームが同じハッシュ値を生成するため、同じ物理リンクを介して転送されます。したがって、使用可能な帯域幅の増加は、単一のフローでは発生しません。むしろ、複数のフローが複数のリンクに分散される可能性があり、より高い集約スループットを実現します。単一のフローが単一のリンクによって運ばれ、したがって帯域幅の増加の恩恵を受けないという事実は、不利と見なすことができます。ただし、このアプローチでは、フレームの並べ替えも防止されます。 EtherChannelは透過的なテクノロジーであるため、このプロパティは非常に重要です。プレーンイーサネットでは見られないような障害が発生しないようにする必要があります。

4
Tommiie