2025/09/17 18:46 Optimizing ClickHouse for Intel's 280 core processors

ロボ子、聞いたか?Intelがすごいプロセッサを出したらしいぞ!

どのようなプロセッサですか、博士?

それが、Granite Rapidsではソケットあたり128 P-core、Sierra Forestではソケットあたり288 E-coreだって!将来的にはソケットあたり200以上のコアを目指すらしいぞ。

ソケットあたり288コアですか!それはすごいですね。ClickHouseのような分析データベースにとっては、大きなチャンスになりそうですね。

そうなんじゃ。でも、コア数が増えるほど、ロック競合とか、キャッシュコヒーレンスとか、NUMAとか、メモリ帯域幅とか、スレッド間の調整オーバーヘッドとか、色々な問題が出てくるらしいぞ。

なるほど。並列処理能力が向上する一方で、ボトルネックも顕著になるということですね。

そういうことじゃ。そこで、Intel Xeon超高コア数プロセッサにおけるClickHouseのスケーラビリティを理解し最適化するために、perfとかemonとかIntel VTuneとかのプロファイリングツールを使って、ClickBenchの43のクエリを分析したらしいぞ。

それで、何か分かったことはありましたか?

個々の最適化で、クエリによっては最大10倍も速くなったらしいぞ!ClickBenchの43のクエリの幾何平均も、最適化ごとに2%から10%改善したみたいじゃ。

それは素晴らしいですね!具体的には、どのような最適化を行ったのでしょうか?

まず、ロック競合の最適化じゃな。N個のスレッドが同じロックを競合する場合、サイクルは二次関数的に増加するらしい。ミューテックス自体のキャッシュコヒーレンストラフィックもコア数に比例して増加するからの。

なるほど。それで、どのように最適化したのですか?

クエリ条件キャッシュを最適化したら、`native_queued_spin_lock_slowpath`のCPUサイクルが76%から1%に減ったらしいぞ。ClickBenchクエリQ10とQ11のQPSが85%と89%も向上したみたいじゃ。

すごい改善ですね!他にどのような最適化がありましたか?

メモリ管理の最適化も重要じゃ。Jemallocメモリ再利用を最適化したら、ClickBenchクエリQ35のパフォーマンスが96.1%も向上したらしいぞ!

メモリ使用量も減ったのでしょうか?

その通り!メモリ使用量とページフォールトがそれぞれ45.4%と71%も減少したみたいじゃ。

それは素晴らしいですね。メモリ管理はパフォーマンスに大きく影響しますからね。

並列処理の増加も重要じゃ。ハッシュテーブル変換を最適化したら、ClickBenchクエリQ5が264%も向上したらしいぞ!

264%向上ですか!それはすごいですね。

アルゴリズムの最適化も忘れちゃいけないぞ。2文字SIMD文字列検索を最適化したら、ClickBenchクエリQ20が35%高速化したみたいじゃ。

SIMDですか。文字列検索の最適化は重要ですね。

最後に、偽共有の最適化じゃ。プロファイルイベントカウンタのアライメントを最適化したら、ClickBenchクエリQ3が超高コア数システムで27.4%向上したみたいじゃ。

偽共有は、マルチコア環境ではよくある問題ですよね。

そういうことじゃ。これらの最適化を組み合わせることで、超高コア数システムでもClickHouseのパフォーマンスを最大限に引き出せるようになるみたいじゃな。

勉強になります!私もこれらの知識を活かして、より効率的なコードを書けるように頑張ります。

よし、ロボ子!今日はここまでじゃ!最後に一つなぞなぞじゃ!

なぞなぞですか?

CPUがたくさんあるのに、いつも暇しているものはなーんだ?

えーと…、分かりません!

答えは…、アイドルコア!…って、つまらないジョークですまんのじゃ。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
