5

私は現在、小さな社内テストアプリを使用して、コンピューターに複数の種類の負荷を作成し、負荷がかかった状態でソフトウェアがどのように機能するかを確認しています。ユーザーがプログラムを実行する前にCPUの使用率(たとえば40%)を指定する何らかの方法を作成するという点で、1つの要求でハングアップしています。これにより、CPUが範囲内に保たれることを願っています+-彼らが入れたものの10%。彼らは以前にそれをしているプログラムを見たと言われましたが、私が見たすべての人がそうしていると主張しましたが、うまくいきませんでした。平均使用量を読み取り、CPU使用率が低下するように実行中のスレッドをスリープさせようとしていますが、それは正確ではないことがわかりました。また、CPUがそれぞれ異なる複数のサーバーで使用されるため、各サーバーで動作する必要があるため、ハードコーディングをあまり行うことができません。

編集:優先度の低いスレッドを使用しようとしましたが、役に立たないと言われました(ただし、これが要求される前に、テストの目的でのみ作成されたオプションがありました)。

4

2 に答える 2

3

しばらく前に、アプリケーション サーバーのチューニングに類似したことを行いました。CPU が約 70% のときに、全体的なスループットが最高になることがわかりました。私たちの解決策は、必要な負荷に達するまで、スレッドごとに遅延を設けて追加のスレッドをスピンアップすることでした。CPU が 80% を超えた場合は、実行中のスレッドの数を減らしました (スレッドに現在の作業を終了してから終了するように通知しました)。CPU が 60% を下回った場合は、新しいスレッドを起動しました。

同様のロジックを適用して、目標の CPU 使用率に合わせて調整できる人為的な負荷を作成できます。スレッドは、微調整を可能にするために、CPU と非 CPU (IO、または単にスリープ) のバランスを取る必要があります。スレッドが非常に CPU を集中的に使用する場合、それぞれが 1 つの CPU コアを約 100% 消費します。

于 2012-08-17T19:27:25.750 に答える
2

Windows 8 以降では、Windows Jobs を使用して、OS スケジューラで CPU 使用率を制限することができます。

于 2012-08-17T19:39:07.933 に答える