QUESTION(SQ0702070)
スレッドを追加した場合のオーバヘッドは?
-gn サーバ・オプションを指定し、ネットワーク・サーバに対してデフォルトの 20
よりも多くのスレッドを許可することを検討しています。 スレッドをもう 1 つプールに追加した場合のオーバヘッドは何ですか ?
また、非常に多くのスレッドを追加した場合のマイナス面は何ですか ?
ANSWER
-gn
の増加によって追加される各スレッド (ワーカーとも呼ばれる) は、サーバ内の 1MB
のアドレス空間と、ブックキーピング用の数バイトを余分に使用します。 この追加の 1MB
のアドレス空間により、データベース・キャッシュに利用できるアドレス空間は同じ量だけ減少します。
たとえば、-gn 999
を指定した場合、データベース・サーバは (ほとんどの Windows コンピュータで一般に利用できる 2GB の内) 999MB
のアドレス空間を確保します。 他のプラットフォームでは、-gss オプションによって予約スタック・サイズを設定できます。 デフォルトでは、64
ビット UNIX プラットフォームでは 1MB、32 ビット UNIX プラットフォームでは 512KB、Netware では 128KB
が確保されます。
通常は、スレッド・デッドロックが確認された場合にのみ、-gn を大きくしてください。 -gn
を大きくすると、パフォーマンスが向上する可能性がありますが、これは作業負荷に依存します。 特に、UnschReq
サーバ・プロパティによって示されるように、スレッドに割り当てられていない要求の数がゼロに近い場合は、-gn
を大きくしてもパフォーマンスが向上しない可能性があります。
UnschReq
プロパティの値を取得するには、以下のクエリを実行します。 SELECT property ( 'UnschReq' )
-gn
をあまりに大きな値にすると、キャッシュ・プレッシャは増加し、他のさまざまなリソースの競合も増加するため、パフォーマンスに悪影響が及ぶ可能性があります。 さまざまな
-gn 値を使ってアプリケーションをテストし、アプリケーションにとって最適な値を決定してください。
|