confidential-computing-modules icon indicating copy to clipboard operation
confidential-computing-modules copied to clipboard

[modules/anofy-enclave] StateRuntimeノードにおけるイベントの非同期処理

Open osuketh opened this issue 4 years ago • 1 comments

パフォーマンス改善のためBCノードから取得したイベントを非同期に処理する。以下2つのパターンが考えられる。

  • threadA(polling BC node) --> channel --> threadB(ecall)
  • threadA(polling) --> channel --> threadB(formatting) --> channel --> threadC(ecall)

前者について、threadAは固定間隔でBC nodeからイベントを取得し適切に整形し、channelに流すところまでを責務とする。ThreadBはそのchannelからイベントを取得し、ecallを随時実行していく。

ここにおけるchannelは順序制御のためにSPSCでなければならない。

osuketh avatar Feb 12 '21 01:02 osuketh

ユーザーメッセージごとのカウンター値導入により、イベント取得後に順序が変わってしまった場合でもスキップした状態を反映する前にはじけるので、かつbufferでreorderすることによりMPMCで処理。万が一、順序変わってしまった場合はエンキューしreorder。(要ベンチマーク検証

osuketh avatar Feb 16 '21 15:02 osuketh