2011-07-09 11 views
0

CPU使用量を増減できるJavaプログラムを設計して書き込もうとしています。ここに私の基本的な考えがあります:マルチスレッドプログラムを書く。そして、各スレッドはポイント計算を浮動させます。スレッド数の増減によるCPU使用量の増減。テストプログラムを設計する:CPU使用量を増減する

このテストケースでは、どのような浮動小数点演算が最適かわかりません。特に、私はVMWare仮想マシンをテストしようとしています。

+0

なぜCPU使用量を増やすのですか? –

+0

そしてどうやってそれを減らそうとしていますか? –

+0

CPU使用量を増やして、メモリ管理などの仮想マシンの動作を監視したいと考えています。コマンドラインで減らしてください。 – SecureFish

答えて

0

自然数の逆数をまとめることができます。この合計が収束しないので、コンパイラはそれを最適化することを敢えてしません。結果が何とか最後に使用されていることを確認してください。

1/1 + 1/2 + 1/3 + 1/4 + 1/5 ... 

これはもちろん、浮動小数点ユニットを占有しますが、必ずしも中央処理ユニットである必要はありません。だから、このアプローチが良いかどうかは、主題とするべきである。

+0

イメージチェックを追加すると、プログラムが中央処理装置を占有する可能性がありますか? – SecureFish

+0

はい。ネットワークチェックを追加すると、プログラムがネットワークを占有します。 –

0

単純なビジーループはCPU使用量を増加させます - FP計算を行うとこれを大幅に変更するか、そうでなければFPUを実行するだけでなく、より一貫した負荷係数を達成できるかどうかわかりませんALU。

creating a similar proof-of-concept in C#私は固定数のスレッドを使用し、各スレッドのスリープ/ワード期間を変更しました。このプロセスは正確ではなく、最新のプリエンプティブなオペレーティングシステムの他の要素と同様に、CPUとプロセスの両方の制限を受けていることに注意してください。 VMwareをミックスに追加することで、観察された動作も合成される可能性があります。縮退の場合、負荷を調整するために設計されたコードとシステムによって報告された負荷との間に高調波が形成されることがあります。

下位レベルの構築物は、(一般に「カーネルモード」アクセスを必要とする)を使用した場合、より一貫性のスロットルを実装することができた - 部分的ため

別:-)特定[スレッド]プリエンプションを回避する能力適切なハードウェアを使用して調べることのできる代替方法は、で、CPUクロックをに設定してから100%で実行します。現在のインテルCore-iチップのチップはです(Java CPUからのアクセスは慎重に設定できます)が、Javaからのアクセスには問題があります。これはホストではもちろん、VMwareでは行われません。

ハッピーコーディング。

関連する問題