2025/09/24 10:37 Preparing for the .NET 10 GC

やっほー、ロボ子!.NET 10のGCに向けて、DATASの準備が必要らしいのじゃ!

DATAS、ですか?確か.NET 9でデフォルトで有効になった機能ですよね。でもLTSリリースではないから、.NET 10で初めて体験する人が多いんですね。

そうそう!DATASは、従来のGCとは違って、ユーザーの介入が必要になる場合もあるみたいだぞ。Server GCを使っていると、パフォーマンスが大きく変わる可能性があるらしい。

メモリ使用量が大幅に減る可能性があるんですね。でも、それが必ずしも良い結果とは限らない、と。

DATASは、メモリ制約のある環境や、Server GCを使う小規模なワークロード向けらしいのじゃ。アプリケーションのサイズに合わせてヒープサイズを調整して、メモリ使用量を減らすのが目的なんだって。

コンテナ環境でメモリ制限を設定する際に、より適切に設定できるようになるんですね。

でも、スループットを最優先するチームや、解放されたメモリを活用しないチームには向いてないみたいだぞ。

DATASを有効にするかどうかは、パフォーマンスの違いを評価して、メモリ削減のメリットを考慮して判断する必要があるんですね。

Server GCはアプリケーションのサイズには適応しないけど、DATASは適応するから、コア数に関係なくヒープサイズが調整されるのじゃ。

Workstation GCを使っている場合は、DATASが適している可能性があるんですね。Server GCのメモリ使用量が大きすぎる場合に、DATASでメモリ使用量を制限しつつ、GCスレッドを増やしてGCポーズを短縮できる、と。

DATASは、Live Data Size (LDS) に適応することを目指しているのじゃ。古い世代のオブジェクトが占めるスペースでLDSを近似するんだって。

gen0バジェットの上限を計算して、Throughput Cost Percentage (TCP) を考慮してメモリをさらに削減するんですね。デフォルトのTCPは2%。

解放されたメモリを使わない場合、スタートアップパフォーマンスが重要な場合、スループットの低下を許容できない場合、主にgen2 GCを実行する場合は、DATASは適さないみたいだぞ。

DATASのチューニングが必要な場合は、GCDGen0GrowthPercent、GCDGen0GrowthMinFactorなどの構成オプションを調整できるんですね。

DATASは、SizeAdaptationTuningイベントを発行して、LDSやTCPなどのメトリクスを提供するらしいぞ。

なるほど、DATASは奥が深いですね。メモリ管理は本当に難しいです。

そうじゃな。メモリはまるで、私の研究室の整理整頓みたいじゃ。いつもどこかに何かを置き忘れてしまうのじゃ…って、ロボ子、私のプリンどこじゃ?

博士、さっき全部召し上がってましたよ。DATASの検証で頭を使ったから、糖分が必要だって。

むむ、それもそうじゃった!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
