1

私たちは、10 マイクロ秒未満のティック トゥ トレード パフォーマンスを必要とする Java ベースの HFT アプリケーションを開発しています。以下の詳細:

コア数:6

アプリケーション スレッドの数: 5

スレッドの機能と活用法

  • スレッド 1-3 - 交換ティックのキャプチャ (3-4% の CPU 使用率)
  • スレッド 4 - 単純な算術ルールに基づいて取引条件を確認します (CPU 使用率 100% - ビジー スピンが原因)
  • スレッド 5 - チェックサムの生成、int、double から byte への変換、注文の送信など (100% の CPU 使用率 - ビジー スピンが原因)

質問 :

CPU の分離 (スレッドをコアに排他的に割り当てる) により、コンテキストの切り替えとキャッシュ ミスが減少すると考えられます。現在、最初の 3 つのスレッドを 3 つの異なるコアに割り当てています。この状況でスレッドをコアに割り当てる最善の戦略は何ですか?

4

1 に答える 1

0

Linux Journal:CPU Affinity の Rober Love の記事で、このようなアプローチの多くの長所と短所を見つけることができます。

  • データ アクセスは、同じ CPU で分離する必要があります。
  • また、割り込みも慎重に処理する必要があります。詳細については、lwn.net の CPU 分離拡張機能を参照してください。

カーネル ロード ステップ以降で CPU を分離しましたか? 私は JVM に詳しくありませんが、JVM と CPU 分離アプローチの相互作用についてどう思いますか?

于 2015-03-11T15:14:48.567 に答える