0

我正在创建一个创建很多任务的程序。通常任务的数量是 10,000 到 50,000。该程序使用的锁数量非常少,大约为 800,000 分之一,因此线程很可能不会相互阻塞。但是,我的 cpu 使用率仍然只有 70%。我对此有两个问题。

  • 50k 是不是过多的任务?
  • 在这种情况下,我的 CPU 使用率应该是 100%,还是 70% 正常?如果不是,我将不得不再次检查我的锁定。

我正在创建一个创建很多任务的程序。通常任务的数量是 10,000 到 50,000。该程序使用的锁数量非常少,大约为 800,000 分之一,因此线程很可能不会相互阻塞。但是,我的 cpu 使用率仍然只有 70%。我对此有两个问题。

  • 50k 是不是过多的任务?
  • 在这种情况下,我的 CPU 使用率应该是 100%,还是 70% 正常?如果不是,我将不得不再次检查我的锁定。

任务信息

这些任务用于呼吸优先搜索算法。一个任务计算特定于该任务的节点的哈希值。然后它使用这个散列在散列表中查找节点。哈希非常快。查找通常也很快。

4

1 回答 1

2

You're not reaching a higher percentage of CPU usage precisely because you have too many active threads. Whenever a thread exhausts its CPU time slice and gives way for another thread to execute something on the CPU, something called "context switching" happens. This basically saves the current state of the yielding thread (e.g., its stack), and restores the state of the second thread. This is a fairly expensive operation, and it's time spent doing nothing useful. This might be the reason.

于 2013-11-09T16:54:07.100 回答