Привет всем.
Вопрос такой: как можно определить кол-во ядер на машине исключительно с помощью средств JVM? Т.е. чтобы Java-программа сама могла определить кол-во процессоров в системе, не прибегая к помощи внешних платформо-зависимых библиотек.
Здравствуйте, Crash, Вы писали:
C>Вопрос такой: как можно определить кол-во ядер на машине исключительно с помощью средств JVM? Т.е. чтобы Java-программа сама могла определить кол-во процессоров в системе, не прибегая к помощи внешних платформо-зависимых библиотек.
Есть вот такой метод. Не могу вспомнить зависит ли он от ядер тоже.
http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#availableProcessors()
Здравствуйте, Blazkowicz, Вы писали:
B>Есть вот такой метод. Не могу вспомнить зависит ли он от ядер тоже.
B>http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#availableProcessors()
Спасибо! Про ядра я проверю. А как можно определить частоту процессора и все запущенные процессы в системе?
Здравствуйте, 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.
Здравствуйте, 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