我正在使用具有2个核心的Solaris Container(物理机具有32个核心,每个核心8个线程)来运行jvm(BEA Jrockit)。
令人惊讶的是:Runtime.getRuntime().availableProcessors()
返回256,而不是2,或者说16。也就是说,应用程序(密封产品)相信有256个可用内核,这可能会导致性能问题。
有什么方法可以限制Solaris Container可以看到或传递给JRockit(甚至Sun Hotspot)的内核数量吗?
最佳答案
您可以使用:
# poolcfg -c 'create pset zone_pset ( uint pset.min=2; uint pset.max=15 )'
# poolcfg -c 'create pool zone_pool'
# poolcfg -c 'associate pool zone_pool ( pset zone_pset )'
# poolcfg -c 'modify pool zone_pool ( string pool.scheduler="FSS" )'
# pooladm -c
在您的容器中指定2到15个核心。阅读更多here