Множитель процессора в Java

Я использую библиотеку OSHI Hardware Information, чтобы показать подробную информацию об оборудовании. У меня i5-4690K с базовой частотой 3,5 ГГц, разогнанной до 4,5 ГГц, и я могу показать только базовую частоту 3,5 ГГц. Возможно ли с OSHI или с JNA получить часы и множитель, чтобы показать это разогнанное значение 4,5 ГГц?

Я не знаком с этой библиотекой - просто примечание - вы можете попробовать связаться с авторами напрямую, если вы не получите здесь ответа. Похоже, библиотека находится на gitlab по адресу github.com/oshi/oshi

Erwin Bolwidt 15.03.2018 03:21

Да, я думаю, что автор не реализовал это в своем проекте, поэтому мне в основном любопытно, могу ли я получить эти данные с помощью JNA или другим способом.

Carath 15.03.2018 03:34

См. askubuntu.com/questions/218567/… - вы всегда можете запустить внешнюю программу из Java и проанализировать вывод.

Erwin Bolwidt 15.03.2018 03:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
137
1

Ответы 1

Я основной автор библиотеки OSHI. Выпуск # 418 на сайте github напрямую отвечает на ваш вопрос с комментарием, показывающим, как значение может быть получено в различных операционных системах:

Для Windows мы можем получить это из Win32_Processor (CurrentClockSpeed, MaxClockSpeed). В OSHI есть класс WMIUtil, который может упростить вам выполнение этой задачи внутри Java.

В macOS есть вызовы sysctl () hw.cpufrequency и hw.cpufrequency_max. Существует множество других примеров вызовов sysctl ().

Команда Linux lscpu имеет поле CPU MHz. Вам нужно будет разобрать текст. Могут быть другие альтернативы файловой системы / proc, которые работают быстрее.

FreeBSD имеет вызов sysctl () для dev.cpu.0.freq

В Solaris есть kstat cpu_info: 0: cpu_info0: clock_MHz (или current_clock_Hz). В OSHI есть Kstatutil.

Это (пока) не реализовано в OSHI, потому что ожидало (недавно завершенной) проблемы для подсчета пакетов, но это возможно сделать сейчас, и мы приветствуем запросы на вытягивание. Этот конкретный вариант очень доступен для реализации, и если вы решите его для себя, вы можете вернуть его сообществу.

Обновлено: Начиная с версии 4.0.0, теперь есть метод получения частоты процессора через собственные вызовы. Однако он сообщает только то, что ОС решила сообщать, что может быть неточным. Истинное значение требует поддержки драйверов на уровне ядра, доступной через сторонние программы (например, CPU-Z, OpenHardwareMonitor), но ее невозможно получить в Java через JNA.

Другие вопросы по теме