我正在使用具有 2 个内核的 Solaris 容器(物理机有 32 个,每个线程有 8 个线程)来运行 jvm(BEA Jrockit)。
令人惊讶的是:Runtime.getRuntime().availableProcessors()
返回 256 而不是 2 或者说 16。也就是说,应用程序(密封产品)相信 256 个内核可用,这可能会导致性能问题。
有什么方法可以限制 Solaris Container 可以看到或传递给 JRockit(甚至 Sun Hotspot)的内核数量吗?
我正在使用具有 2 个内核的 Solaris 容器(物理机有 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 个核心。在这里阅读更多