#frequency #cpu #processor #mhz

calcmhz

估算CPU(处理器)核心频率

9个版本

0.1.8 2024年7月27日
0.1.7 2024年2月12日
0.1.6 2023年11月24日
0.1.5 2023年10月9日
0.1.3 2023年9月24日

#211硬件支持

Download history 138/week @ 2024-07-26 7/week @ 2024-08-02

每月145 次下载

Apache-2.0

17KB
410

calcmhz

Rust crate用于估算CPU(处理器)核心频率。可在crates.io上找到。

通过测量依赖链中一系列指令的运行时间来估算CPU频率。指令序列以汇编形式编写,如下所示

	addi a1,a1,1
	addi a1,a1,1
	addi a1,a1,1
	addi a1,a1,1

此方法不使用性能计数器(除了墙钟),如果系统上有这样的功能,则估算的频率可能是增强频率,受温度和其他条件影响。

尽管这种方法在大多数情况下都能正常工作,但有一些已知示例表明,这种测量报告的实际运行频率为实际频率的一半(例如,IBM POWER7和POWER8)。还有一个例子表明,这种程序报告的频率是实际频率的两倍:Pentium 4。它以双倍频率运行ALU。

此crate目前支持以下平台

ISA Linux macOS Windows(MSVC)
aarch64
arm
i586
i686
mips
mips64
powerpc
powerpc64
riscv64
s390x 尚未
sparc
sparc64
x86_64

示例

let cpu_frequency_in_mhz = calcmhz::mhz().unwrap();
println!("{} MHz", cpu_frequency_in_mhz);

完整文档可在docs.rs中找到。

命令行界面

仓库中cli目录中的文件提供了一个简单的命令行界面,用于访问此crate的功能。

calcmhz  --help
Command line interface for the calcmhz

Usage: calcmhz [OPTIONS]

Options:
  -d, --duration <DURATION>  Minimum duration to run the test in seconds [default: 500ms]
  -l, --loops <LOOPS>        Initial number of loops. Automatically increased to exceed the minimum duration [default: 10000]
  -h, --help                 Print help
  -V, --version              Print version

自动化的Docker镜像

上述命令行实用程序在CI管道中自动构建并发布为Docker容器镜像格式。请访问GitLab容器注册库获取最新标签。

使用示例

podman run -it --rm registry.gitlab.com/tomari/calcmhz:latest

许可证

版权所有 2023 Hisanobu Tomari

根据Apache License,版本2.0(“许可证”);除非遵守许可证规定,否则不得使用此文件。您可以在以下位置获取许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础提供,不提供任何明示或暗示的保证或条件。有关许可证的具体语言规定权限和限制,请参阅许可证。

依赖关系

~0.3–0.9MB
~20K SLoC