Можно ли заставить существующее приложение Java использовать не более x ядер?
Мы сравниваем существующие Java-программы. Это поточные приложения, предназначенные для использования многоядерных процессоров. Мы хотели бы измерить влияние количества ядер на скорость работы, но мы не хотим (и не можем) изменить код этих приложений.
Конечно, мы могли тестировать программное обеспечение на разных машинах, но это дорого и сложно. Мы предпочли бы иметь программное решение.
Примечание. Вы можете предположить, что платформа тестирования – это Windows, Linux или Mac. В идеале мы хотели бы иметь возможность запускать тесты на любой из этих платформ.
- Действительно ли ADD 1 быстрее INC? x86
- Оптимизация производительности Java HashMap
- Встроенная функция v. Макрос в C - Что такое служебные данные (память / скорость)?
- Как написать супер-быстрый файл-streamовый код в C #?
- Эффективный математический алгоритм для вычисления пересечений
- Структура агрегации Mongodb: используется ли индекс использования группы?
- Алгоритм вычисления числа делителей заданного числа
- Можно использовать профилировщик, но почему бы не просто остановить программу?
- Как ускорить время компиляции моего проекта C ++ с поддержкой CMake?
- Ошибка производительности для vector :: size () в цикле
- Разделить большой фрейм данных в список фреймов данных на основе общего значения в столбце
- Android ListView Refresh Single Row
- Насколько быстрее C ++, чем C #?
Это называется настройкой близости процессора, и это настройка ОС для процессов, а не для Java.
В Linux: http://www.cyberciti.biz/tips/setting-processor-affinity-certain-task-or-process.html
На Mac это не похоже на то, что вы можете установить его: https://superuser.com/questions/149312/how-to-set-processor-affinity-on-os-x
Переверните проблему вверх дном; вместо того, чтобы выяснить, как ограничить приложение только использованием n ядер на m- машине, выясните, как убедиться, что для вашего приложения доступно только n ядер. Вы можете написать очень простую программу, которая съедает одно kernel, делая что-то наподобие while (true);
и запустить m – n экземпляров этой программы с наивысшим приоритетом, тем самым гарантируя, что ваш код имеет только n ядер.
В качестве альтернативы, если ваш BIOS или ОС позволяет отключить ядра ЦП, это тоже работает. Я знаю, что инструменты CHUD на Mac OS X используются для этого, но я не касался этих инструментов со времен G5, так что это может не сработать.