Rustのコンカレンシーの落とし穴:アトミックカウンタによるボトルネック

2025-06-10
Rustのコンカレンシーの落とし穴:アトミックカウンタによるボトルネック

Convivaのストリーミング分析プラットフォームは、グローバルに共有される型レジストリ内にある、一見無害なアトミックカウンタによってパフォーマンスのボトルネックが発生しました。このレジストリは、コンカレントハッシュマップ(Flashmap)を使用していました。高コンカレンシー下では、アトミックカウンタの更新によってキャッシュラインのバウンスと過剰なコンテキストスイッチが発生し、P99レイテンシが急増しました。FlashmapをDashmapに置き換えても問題は解決せず、最終的にRCUメカニズムを用いたArcSwapを使用することで解決されました。このケースは、特に読み込みが多い状況では、高コンカレンシーのシナリオで適切なデータ構造を選択することの重要性を強調しています。ArcSwapの高い効率性が際立っています。

開発