confidential-computing-modules
confidential-computing-modules copied to clipboard
[modules/anofy-enclave] StateRuntimeノードにおけるイベントの非同期処理
パフォーマンス改善のため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でなければならない。
ユーザーメッセージごとのカウンター値導入により、イベント取得後に順序が変わってしまった場合でもスキップした状態を反映する前にはじけるので、かつbufferでreorderすることによりMPMCで処理。万が一、順序変わってしまった場合はエンキューしreorder。(要ベンチマーク検証