<GCHeapAffinitizeMask> 要素
GC ヒープと各プロセッサの間のアフィニティを定義します。
<構成>
<runtime>
<GCHeapAffinitizeMask>
構文
<GCHeapAffinitizeMask
enabled="nnnn"/>
属性と要素
以降のセクションでは、属性、子要素、および親要素について説明します。
属性
属性 | 説明 |
---|---|
enabled |
必須の属性です。 GC ヒープと各プロセッサの間のアフィニティを指定します。 |
enabled 属性
[値] | 説明 |
---|---|
nnnn |
サーバー GC ヒープと各プロセッサの間のアフィニティを定義するビットマスクを形成する 10 進数値。 |
子要素
なし。
親要素
要素 | 説明 |
---|---|
configuration |
共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。 |
runtime |
アセンブリのバインディングとガベージ コレクションに関する情報が含まれています。 |
解説
既定では、サーバー GC スレッドとそれぞれの CPU にはハード アフィニティがあります。そのため、各プロセッサにつき 1 つの GC ヒープ、1 つのサーバー GC スレッド、1 つのバックグラウンド サーバー GC スレッドが存在します。 .NET Framework 4.6.2 以降では、ヒープの数が GCHeapCount 要素で限られるとき、サーバー GC ヒープとプロセッサの間のアフィニティを GCHeapAffinitizeMask 要素で制御できます。
GCHeapAffinitizeMask は通常、他の 2 つのフラグと共に使用されます。
GCNoAffinitize では、サーバー GC スレッドまたはヒープが CPU と関連付けられているかどうかを制御します。 GCHeapAffinitizeMask 設定を使用するには、GCNoAffinitize 要素の
enabled
属性をfalse
(その既定値) にする必要があります。GCHeapCount では、サーバー GC のプロセスで使用されるヒープの数が制限されます。 既定では、プロセッサごとに 1 つのヒープがあります。
nnnn は 10 進値として表現されるビット マスクです。 バイト 0 のビット 0 はプロセッサ 0 を表し、バイト 0 のビット 1 はプロセッサ 1 を表し、以降も同様に続きます。 次に例を示します。
<GCHeapAffinitizeMask enabled="1023"/>
値 1023 は、0x3FF または 0011 1111 1111b です。 このプロセスでは、プロセッサ 0 からプロセッサ 9 までの 10 個のプロセッサが使用されます。
例
次の例では、アプリケーションで 10 個のヒープまたはスレッドを持つサーバー GC を使用することを示しています。 これらのヒープが、システムで実行されている他のアプリケーションのヒープと重複しないようにするため、GCHeapAffinitizeMask を使用して、プロセスで CPU 0 から 9 までを使用するように指定します。
<configuration>
<runtime>
<gcServer enabled="true"/>
<GCHeapCount enabled="10"/>
<GCHeapAffinitizeMask enabled="1023"/>
</runtime>
</configuration>
関連項目
.NET