Javaでコードを書くこともありますが、マルチコアマシンで100%を超えるCPUを使用することもあります。現在、33個のCPUを搭載したマルチコアマシン(AmazonのEC2)でコードを実行していますが、JavaプロセスですべてのCPUを使用できるようにして、マシンの使用率を非常に高くしたいと考えています。それは可能ですか、それとも100%を超えるCPUをいつ使用するかを決めるのはJavaに任されていますか?マルチスレッドを使用するようにコードを変更したくありません。
質問する
9505 次
2 に答える
6
複数のスレッドまたはプロセス(または実行中の1つのプロセス以外のもの)を使用しないと、nコアマシンでn * 100%の使用量を達成することはできません。
オペレーティングシステムは、追加の要求がない限り、各ユーザープログラムを単一のスレッドで実行することを決定します。その要求がなければ、OSはコードを単一のスレッドで実行できるようにし、CPUのサイクル全体を最大化する可能性がありますが、他のスレッドは開いたままになります。
于 2012-04-08T01:36:12.203 に答える
2
プログラムが明示的にマルチスレッド化されていない場合(自分でスレッドを開始しない場合)、複数のコアを利用できる唯一の理由は、ライブラリの一部の機能を使用していて、最終的にスレッドプールに作業を委任するためです。どうやらあなたはそれをあまりコントロールできないので、それをもっと必ずしも機能させることはできません。
S3インスタンスのすべてのCPUの利用に関して:プログラムを複数回開始できます(たとえば、33個のCPUがある場合は33回)。それが不可能な場合は、処理のどの部分がスレッドプールで作業を作成するかを調べ、プログラムを変更して、それをより多く実行するようにする必要があります(並行して)。
于 2012-04-08T01:43:31.543 に答える