多くのリソースを消費しているアプリケーションがありますが、実際にはこのアプリケーションがCPUを駆動します。 99%でサーバーが使用できなくなります(サードパーティのアプリケーションと同じように、これについて私ができることは何もないと思います)。
そこで、このアプリケーションに固有のリソースプールを作成することにしました。
リソースプールを作成した後、このアプリケーションを2コアと25%のCPU/RAMに制限しましたが、完全に機能しました。サーバーのCPUは常に25〜26%で、以前は99%でした...
次に、リソースグループのMAXDOPを削除することを決定し、アプリケーションは再び99%になりました...アプリケーションクエリが8つの並列プロセスを開いたことを確認したので、リソースプールをMAX 10%に置くとうまくいくと思いました(10 * 8 = 80%CPU)しかし、コアを制限しないと、99%のCPU消費が再び得られます...
何が悪いのでしょうか?...
リソースプールのCPUを制限する場合は、CAP_CPU_PERCENT
設定を使用する必要があります。
この設定は、リソースプール内のすべてのリクエストに対するCPU帯域幅のハードキャップ制限です。プールに関連付けられたワークロードは、MAX_CPU_PERCENTの値が利用可能であれば、それを超えるCPU容量を使用できますが、CAP_CPU_PERCENTの値を超えることはできません。
MAX_CPU_PERCENT
設定は、平均CPU使用率を制限するように設計されています。サーバーに競合がない場合は、無視できます。
使用可能なCPU容量がある場合、ワークロードはそれを最大100%使用します。最大値は、CPUリソースの競合がある場合にのみ適用されます。
ドキュメント で、さまざまなリソースプール設定の詳細を確認できます。