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

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

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

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

Это называется настройкой близости процессора, и это настройка ОС для процессов, а не для 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

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

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

  • Как найти k-й наибольший элемент в несортированном массиве длины n в O (n)?
  • Улучшение отражения производительности, какие альтернативы мне следует учитывать
  • Распределение памяти / освобождение Узкое место?
  • Показатель Mysql на таблице в 6 миллионов строк
  • Почему создание Thread считается дорогостоящим?
  • Является ли язык встроенной сборки медленнее, чем собственный код на C ++?
  • Эффективность отражения Java
  • Разница между rdtscp, rdtsc: памятью и cpuid / rdtsc?
  • Размер сборки .NET влияет на производительность?
  • Являются ли статические вызовы Java более или менее дорогостоящими, чем нестатические вызовы?
  • Разница в скорости при использовании встроенных строк против конкатенации в php5?
  • Давайте будем гением компьютера.