415.tech
シリコンバレー発、AIとテックの最前線
TigerBeetle解説:サブミリ秒レイテンシの鍵は静的割り当てとio_uring

TigerBeetle解説:サブミリ秒レイテンシの鍵は静的割り当てとio_uring

ある独立した解説記事は、TigerBeetleが毎秒数十万件のトランザクションを処理できる理由として、起動後の動的メモリ割り当ての排除、カーネルページキャッシュをバイパスするio_uring経由のダイレクトI/O、そしてViewstamped Replicationを採用したシングルスレッドループの3点を挙げている。128バイト固定のAccountおよびTransfer構造体により、メモリ上とディスク上のレイアウトが同一になるため、レコード永続化時のシリアライズを完全に省略できる。その代償として柔軟性は失われ、バッファサイズは起動時に固定されるほか、過負荷時にはテールレイテンシの急増ではなくバックプレッシャーやリクエストの拒否が発生する。なお、記事中のZigのサンプルはアップストリームのコードではなく筆者による再構築であるため、設計に関する主張は公式ドキュメントと照らし合わせて確認する必要がある。

出典: ixuvo.com

Xでポストメール

実行時の動的メモリ割り当てを拒否し、Direct I/Oを介してカーネルキャッシュをバイパスし、Viewstamped Replicationに裏打ちされたシングルスレッド実行ループを活用することで、TigerBeetleは毎秒数十万を超えるトランザクションスループットを達成する p

ixuvo.comのティアダウン分析

なぜ重要か

  • → 金融システムにおけるテールレイテンシーの急増を引き起こすメモリ断片化とガーベージコレクションの一時停止を排除する。
  • → Direct I/Oとio_uringがカーネルページキャッシュをバイパスすることで、データコピーで無駄になるCPUサイクルを削減する。
  • → 固定されたstructサイズ(128バイト)によりゼロシリアライゼーション永続化が可能になり、メモリレイアウトがディスクレイアウトと完全に一致する。
大規模なメカニカルシンパシー
このエディションの他の記事