我有 200,000 个任务将并行运行以提高速度。我正在使用ParallelEnumerable.Range(0, 200000).Sum( a => /*do_something*/ )
.
随着任务计数器从 0 变为 200,000,所需的迭代次数减少。a=0
需要最多迭代次数的任务,而完成a>100,000
一次或没有迭代的任务。
因此,随着任务的进行,我的四核机器没有达到最大 cpu 利用率峰值。似乎工作负载在开始时被分配到所有 4 个核心,并且一些核心更早地空闲,因为它们的部分主要是具有高a
s 的任务。cpu 利用率从 100% 开始,逐渐下降到 75~50~25%。如何从头到尾实现充分的 CPU 利用率?