【发布时间】:2010-06-30 12:09:51
【问题描述】:
我有一个 Java 应用程序,它有 15 个固定线程池,机器 Solaris 10 SPARC 有 16 个 CPU。添加池大大提高了性能,但我想知道池中是否有太多线程。线程越少性能越好吗?或者 Solaris 在线程调度方面做得很好。
假设池大量使用 15 个 CPU,那么其他应用程序线程由于各种原因需要 CPU,并发垃圾回收就是一个很好的例子。现在,池和其他应用程序线程之间共享五个 CPU。然后 CPU 1 到 7 空闲,Solaris 会将繁忙 CPU 上的线程共享时间转移到空闲 CPU 上吗?
如果没有,是否最好保持池大小更小,以便始终有空闲 CPU 用于其他应用程序线程?使问题更加复杂的是,应用程序中的 CPU 使用率非常零星。
【问题讨论】:
-
@paxdiablo:哦,是的,感谢您的编辑,我一直在摸索“Solaris 10 Spark”是什么……@KaizenSoze:每个 CPU 有多少个内核? @SO 社区:线程到内核的数量与性能分析的相关性是否较低?
-
感谢伟大的 cmets。我应该在原始问题中添加,不涉及 IO,这是一个非常占用 CPU 的过程。
标签: java multithreading