速度向上のために並行して実行する 200,000 のタスクがあります。を使用してParallelEnumerable.Range(0, 200000).Sum( a => /*do_something*/ )
います。
タスク カウンターが 0 から 200,000 になると、必要な反復回数が減少します。のタスクa=0
は最も多くの反復を必要としますが、 のタスクはa>100,000
1 回またはまったく反復せずに終了します。
このため、私のクアッドコア マシンは、タスクが進行しても最大 CPU 使用率のピークに達しません。ワークロードは開始時に 4 つのコアすべてに分散されているように見えますが、一部のコアは主にa
s の高いタスクであったため、早期にアイドル状態になります。CPU 使用率は 100% から始まりますが、75~50~25% まで徐々に低下します。最初から最後まで完全な CPU 使用率を達成するにはどうすればよいですか?