iSCSIとAoEの両方のパフォーマンスが低い


9

手ごろな速度のストレージを探しています。低予算のため、ソフトウェアiSCSIまたはAoEターゲットを使用することにしました。生産インフラストラクチャを変更する前に、いくつかのテストを行って、最適なテクノロジーを選択しています。

テストに使用するもの:

  • ターゲットとしてのFujitsu Siemens RX200 S4
  • イニシエーターとしてのFujitsu Siemens RX200 S4
  • NetGearマネージド1GBitスイッチ
  • オンボードNIC(Broadcom w / TOE)、EdiMax NIC、Broadcom NIC w / TOE-すべて1GBit
  • ターゲットサーバーは、6 TBの2 TB WD Blue SATAドライブを備えたQLogicコントローラーを使用しています。
  • ターゲットとイニシエーターの両方のオペレーティングシステムがUbuntu 16.04 LTSであり、すべてのアップデートが適用されています。スイッチは保管専用です。結合とマルチパスをテストします。

私たちの問題は、読み取り速度が遅いことです。テストにはdd、40〜100 GBのファイルを使用しています。

  • ターゲットサーバーでのローカルの読み取りと書き込みは300 MB /秒以上です。
  • iSCSIまたはAoEによるサーバーへの書き込みは、200MB /秒以上であり、満足しています。
  • サーバーからの読み取りは常に95-99MB / sです。

私たちはietd、aoetools、LIOを試しました。2つのNICのボンドを使用しました。バランスrrとLACP、rrを使用したマルチパスです。通常およびジャンボフレームを使用。最後に、ターゲットとホスト間で直接イーサネット接続を行いました(スイッチなし)。

すべてのテストで得られる結果は同じではありません(もちろん、TOEとiSCSIなしで一般的なNICを使用すると、結果が20〜30%悪くなります)。

iperfを使用したテストネットワークでは、約200MB /秒(2GBit)の転送が見られました。bmonを使用してターゲットでNICの使用状況を監視すると、両方のデバイスの使用率が等しいことがわかりました(読み取りの場合はそれぞれ約50MB / s、書き込みの場合は約100MB / s)。

運が悪かったので、3番目のNIC(もちろん両面)を使用することにしました。結果は奇妙でした:

  • NIC 2枚-各50MB /秒
  • NIC x 3-各33MB /秒

1GBit / sを超える出力を無効にするターゲットソフトウェアに制限はありますか?

何が悪いのでしょうか?


5
最近、10GbEは十分に安価です。より多くの帯域幅が必要な場合(必要でない場合があります)、これが推奨されるパスです。
ewwhite 2016年

1
10 GbEはATAoEには役立ちません。これは非常にイーサネットフレームの効果のないプロトコルです。特にジャンボフレームに!
BaronSamedi1958 2016年

1
私はiSCSIについて言及していました。ATAoEは死んでおり、このために使用すべきではありません。
ewwhite

回答:


11

iSCSI接続ストレージから最大のパフォーマンスを引き出すには、ジャンボフレームとMPIO(LACPではない)を使用する必要があります。可能な場合は、RDMA / iSERをお勧めします。

AOE(ATA over Ethernet)は古く、たわごとです。私たちは何年も前にすでにコレイドを取り除いています。StarWind https://www.starwindsoftware.com/をiSCSIターゲットとしてかなり長い間使用しており、StarWindはCoraidから可能なストレージに移行するように依頼されました。

現在、StarWindが提供するiSCSIと、Linux上のWindows、ESX、およびSCST http://scst.sourceforge.net/をイニシエーターとして使用することで、非常に優れています。RDMA / iSERを使用すると、最大10ギガビットで、これまでのところ非常に満足しています。


6

イーサネットリンク集約がどのように機能するかについての予想は正しくありません。

balance-rr以外のすべての集約メソッド(つまり、モード> 0のすべてのメソッド)では、単一接続のスループットは向上しません。むしろ、影響を受けるホストとの間で複数の接続が確立されると、利用可能な帯域幅の合計が増加します。言い換えると、LAG / LACPは、この1つの接続のシナリオでは何のメリットもありません。

単一のインターフェースで通常可能なスループットよりも高い単一セッションのスループットを提供できる唯一の集約方法は、ラウンドロビン方式でパケットを分散するbalance-rrです。あなたは、設定する必要がありましたバランス-RRのの両方のイニシエータとターゲット。ただし、大きな問題は、これは主にスイッチに依存することです。

とにかく、ターゲットとイニシエーターの両方をbalance-rrに設定した場合、2つのマシンを直接接続するとパフォーマンスが向上します。そうでない場合は、iperfbalance-rrおよび両方のマシンが直接接続されている(スイッチなし)で、投稿できますか?また、ddベンチマークに使用した正確なコマンドを投稿してください。


2

注:ここでは、iSCSIについてのみ説明しています。私はそれについて読む以外にAoEの経験はありませんし、とにかくそれを新しいインフラストラクチャに実装することはありません(それはかなり機能していません)。

一部の非常に特定のポイントツーポイントプロトコル以外には、balance-rrを使用しないでください。ほぼすべての種類の実世界の負荷がかかると、パフォーマンスはひどくなり、多数のネットワーク問題(LOTのジッターなど)が発生します。絶対にスイッチと一緒に使用しないでください。

イニシエーター側でボンディングを使用せずにMPIOを使用して、ロードバランシングとフォールトトレランスを実現します。すべてのトラフィックを単一のパスに送信してパスが「混同」しないようにするには、個別のパス(ターゲットとイニシエーターの間のギガビットNIC)を別々のサブネットに配置します。

パスごとに LACPを使用してターゲット側を自由に結合します(ターゲットポート構成の例として、2つのパスの2つの結合で合計4つのNICを使用する場合のように)。これはうまく機能し、同じパスを使用する複数のイニシエーター接続のバランスをとることができます。また、可能であればジャンボフレームとiSERを使用します。ターゲットでLACPを使用すると、複数のNIC間の各パスへの接続のバランスが取られます。

イニシエーターでLACPを使用することは、同時に使用する多数のターゲットポータル接続を作成する場合にのみ効果的です(ほとんどすべてのワークロードでは一般的ではありません)。イニシエーターのパスごとにLACPを効果的に実装したとしても、各ボックスに(たとえば)4つの追加のファブリックを使用することは、ケーブル配線の悪夢になります。単一のイニシエーターに2Gib / sを超えるスループットが必要な場合は、10GiB / sイーサネットを検討してください。


1

AoEの応答のほとんどは完全に不正確であり、事実に反しており、AoEの知識と経験の欠如を示しています。まず第一に、それは消滅していません。CORAIDはAoEの背後にあるベンダーであり、CORAIDの商標を保持したまま「SouthSuite」として再起動しました。彼らも同じ開発者です。彼らは新製品を作り、古い製品のほとんどをサポートしています。オープンテクニカルメーリングリストが明確に示しているように、彼らはAoE開発も推進しています。ウェブサイトをチェックしてください、それはすべて最新であり、彼らの歴史ページで物語全体を伝えます。

誰かが、AoEはジャンボフレームから利益を得ることができず、また、まったく間違っていると言いました。「vbladed」のバージョン13のリリース後にサポートされました。新しいフレームサイズをサポートするためにMTUを調整する必要がありますが、それ以外の場合はうまく機能します。

iSCSIはOSIモデルのレイヤー5で実行されます。通常のトランスポートはTCPです。これにより、(TCPのチェックサムにより)エラーが修正され、レイヤー3でトラフィックをIP経由でルーティングできるようになります。それがiSCSIの利点が停止するところです。FCP、AoE、またはFCoEのようなものと実際に公平に比較​​すると、実際のパフォーマンスは実にひどいものです。ホラーショーのグーグルの「iscsiパフォーマンス比較」にご招待します。

読み取り速度の問題は、ネットワークの設定ミスが原因である可能性があります。フロー制御をオフにし、十分な大きさのソケットバッファーを使用していることを確認してください。また、基盤となるファイルシステムが読み取りプリフェッチ用に調整されているかどうかについても触れていません。あなたのシナリオに基づいて、それはあなたに多くの助けになるかもしれませんが、キャッシュを無効にする必要がある特定のデータベースでそれを使用しないように注意してください。

802.3ad集約では、ラウンドロビンシナリオでも、単一ストリームのスループットはそれほど増加しません。また、ネットワーク構成が複雑になり、PDU間隔を一致させなかったり、アクティブ/アクティブ状態をサポートするようにCisco VPCリンクを誤って構成したりすることで、新たな可能性が生まれます。LACPをAoEで使用しないでください。LACPは独自のマルチパスと多重化を処理します。それ以降のバージョンのAoEはこれを美しく処理し、ほとんどの場合、すべて自動であるため、FCPよりも優雅に処理します。イーサネットポートを追加すると、帯域幅と復元力が向上します。ホストとイニシエーターのイーサネットポートを複数のスイッチに分散すると、さらに冗長性を提供できます。結合モードを構成する必要はありません。また、AoEに使用するのと同じインターフェイスでIPを実行しないでください。

要するに、AoE分析者の話を聞かないでください。彼らは経験があまりなく、流行の脳波に乗っているだけのようです。群れを避けなさい。手動で調整したプリフェッチでバッキングストアを構成すると、おそらく読み取りスループットが上がることがわかります。集約プロトコルの使用をやめ、iSCSIから叫び声を上げます。最後に、「dd」の使用を停止することは、優れたテストではなく、キャッシングの影響が大きくなります。「fio」、「iozone」、「dbench」などの実際のベンチマークツールを使用します。それらはより信頼できる結果を与えます。


1

LACPが複数の接続用であることは知っています。テストは必死の行為でした:)

すべてのテストは、balance-rrと2つのNICを使用して行われました。

iSCSIターゲットへの書き込み:
dd if = / dev / zero of = / mnt / zero.bin bs = 1M count = 2000
2000 + 0 przeczytanychrecordów2000
+ 0
zapisanychrecordów2097152000バイト(2,1 GB、2,0 GiB)コピー、10,1093 s、207 MB / s

iSCSIターゲットからの読み取り:
dd if = / mnt / zero.bin of = / dev / null bs = 1M
2000 + 0 przeczytanychrecordów2000
+ 0
zapisanychrecordów2097152000バイト(2,1 GB 、2,0 GiB)コピー、16,1684秒、130 MB /秒

ネットワーク速度:
iperf -c 172.16.10.80
------------------------ ------------------------------------
172.16.10.80に接続するクライアント、TCPポート5001
TCPウィンドウサイズ: 325 KByte(デフォルト)
--------------------------------------------- ---------------
[3] 172.16.10.80ポート5001に接続されたローカル172.16.10.70ポート37024
[ID]間隔転送帯域幅
[3] 0.0〜10.0秒2.30 Gバイト1.98 Gビット/秒

iperfおよびジャンボフレームを使用したテストでは、同じ結果が得られました。

イニシエーターで実行することにより、ある程度の読み取り速度が得られました:
hdparm -a 2048 / dev / dm-1
以前は256で、読み取り速度は96MB / sでした
私の目標は、約200MB / sの読み取り速度を達成することです。

編集:
1. LACPは使用しません-1回限りのテストです。
2. balance-rrとMPIOを使用したテストでは、まったく同じ結果が得られます。マルチパスは、異なるサブネットのNICでテストされました。
3. NICを追加しても読み取り速度は向上しませんが、各NICの使用率が低下するだけです。
4.問題は、より速く読み取ることができないいくつかの制限(ドライバー、モジュール?)であると考えています。しかし、それがターゲット側かイニシエーター側かはわかりません。


編集2:ちょうどいくつかの追加のテストを行いました:ネットワークハードウェアの問題を取り除くためにターゲットとイニシエーターと同じホストを設定しました。私はショックを受けました:まったく同じ読書速度!130 MB /秒!書き込みは227 MB / sです。


iSCSIを使用する場合、LACPから取得するには、セッションごとに複数の接続を有効にする必要があります。mc / sなし=パフォーマンスの向上なし。scst.sourceforge.net/mc_s.htmlおよびstarwindsoftware.com/blog/…が役立つ場合があります。
BaronSamedi1958

-2

NICをどのように構成しましたか?すべてのバッファーが適切に設定されていますか?ネットワークバッファーに十分なRAMを割り当てていますか?また、ここではボンディングを使用しないでください。2つのiSCSIチャネルを使用し、イニシエーターでそれらをマルチパスできます。ATAoEと同様に、任意のパスのシェルフおよびLUN IDを介してイニシエーターのマルチパスを使用します。


提案できるチェックや設定の変更はありますか?完全な答えがなくても、質問者を正しい方向に向けるヒントを提供できれば、答えや他の人の助けになります
iwaseatenbyagrue
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.