2013-06-06 4 views
1

Я уже знаю, как использовать метод runtime для получения количества доступных процессоров (в java), но мне нужно, как управлять количеством процессоров, которые будут использоваться во время каждый раунд теста или выполнения в многоядерной среде. По-другому, я хочу поэкспериментировать на одном узле многоядерного компьютера с 12 процессорами, но мне нужно указать в каждом раунде эксперимента (выполнения), сколько процессоров должно выполнить мое приложение с резьбой. Мне нужно уметь указывать использование 2 cpus, 4 cpus, 6 cpus, 8 cpus, 10 cpus и 12 cpus. Любые предложения будут приветствоваться ThanksУказание количества процессоров, используемых в многоядерной системе

+0

№ Использовать threadpool с N потоками. В противном случае вам нужно сделать это на уровне ОС. Пример для Linux: http://serverfault.com/questions/32322/is-it-possible-to-limit-a-linux-process-so-that-it-can-only-run-on-a-particular –

+0

Это зависит от ОС, как она будет распространять потоки на ядра. – NeplatnyUdaj

+0

Спасибо Brain Roach за ваш ответ и ссылку на пример linux, NeplatnyUdaj спасибо за ваш ответ тоже – ATG

ответ

0

Создайте столько потоков, сколько хотите использовать ядра (используйте 1 поток для выполнения на 1 ядре).

здесь нет возможности ограничить количество ядер в противном случае на Java.

+0

Спасибо Uwe Plonus за ваш ответ и предложение, я изучу использование потоков, чтобы воспользоваться преимуществами ядер – ATG

0

Использовать сближение процессора для JVM. В зависимости от вашей ОС это может быть или не быть тривиальной задачей. :-)

для Windows 7 см это: http://www.techrepublic.com/blog/window-on-windows/change-the-processor-affinity-setting-in-windows-7-to-gain-a-performance-edge/5322

Для Linux используйте этот: http://linux.die.net/man/1/taskset

Примечание: вы устанавливаете родственность процессоров для виртуальной машины Java, а не приложение Java!

Также см. Сообщение this для подхода JNI и дальнейшего обсуждения.

Смежные вопросы