#mac #cpu #sysctl #info #system-information #system #access-key

bin+lib mac-sys-info

CLI + 库,用于获取 Mac 系统的详细信息。包括 CPU、缓存(L1-L3)、内存等。

13 个版本

0.1.13 2021 年 1 月 10 日
0.1.12 2020 年 12 月 1 日
0.1.11 2020 年 11 月 30 日

#74 in macOS 和 iOS API


3 个crate中使用(通过memflow-native

MIT 许可证

340KB
5K SLoC

mac-sys-info

CLI + 库,用于获取 Mac 系统的详细信息。包括 CPU、缓存(L1,L2,L3)、内存等。该库是对 Mac 上 $ sysctl -a 命令输出的所有信息的封装。它提供了对结构的访问,以及对从 $ sysctl - 获得的所有键的原始访问。

作为库或 CLI 使用

作为库

Cargo.toml

mac-sys-info = "<insert latest version>"

代码

use mac_sys_info::get_mac_sys_info;
use mac_sys_info::generated_sysctl_keys::SysctlKey;

fn main() {
    // get struct with all information
    let info = get_mac_sys_info().unwrap();
    
    // even if IDE shows that the Display trait is missing:
    // it is there. It gets implemented during compile time
    // by "derive_macro" crate.
    println!("{}", info.cpu_info());
    println!("{}", info.cpu_info().cache_info());
    // ...
    println!("CPU @ {} Ghz", info.cpu_info().frequency_ghz());
    
    // IMPORTANT: Raw Access to all SysctlKeys is
    // available! Keys are located in enum `SysctlKey`
    println!("L3 Cache size extracted manually: {}",
             info.all_keys().get(SysctlKey::HwL3cachesize.name()).unwrap()
    );
    
    // Some convenient getters.
    println!("L2 Cache Size in KB: {}",
             info.cpu_info().cache_info().l2_cache_size_kb()
    );
    println!("System has {} GB of RAM", info.mem_info().total_memory_mb())
}

作为 CLI 运行/安装

$ cargo install mac-sys-info
$ mac-sys-info      # simple
$ mac-sys-info -h   # help
$ mac-sys-info -c   # complex
$ mac-sys-info -r   # raw

示例输出

CPU:
    name     : Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
    arch     : X86_64
    cores    : 4
    frequency: 2.7 GHz
    L1D-Cache: 32KB
    L1I-Cache: 32KB
    L2-Cache : 256KB
    L3-Cache : 3072KB

Memory:
    total: 8192MB

OS:
    version: 10.15.7
    kernel : Darwin Kernel Version 19.6.0Thu Oct 29 225645 PDT 2020; rootxnu-6153.141.2.2~1/RELEASE_X86_64

为什么还需要另一个工具?

确实已经有一个流行的crate叫做 sys-info,但它的确不显示 L1 缓存大小或一般缓存的信息。我需要这些信息来完成我正在做的一个任务。因此,我创建了这个crate。这也很有趣,并且像往常一样,我学到了新的东西。 :)

许可证

MIT 许可证。请参阅仓库中的 "LICENSE" 文件。

依赖项

~4–13MB
~141K SLoC