プロセスによって消費されるCPU使用率の調整

プロセスによって消費されるCPU使用率の調整

当社はゲーム サーバー会社を運営しており、基本的に多数の顧客が 1 台のマシンを共有しており、Web コントロール パネルで管理される Java プロセス (Minecraft) の独自のインスタンスを使用しています。最近リリースされた数回のゲーム アップデートで、顧客が使用するサード パーティ プラグインの多くが適切に記述されておらず、手動でプロセスを強制終了するまで、特定のサーバーで CPU 使用率が急激に上昇することが頻繁に発生していることがわかりました。

ゲーム パネルはプロセスを自動的に再起動するため、プロセスを強制終了しても問題はありません。問題は、これらのサーバーの 1 つが CPU 使用率を 50% 以上消費し始めると、マシンに RDP で接続し、そのマシンの所有者を特定し、シャットダウンして通知するまでに少なくとも 5 分かかることです。

Server 2008 で、CPU 使用量の調整や、最悪の場合、その使用量でスタックしたプロセスを自動的に終了するなどの現在のソリューションはありますか? Minecraft は基本的にシングル スレッド アプリケーションなので、Affinity の使用を検討しましたが、パッケージのバリエーションや使用量の変動により、これはうまく機能しません。プロセスが使用できる最大使用量を調整するオプション、または少なくともその使用量でスタックしたプロセスを終了できるオプションがあれば完璧です。

ありがとう!

答え1

ここで説明されているようなものが欲しいようです:

http://technet.microsoft.com/en-us/library/ff384148%28v=ws.10%29.aspx

これは、プロセスに対するユーザーごとのクォータ システム (技術的には SID ごと) であり、必要なことを実行するはずです。Minecraft プロセスが 10 個あり、それぞれを 9% に制限すると、RDP などに 10% の CPU が使用可能になります。

他のリソース制限に達している場合は、それらを個別に制限することを検討してください。

答え2

各インスタンスの優先度を下げることをお勧めします。そうすれば、リモート アクセスの優先度が暴走タスクよりも高くなります。PowerShell リモートなどの軽量な管理スキームを検討することもできます。

関連情報