2010-09-01 2 views
1

Я использую контейнер Solaris с двумя ядрами (физическая машина имеет 32 с 8 потоками, каждая) для запуска jvm (BEA Jrockit).Доступная JavaПроцессоры() в контейнере Solaris

Удивительно: Runtime.getRuntime().availableProcessors() возвращает 256, а не 2, или, скажем 16. То есть приложение (запечатанный продукт) верят в 256 ядер, что может вызвать проблемы с производительностью.

Есть ли способ ограничить количество ядер, которые может видеть контейнер Solaris, или перейти к JRockit (или даже Sun Hotspot)?

ответ

1

Вы можете использовать:

# 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