Javaでコードを書くことがありますが、マルチコアマシンで100%以上のCPUを使用することがあることに気付きました。 33個のCPU(Amazon EC2)を持つマルチコアマシン上でいくつかのコードを実行しています。JavaプロセスですべてのCPUを使用できるようにしたいので、マシンの使用率が非常に高くなります。それは可能ですか、それとも100%以上のCPUを使用するかを決めるためにJavaに任せられていますか?マルチスレッドを使用するようにコードを変更することは望ましくありません。マシン上でJavaがすべてのCPUパワーを使用する方法を教えてください。
3
A
答えて
6
複数のスレッドまたはプロセス(または実行中のプロセス以外のもの)を使用せずに、n -coreマシンでn * 100%の使用率を達成することはできません。
オペレーティングシステムは、より多くの要求がない限り、各スレッドを1つのスレッドで実行することを決めました。この要求がなければ、OSはコードを単一のスレッドで実行できるようになり、潜在的にCPUのサイクル全体を最大限に活用できますが、他のスレッドはそのままにしておきます。
2
プログラムが明示的にマルチスレッドではない場合(自分でスレッドを開始しない場合)、複数のコアを利用できる唯一の理由は、作業を委任するライブラリの機能をいくつか使用しているためです。スレッドプールどうやらあなたはそれを支配していないので、もっと必然的に働かせることはできません。
S3インスタンスですべてのCPUを利用することについて:プログラムを何度も起動できます(33 CPUの場合は33回)。それが不可能な場合は、処理のどの部分がスレッドプール上で作業を作成しているかを知る必要があります。
関連する問題
- 1. Javaでドライブ上のすべてのファイルを指定する方法を教えてください。
- 2. Androidエミュレータが開発マシンで使用するネットワークインターフェイスを指定する方法を教えてください。
- 3. chrome.tabs.onUpdated.addListenerの使用方法を教えてください。
- 4. generate_eventsイベントの使用方法を教えてください。
- 5. GridLayoutの使用方法を教えてください。
- 6. Android GPUの使用方法を教えてください。
- 7. Microsoft VSTOインターフェイスの使用方法を教えてください。
- 8. Amazon Echo Lookの使用方法を教えてください。
- 9. org.mockito.AdditionalMatchers.gtの使用方法を教えてください。
- 10. jqm.page.params.jsプラグインの使用方法を教えてください。
- 11. F#Reflectionライブラリの使用方法を教えてください。
- 12. Eclipseを使用していくつかのJavaファイルをコンパイルする方法を教えてください。
- 13. Javaプログラムのインストール方法を教えてください。
- 14. Laravel ProjectにすべてのルートでHTTPSを使用させる方法を教えてください。
- 15. RubyでPsychにインラインモードを使用する方法を教えてください。
- 16. xamarin.fromsでPage.IsBusyを使用する方法を教えてください。
- 17. Tensorflow ServingでTensorflowモデルを使用する方法を教えてください。
- 18. CapistranoをRailsとDockerで使用する方法を教えてください。
- 19. PHPでarray_padの使用法を教えてください。
- 20. ローカルストレージアイテムをネットワーク上で公開する方法を教えてください。
- 21. robocopyでファイルを上書きする方法を教えてください
- 22. "file symlinks"ではなく、Javaで "directory symlinks"をWindows上で作成する方法を教えてください。
- 23. 正しいDateTimeを使用する方法を教えてください。
- 24. javaでgetInstance()メソッドを使用するタイミングを教えてください。
- 25. Perlを使わないマシンでPerlスクリプトを実行する方法を教えてください。
- 26. Mayaでメッシュスルーする方法を教えてください。
- 27. Apache Camelでループする方法を教えてください
- 28. Thread.terminateコマンドでクラッシュする方法を教えてください。
- 29. スパーク(糸を使って)を使ってすべてのノードを使う方法を教えてください。
- 30. TweenMaxの遅延を上書きする方法を教えてください。
利用可能な計算能力の100%以上を使用することは非常に印象的です。 「マルチスレッドを使用するようにコードを変更したくない」という事実にもかかわらず、マルチコアマシンのすべての計算能力を使用することは同様に印象的です。 –
@Kirk:私は「トップ」レポートを報告しています。同じJavaプロセスのマルチコアマシンで複数のCPUを使用していると推測しています。このコードではスレッドの明示的な言及は一度もありませんでした。 – kloop
スレッドプールなどでマルチスレッドソリューションを選択しなくても、Javaのアルゴリズムで複数のスレッドを活用することはできません –