我有一個Java應用程序,它有一個固定的十五個線程池,機器Solaris 10 SPARC有十六個CPU。添加池大大提高了性能,但是我想知道池中是否有太多的線程。如果線程數量較少,或者Solaris在線程調度方面做得很好,性能會更好嗎?什麼是Java線程與Solaris上的CPU的良好比例?
假定池大量使用15個CPU,然後其他應用程序線程因各種原因需要CPU,併發垃圾收集就是一個很好的例子。現在,池和其他應用程序線程之間共享五個CPU。然後CPU從1到7變得免費,Solaris會將繁忙CPU上的線程共享時間移動到空閒的CPU上?
如果沒有,最好是保持池大小更小,以便其他應用程序線程總是有空閒的CPU。使問題更復雜化的是,應用程序中的CPU使用率非常零星。
@paxdiablo:哦,謝謝你的編輯,我正在摸索着弄清楚「Solaris 10 Spark」是什麼...... @KaizenSoze:每個CPU有多少個內核? @SO社區:核心線程與性能分析的關係不大? – bakkal 2010-06-30 12:34:45
感謝您的好評。我應該在原來的問題中加入,不涉及IO,它是CPU密集型的過程。 – KaizenSoze 2010-06-30 13:46:26