我正在使用 OSHI 硬件信息库来显示硬件的详细信息。我将 i5-4690K 基本 3,5GHz 超频到 4,5GHz,我只能显示基本 3,5GHz。是否可以使用 OSHI 或 JNA 获得时钟和乘法器来显示这个超频值 4,5Ghz?
1 回答
我是 OSHI 库的主要作者。 github 站点上的 Issue #418直接回答了您的问题,并附有说明如何在各种操作系统上检索该值的注释:
对于 Windows,我们可以从 Win32_Processor (CurrentClockSpeed, MaxClockSpeed) 获得这个。OSHI 有一个 WMIUtil 类,可以让您在 Java 中更轻松地完成此操作。
macOS 有一个 sysctl() 调用 hw.cpufrequency 和 hw.cpufrequency_max。还有很多其他的 sysctl() 调用示例。
Linux lscpu 命令有一个 CPU MHz 字段。您必须对此进行文本解析。可能还有其他更快的 /proc 文件系统替代方案。
FreeBSD 对 dev.cpu.0.freq 有 sysctl() 调用
Solaris 有 kstat cpu_info:0:cpu_info0:clock_MHz(或 current_clock_Hz)。OSHI 有一个 Kstatutil。
这尚未(尚未)实施到 OSHI 中,因为它正在等待(最近完成的)问题来计算包,但现在可以这样做,我们欢迎拉取请求。这个特定的实现非常容易,如果您自己解决它,您可以回馈社区。
更新:从 4.0.0 版开始,现在有一种通过本机调用获取 CPU 频率的方法。但是,它只报告操作系统选择报告的可能不准确的内容。真正的值需要可通过第三方程序(例如 CPU-Z、OpenHardwareMonitor)获得内核级驱动程序支持,但无法通过 JNA 在 Java 中获得。