Процесс Java не обращается ко всем ядрам в Windows

У меня есть простой стресс-тест с настраиваемым количеством потоков в зависимости от сервера, на котором он работает. На одной машине Windows с 16 ядрами я могу запустить процесс, который, в свою очередь, запускает 16 потоков и поддерживает максимальное использование всех ядер на время теста.

На другом компьютере с Windows с 16 ядрами я запускаю тест, но он использует только 8 из 16 доступных, то есть использует один ЦП, а не другой.

Я знаю, что это скорее вопрос о конфигурации Windows, чем вопрос о Java, поскольку я показал, что сам тест ведет себя так, как ожидалось, на одной машине, а не на другой.

Используя диспетчер задач, я вижу, что в системе 16 ядер, но что-то мешает доступу к остальным 8.

Есть ли параметр, запрещающий одному процессу использовать все ядра?

Если StackOverflow не подходит для этого вопроса, предложите другой стек *, куда я должен его переместить.

Обновить 1

На проблемной машине я ранее пытался запустить 1 процесс с 16 потоками. Если я запускаю два процесса с 8 потоками каждый, я могу потреблять 100% ядер.


person imrichardcole    schedule 27.02.2016    source источник
comment
Это только Java не может использовать остальные 8 ядер, или ни одна программа не может их использовать?   -  person Joni    schedule 27.02.2016
comment
@Joni Я пытаюсь найти что-то, что я могу запустить, чтобы ответить на этот вопрос. Скоро обновлю вопрос.   -  person imrichardcole    schedule 27.02.2016
comment
В Java нет ничего, что позволяло бы вам ограничивать количество ядер, которые он может использовать, вы не могли бы делать то, что предлагаете, только на Java, если бы захотели. Он должен быть настроен на уровне ОС.   -  person Peter Lawrey    schedule 27.02.2016
comment
@PeterLawrey полностью согласен. Как указано в вопросе, это не проблема Java. Я включил тот факт, что это был тест Java, поскольку люди спрашивали, что я запускаю, а также как я могу быть уверен в том, сколько потоков я запускаю.   -  person imrichardcole    schedule 27.02.2016


Ответы (1)


Это оказалось той же проблемой, что и здесь:

Невозможно использовать более одной группы процессоров для моих потоков в приложении C#

Что, в свою очередь, ссылается на рекомендации HP здесь:

http://h20566.www2.hpe.com/hpsc/doc/public/display?sp4ts.oid=5379860&docId=emr_na-c04650594&docLocale=en_US

person imrichardcole    schedule 29.02.2016