Предел доступных процессоров - PullRequest
0 голосов
/ 04 июня 2009

У меня была проблема некоторое время назад, когда я использовал Solaris, я хотел ограничить количество процессоров, которые может видеть Java (которое было возвращено Runtime.getRuntime().availableProcessors(). это на веру. Мне сказали, что использование taskset ограничит число процессоров, которые будет использовать java (что верно, это так), но это не изменит то, что возвращает availableProcessors().

Я довольно долго искал способ найти это возвращаемое availableProcessors() значение, и мне не удалось ничего найти. Кто-нибудь знает способ ограничить его или почему taskset -c 0,1 java -cp ./ Test не будет работать.

Test.java

public class Test {
  public static void main(String args[]) {
    System.out.println(Runtime.getRuntime().availableProcessors());
  }
}

Приветствия

1 Ответ

0 голосов
/ 05 июня 2009

Не удивительно, что набор задач здесь не будет работать, так как это команда, которая устанавливает параметры планировщика, тогда как availableProcessors () не будет иметь никаких причин запрашивать планировщик.

Обратите внимание, что в вашем примере набор задач не просто ограничивает вас двумя процессорами; он ограничивает вас двумя конкретными процессорами (0 и 1).

Интересно, можно ли использовать перекрестную обработку (AOP) или генерацию байтового кода для переноса вызова availableProcessors ()?

...