タスクは、CPU負荷の高い操作で複数のI/Oストリーム(HTTPダウンロード)を処理する必要があります。理想的には、全帯域幅とCPU 100%を使用したいと考えています。もちろん、CPUの処理量が多いとインターネットのダウンロード速度が遅くなります。未処理のデータをディスクにキャッシュすることができます。この機能を提供するASFまたはその他のコンポーネントに既存のエグゼクティブがありますか?そうでない場合、これを達成するための最良の方法は何ですか? 1つはInternet-To-Disk
、もう1つはDisk-To-CPU-To-Disk
操作用に2つのスレッドプールがあると考えます。I/Oバウンド操作とCPU負荷操作のJavaスレッド同期
編集:
2スレッド・プール:Internet-To-Disk
とDisk-To-CPU-To-Disk
生産者/消費者のアプローチそのものである
私は私の質問を明確にします。問題はproducers
とconsumers
の正しいスレッド数を選択したことを確認する方法でしたか?同じコードは異なるボックス、異なる数のコアと異なる帯域幅のアーチで同時に動作します。 100%の帯域幅と100%のCPUが消費されるように正しいスレッド数を選択したことを確認するにはどうすればよいですか?
これは可能な限り帯域幅とCPUの両方をロードすることを目的としていました(数週間の作業後に何億ものHTMLページをダウンロードする必要はありません)。ダウンロードは停止し、CPU処理のみが維持されます基本的に - 質問は - 両方のプール(またはプロデューサー/コンシューマー)が100%システムを完全にロードするためのバランスをとる方法 - そのバランスのスレッド数を自動的に見つける方法を教えてください。 – Archer