Подтвердить что ты не робот

Можно ли заставить существующее приложение Java использовать не более x ядер?

Мы сравниваем существующие Java-программы. Это поточные приложения, предназначенные для использования многоядерных процессоров. Мы хотели бы измерить влияние количества ядер на скорость работы, но мы не хотим (и не можем) изменить код этих приложений.

Конечно, мы могли тестировать программное обеспечение на разных машинах, но это дорого и сложно. Мы предпочли бы иметь программное решение.

Примечание. Вы можете предположить, что платформа тестирования - это Windows, Linux или Mac. В идеале мы хотели бы иметь возможность запускать тесты на любой из этих платформ.

4b9b3361

Ответ 1

Он называл настройку близости процессора, а также настройкой ОС для процессов, не относящихся к Java.

В Linux: http://www.cyberciti.biz/tips/setting-processor-affinity-certain-task-or-process.html

В Windows: http://www.addictivetips.com/windows-tips/how-to-set-processor-affinity-to-an-application-in-windows/

В Mac это не похоже на то, что вы можете установить его: https://superuser.com/questions/149312/how-to-set-processor-affinity-on-os-x

Ответ 2

Переверните проблему вверх дном; вместо того, чтобы выяснить, как ограничить приложение только использованием ядер n на основной машине m, выясните, как убедиться, что существует только n ядра, доступные для вашего приложения. Вы можете написать очень простую программу, которая съедает одно ядро, делая что-то вроде while (true); и запускать m - n экземпляры этой программы, работающей с наивысшим приоритетом, обеспечивая тем самым что ваш код имеет только n ядра.

В качестве альтернативы, если ваша BIOS или ОС позволяет отключить ядра ЦП, это тоже работает. Я знаю, что инструменты CHUD на Mac OS X используются для этого, но я не касался этих инструментов со времен G5, так что это может больше не работать.