Установка Java для использования одного CPU

Я полностью согласен с тем, что пишет Джоэл Спольски в одной из своих многочисленных великих статей . Я думаю, что важно знать нижние уровни машины, чтобы не только писать качественный код, но и решать проблемы, которые неизбежно появятся.

Итак, ДА, важно, по крайней мере, знать основы API WIN32, может быть, не в глубине, а, по крайней мере, знать, что он есть, в основе всего, что вы будете кодировать.

8
задан Joel Coehoorn 27 May 2009 в 13:45
поделиться

4 ответа

Это обходной путь, но с помощью Solaris 10 вы можете настроить зону с одним доступным процессором, а затем запустить приложение внутри этой зоны.

Если вы хотите провести тестирование без запуска полное приложение, этот бит Java, скорее всего, используется для получения количества процессоров:

Runtime runtime = Runtime.getRuntime();
int nrOfProcessors = runtime.availableProcessors();

Полный пример здесь .

3
ответ дан 6 December 2019 в 00:08
поделиться

Это не полное решение, но может быть достаточно, чтобы стать одним из них. Определенно существует точка, в которой процесс java существует (и, следовательно, может управляться с помощью pbind ), и в этот момент он еще не запустил код для проверки процессора. Если бы вы могли приостановить запуск самого приложения до тех пор, пока pbind не выполнит свою работу, это должно быть нормально (при условии, что идея pbind будет работать с точки зрения проверки ЦП).

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

1
ответ дан 6 December 2019 в 00:08
поделиться

Погулив, я обнаружил, что вы правы, pbind связывает процессы с процессорами.

] Дополнительная информация и примеры: http://docs.sun.com/app/docs/doc/816-5166/pbind-1m?a=view

-1
ответ дан 6 December 2019 в 00:08
поделиться

Я думаю, что наиболее прямым ответом на ваш вопрос является использование pbind для привязки запущенного процесса оболочки, а затем запуск Java из этой оболочки. Согласно странице руководства, эффекты pbind наследуются процессами, созданными из связанного процесса. Попробуйте следующее:

% pbind -b 0 $$
% java ...
1
ответ дан 6 December 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: