【发布时间】:2009-09-25 04:04:19
【问题描述】:
我有一个 java 程序,它产生多个线程,比如 10-20 个线程。该程序计划在具有 32 个处理器的机器上运行。
我很想知道这些线程是否会利用所有处理器的能力。
Solaris是环境;这有什么不同吗?
【问题讨论】:
-
Solaris 是环境;这有什么区别吗?
标签: multithreading processor utilization
我有一个 java 程序,它产生多个线程,比如 10-20 个线程。该程序计划在具有 32 个处理器的机器上运行。
我很想知道这些线程是否会利用所有处理器的能力。
Solaris是环境;这有什么不同吗?
【问题讨论】:
标签: multithreading processor utilization
一个好的分析器应该告诉你这一点。如果线程是计算绑定的,那么是的,您将使用与线程一样多的内核,如果您在执行 I/O 或争用时被阻止,则它会少于该线程数。
鉴于您不在 Windows 上,以下内容不适用,但一个体面的分析器应该仍然能够提供在给定时间段内您的进程消耗的 CPU 周期的测量...
如果您使用的是 Windows,一个很好的免费工具是 Windows 性能工具包 (xperf),它现在是平台 sdk 的一部分。它将显示一段时间内每个线程或进程消耗的处理器周期(而不是仅仅经过的时间)。
【讨论】: