New circular buffer using faa instead of cas to optimize performance
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- cpp
- 領域
- backend, performance
調査の方向性
既存のバッチスパンプロセッサの循環バッファとドラフト PR #3644 から始め、提案されている FAA ベースの wait-free MPSC キューを現在の CAS 実装と比較します。記載されているベンチマークを再現し、複数のプロデューサーと 1 つのコンシューマーで正しさを検証します。代替実装が正しく、そのパフォーマンス上の利点がベンチマーク結果によって裏付けられれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Describe the solution you'd like
I noticed that original circular buffer using by batch span processor use lock free MPSC queu based on CAS. When experiencing intense multithreading contention, Compare-And-Swap (CAS) exhibits poorer scalability compared to Fetch-And-Add (FAA). In reference of https://github.com/dbittman/waitfree-mpsc-queue, this pr attempt to implement a wait-free MPSC (Multiple Producer, Single Consumer) queue using FAA. Base on original benchmark, it indicate that this approach demonstrates better performance scalability.
Run on (48 X 2593.99 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x24)
L1 Instruction 32 KiB (x24)
L2 Unified 256 KiB (x24)
L3 Unified 30720 KiB (x2)
Load Average: 7.85, 5.70, 4.48
----------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------
BM_BaselineBuffer/1 10178537 ns 51528 ns 1000
BM_BaselineBuffer/2 7408646 ns 69828 ns 1000
BM_BaselineBuffer/4 7684772 ns 127549 ns 1000
BM_BaselineBuffer/8 7222459 ns 278660 ns 1000
BM_BaselineBuffer/16 6716972 ns 603712 ns 1215
BM_LockFreeBuffer/1 3915343 ns 53125 ns 1000
BM_LockFreeBuffer/2 4798406 ns 70581 ns 1000
BM_LockFreeBuffer/4 4562709 ns 128493 ns 1000
BM_LockFreeBuffer/8 4935221 ns 289996 ns 1000
BM_LockFreeBuffer/16 5187913 ns 618856 ns 1081
BM_OptimizedBuffer/1 4256507 ns 49970 ns 1000
BM_OptimizedBuffer/2 3398719 ns 67712 ns 1000
BM_OptimizedBuffer/4 3204749 ns 127378 ns 1000
BM_OptimizedBuffer/8 3230722 ns 296507 ns 1000
BM_OptimizedBuffer/16 3859005 ns 769220 ns 1000
More detail see draft pr: https://github.com/open-telemetry/opentelemetry-cpp/pull/3644
Describe alternatives you've considered
Which alternative solutions or features have you considered?
Additional context
Add any other context about the feature request here.
Tip: React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.
- 主要言語
- C++
- スター
- 1.4k
- フォーク
- 660
- 平均マージ
- 1日 12時間
- マージ済み PR(30日)
- 48
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
open-telemetry/opentelemetry-cpp のほかの issue
-
Baggage::ToHeader/FromHeader use form-style `+` for space, which other W3C Baggage implementations read as a literal plus対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンbug triage/accepted
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
open-telemetry/opentelemetry-cpp#4745 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
needs-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
open-telemetry/opentelemetry-cpp#4697 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
TracerContext construction might result in a terminate再び着手できるかも @akshat-lakhera が 26 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンtriage/accepted
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
open-telemetry/opentelemetry-cpp#4684 · コメント 2 件 · リアクション 2 件 ·
メンテナーはふだん 1 日以内に返信
-
[CI] Add Ubuntu 26.04 runners to the CI workflow再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンtriage/accepted
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
open-telemetry/opentelemetry-cpp#4596 · コメント 2 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[BUG] Resource::Create() throws bad_variant_access if process.executable.name isn't a string対応中かも @ryux1 が 60 日前に担当しました。 オープンbug help wanted triage/accepted
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
open-telemetry/opentelemetry-cpp#4535 · コメント 1 件 · リアクション 2 件 ·
メンテナーはふだん 1 日以内に返信
open-telemetry/opentelemetry-cpp の issue をすべて見る
似ている issue
-
ai_p2
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
ClickHouse/ClickHouse#130006 ·
メンテナーはふだん 1 日以内に返信
-
DepotMaintain: EN longer string moves the hint popup buttons out of reach // WpfGUI English Languageオープンclient: WpfGui module: depot question
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
MaaAssistantArknights/MaaAssistantArknights#19169 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
area: certificates bug outdated-version
難易度 1/5 1時間未満 初心者へのやさしさ 65/100
RafaelNGP/xbox-cloud-gaming-ps5#381 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
apache/iceberg-cpp#1103 ·
メンテナーはふだん 2 日以内に返信