CEPapplianceとSolarflare TCPDirectのティックからトレードへの遅延の比較

この記事では、2種類の環境(FPGA CEPアプライアンスに基づくデバイス( ハードウェア )とTCPDirectモードのSolarflareネットワークカードを搭載したコンピューター)で測定された遅延の値を示し、これらの測定値を取得した方法を説明し、測定方法とその技術的な実装について説明します。 記事の最後に、結果といくつかのソースコードを含むGitHubへのリンクがあります。

私たちが得た結果は、高頻度のトレーダー、アルゴリズムのトレーダー、およびわずかな遅延でデータ処理に偏っているすべての人にとって興味深いと思われます。

測定方法:何をどのように測定したか


測定スタンドのスキームは次のようになります。

測定台のレイアウト


SUT(テスト対象システム)は、CEPアプライアンスまたはSolarflareを搭載したサーバーのいずれかです(テスト対象システムの特性については、以下を参照)。

CEPapplianceとSolarflareには、共通のアプリケーション領域があります-高周波およびアルゴリズム取引。 したがって、テストドライバーが市場データ(ティック)を含むパケットの最後のバイトを送信した瞬間から、トレードリクエストを含むパケットの最初のバイトを受信した瞬間までの遅延量を測定します(ドライバーレベルのMACおよびPHY遅延は同じです)テスト環境と以下の結果値から差し引かれた両方)-いわゆるティックからトレードへの遅延。 ドライバーが最後のバイトを送信した瞬間からの時間を測定することにより、物理層に応じて、データの受信/送信速度の影響を排除します。

同様に、ドライバーが最初のバイトを送信してから測定されたシステムから最初のバイトを受信するまで、別の方法で遅延を測定できます。 このような遅延はより長くなり、次の式に従って測定値に基づいて計算できます。

レイテンシー1-1 =レイテンシーN-1 + 6.4 * int((N + 7)/ 8)

ここで、 レイテンシN-1は、ドライバーが最後のバイトを送信した瞬間から最初のバイトを受信する瞬間までに測定された遅延であり、 Nはバイト単位のイーサネットフレームの長さ、 int(x)は実数の小数部分を破棄する整数への変換です。

ここに処理ダイアグラムがありますが、そのランタイムは私たちにとって関心のある遅延です:

処理スキーム

テスト段階は何ですか?

準備:


テスト:


テスト結果の処理:


Solarflareのスタンド


SUTは、Asus P9X79 WSマザーボード、Intel Core i7-3930K CPU @ 3.20GHz、およびTCPDirectをサポートするSFN8522-R2 Flareon Ultra 8000シリーズ10Gアダプターネットワークカードを搭載したサーバーです。

このスタンド用に作成されたCプログラムは、Solarflare TCPDirect APIを介してUDPパケットを受信し、それらを解析し、アプリケーションブックを作成し、FIXプロトコルを使用して購入メッセージを生成および送信します。

メッセージを解析し、アプリケーションでメッセージを形成するガラスを作成することは、バリエーションやチェックをサポートせずに「ハード」にコード化され、最小限の遅延を保証します。 コードはGitHubで入手できます

ハードウェアCEPアプライアンスの略


SEPは、CEPアプライアンス、または「ハードウェアの一部」として機能します。これは、PCIeサーバースロットに挿入されたアルテラStratix V FPGAチップを搭載したDE5-Netボードであり、電力を供給されます。 10Gイーサネット接続を介したボードとの管理およびデータ交換。

FPGAチップのファームウェアには、ここで説明するテストシナリオの実装に必要なすべてを含む、多くの異なるコンポーネントが含まれている既に述べました。

CEPapplianceのスクリプトプログラムは2つのファイルに含まれています。 1つのファイルには、データ処理ロジックプログラムがあり、これを回路と呼びます。 別のファイルでは 、回路(またはそれを実行するハードウェア)が外部の世界とやり取りするためのアダプターの説明。 とても簡単!

CEPapplianceでは、2つのバージョンの回路を実装し、各バージョンで測定を行いました。 1つのバージョン(CEPappliance ALU)では、ロジックは高レベルの組み込み言語で実装されています(行47〜67を参照)。 別の(CEPappliance WIRE)-Verilogで(行47-54を参照)。

結果


ナノ秒単位で測定されたティックからトレードまでの遅延:
SUT平均最大stddev95%97%99%99.9%
Solarflare TCPDirect1411163726381502022211623032619
Cepappliance alu105011251620451251132014151549
家電線5616401163457688259071087

測定結果


結論


奇跡は起こらず、FPGAに基づいて実装されたハードウェアは、Solarflare TCPDirectを搭載したサーバーに基づくソリューションよりも高速であることが判明しました。 パーセンタイルが高いほど、速度の差が大きくなります。 同時に、CEPapplianceでのソリューションの速度の変動ははるかに小さくなります。

データ処理ロジックがVerilogに実装されている場合、CEPapplianceのオプションは、組み込みのCEPappliance言語に同じアルゴリズムを実装するよりも60〜70%高速です。

ソースコード


GitHubで公開されているテストに参加したほとんどすべてのソースコードをこのリポジトリに投稿しました。

収益化の可能性があるため、テストドライバコードのみが閉じられたままになりました。 結局のところ、システムの反応速度を非常に正確に測定することができます。 この情報がなければ、高品質のHFTソリューションを作成することはほとんど不可能です。

次は?


モスクワ取引所で取引する場合など、さまざまな決定の遅延の明らかな違いが重要かどうかを調べることは論理的です。 それについては、次の記事で説明します。 しかし、先を見据えて、0.5マイクロ秒でも問題だとしましょう!

Source: https://habr.com/ru/post/J339702/


All Articles