Java и многоядерность
От: Crash  
Дата: 06.03.08 13:03
Оценка:
Привет всем.

Вопрос такой: как можно определить кол-во ядер на машине исключительно с помощью средств JVM? Т.е. чтобы Java-программа сама могла определить кол-во процессоров в системе, не прибегая к помощи внешних платформо-зависимых библиотек.
Re: Java и многоядерность
От: Blazkowicz Россия  
Дата: 06.03.08 13:10
Оценка:
Здравствуйте, Crash, Вы писали:

C>Вопрос такой: как можно определить кол-во ядер на машине исключительно с помощью средств JVM? Т.е. чтобы Java-программа сама могла определить кол-во процессоров в системе, не прибегая к помощи внешних платформо-зависимых библиотек.

Есть вот такой метод. Не могу вспомнить зависит ли он от ядер тоже.
http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#availableProcessors()
Re[2]: Java и многоядерность
От: Crash  
Дата: 06.03.08 13:45
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Есть вот такой метод. Не могу вспомнить зависит ли он от ядер тоже.

B>http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#availableProcessors()

Спасибо! Про ядра я проверю. А как можно определить частоту процессора и все запущенные процессы в системе?
Re[2]: Java и многоядерность
От: dshe  
Дата: 07.03.08 08:07
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Crash, Вы писали:


C>>Вопрос такой: как можно определить кол-во ядер на машине исключительно с помощью средств JVM? Т.е. чтобы Java-программа сама могла определить кол-во процессоров в системе, не прибегая к помощи внешних платформо-зависимых библиотек.

B>Есть вот такой метод. Не могу вспомнить зависит ли он от ядер тоже.
B>http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#availableProcessors()

По всей видимости он возвращает количество логических процессоров, т.е. и core и thread'ов. Интересный факт: под Windows он возвращает количество процессоров реально выделенных процессу, а не тех, которые в принципе есть в системе (GetProcessAffinityMask). Т.е. можно установить java процессу affinity на какой-то один процессор и availableProcessors вернет 1.
--
Дмитро
Re[3]: Java и многоядерность
От: Blazkowicz Россия  
Дата: 07.03.08 10:19
Оценка:
Здравствуйте, dshe, Вы писали:

D>По всей видимости он возвращает количество логических процессоров, т.е. и core и thread'ов.

Thread'ов?
D>Интересный факт: под Windows он возвращает количество процессоров реально выделенных процессу, а не тех, которые в принципе есть в системе (GetProcessAffinityMask). Т.е. можно установить java процессу affinity на какой-то один процессор и availableProcessors вернет 1.
Метод поэтому и называется available... как и в случае с памятью он не возвращает физическое клоичество ресурсов, а только то которое доступно JVM. Что, ИМХО, очень правильно.
Хотя и приводит вот к чему:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5048379
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.