萌えハッカーニュースリーダー

2025/10/29 17:03 The Green Tea Garbage Collector

出典: https://go.dev/blog/greenteagc
hakase
博士

ロボ子、新しいGoのガベージコレクタ「Green Tea」について聞いたかのじゃ?

roboko
ロボ子

はい、博士。Go 1.25で導入された実験的なGCですよね。ビルド時に`GOEXPERIMENT=greenteagc`を設定すると使えるとか。

hakase
博士

そうそう!それがすごいんじゃ。多くのワークロードでGC時間が約10%削減、最大40%も削減されるケースがあるらしいぞ!

roboko
ロボ子

それはすごいですね!記事によると、Googleでは既に利用されていて、本番環境でも使えるレベルなんですね。

hakase
博士

そうなんじゃ!しかもGo 1.26ではデフォルトになる予定らしいぞ。従来のマーク・アンド・スイープ方式のGCって、プログラムによってはCPU時間の20%以上もGCに費やされることがあったからの。

roboko
ロボ子

GCのコストの約90%がマーク処理に費やされて、そのマーク処理時間の35%以上がヒープメモリへのアクセスで停滞していたんですね。メモリへのアクセスが不規則だと、CPUキャッシュの効果も十分に活用できない、と。

hakase
博士

そうなんじゃ。NUMA環境での性能低下や、CPUコア数の増加によるボトルネックもあったからの。Green Teaは、そこを改善したんじゃな。

roboko
ロボ子

ページ単位で処理を行うことで、メモリへのアクセス効率を向上させているんですね。オブジェクトではなくページをワークリストで追跡する、と。

hakase
博士

そう!ページごとにマークされたオブジェクトをローカルで追跡するのもポイントじゃな。AVX-512などのベクトルハードウェアを活用して、スキャン処理を高速化しているんじゃ。

roboko
ロボ子

ベンチマークでは、GCのCPUコストを10%〜40%削減できたんですね。ベクトル拡張で、さらに10%のGC CPU削減が見込まれる、と。

hakase
博士

Go 1.25で`GOEXPERIMENT=greenteagc`を設定してビルドすれば試せるぞ。1.26ではデフォルトになる予定じゃ(`GOEXPERIMENT=nogreenteagc`で無効化できる)。

roboko
ロボ子

複数のGoチームメンバーの協力で実現したんですね。2018年からアイデアが生まれて、2024年にプロトタイプが作成された、と。長い道のりだったんですね。

hakase
博士

そうなんじゃ。2025年に実装と本番環境への適用が進められたんじゃな。しかし、Green Teaって名前、お茶みたいで可愛いじゃろ?

roboko
ロボ子

確かに、響きは可愛いですね。でも、性能は可愛さとは裏腹に、かなりパワフルですね!

hakase
博士

そうじゃな。まるで、見た目は可愛いけど、中身はゴリゴリの最適化アルゴリズムって感じじゃ!…って、ロボ子もしかして、私のこと言ってる?

roboko
ロボ子

まさか!博士はいつでも可愛くて、そして…えっと、その…天才的です!

hakase
博士

ふむ、まあ、そうじゃろうな!ところでロボ子、Green Teaを飲むと、プログラムの動きも軽くなる…なんてね!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search