SFMRM ('sifˌmərˌim)
Sudoless Frequency Metric Retrieval for MacOS
This project is designed to retrieve active frequency and residency metrics from your Macs CPU (per-core, per-cluster) and GPU (complex) as accurately and efficiently as possible; accessing the same data as the Powermetrics command line tool, but without requiring sudo
or a kernel extension. This is the product of months of reverse engineering, deep analysis, and rigorous testing.
If you would like to support my efforts towards this project, please consider donating to my Cash App.
Installation and Usage
Installation and usage is simple:
- Download your architecture specific binary .zip from the latest release.
- Unzip the downloaded file (from Finder or Terminal)
- Move the binary to your desired location and execute via the Terminal using
sfmrm-${ARCH}-client
.
To see all available cmd options for your binary, use sfmrm-${ARCH}-client --help
.
Capabilities
The following metrics are available on specific architectures.
On Apple Silicon
- CPU Name, Code Name, and Core Counts
- CPU Cluster Microarchitecture Names
- CPU Per-core and Per-cluster Active Frequencies and Active/Idle Residencies
- CPU (Clusters) and GPU P-State frequency distribution
- GPU Complex Active Frequencies and Active/Idle Residencies
On Intel
- CPU Brand Name and Base Frequency
- CPU Performance Limits, Maximum (P-Limited) Turbo Boost, and Package Clock Multiplier
- CPU Per-core and Package Active Frequencies and Active/Idle Residencies
- GPU Performance Limits, Maximum (P-Limited) Dynamic Frequnecy, and Residencies
Example Outputs
The following shows examples on what outputs to expect on specific architectures.
On Apple Silicon
Here is an example using binary sfmrm-arm64-client
on an M1 Mac Mini:
*** Sampling: Apple M1 [T8103] (4P+4E+8GPU) ***
**** "Icestorm" Efficiency Cluster Metrics ****
E-Cluster [0] HW Active Frequency: 1071 MHz
E-Cluster [0] HW Active Residency: 11.994%
E-Cluster [0] Idle Frequency: 88.006%
Core 0:
Active Frequency: 1129 MHz
Active Residency: 6.799%
Idle Residency: 93.201%
Core 1:
Active Frequency: 1004 MHz
Active Residency: 4.364%
Idle Residency: 95.636%
Core 2:
Active Frequency: 990 MHz
Active Residency: 3.951%
Idle Residency: 96.049%
Core 3:
Active Frequency: 1032 MHz
Active Residency: 2.023%
Idle Residency: 97.977%
**** "Firestorm" Performance Cluster Metrics ****
P-Cluster [0] HW Active Frequency: 1473 MHz
P-Cluster [0] HW Active Residency: 4.383%
P-Cluster [0] Idle Frequency: 95.617%
Core 4:
Active Frequency: 1487 MHz
Active Residency: 3.730%
Idle Residency: 96.270%
Core 5:
Active Frequency: 1396 MHz
Active Residency: 0.739%
Idle Residency: 99.261%
Core 6:
Active Frequency: 600 MHz
Active Residency: 0.005%
Idle Residency: 99.995%
Core 7:
Active Frequency: 600 MHz
Active Residency: 0.005%
Idle Residency: 99.995%
**** Integrated Graphics Metrics ****
GPU Active Frequency: 712 MHz
GPU Active Residency: 1.581%
GPU Idle Frequency: 98.419%
On Intel
Here is an example using binary sfmrm-x86_64-client
on an Intel® Core™ i7-4578U 13" MacBook Pro:
*** Sampling: Intel(R) Core(TM) i7-4578U CPU @ 3.00GHz ***
**** Package Metrics ****
Package Performance Limiters: MAX_TURBO_LIMIT
Package Maximum Turbo Boost: 3500 MHz
Package Clock Multiplier: x21.8
Package Active Frequency: 2184 MHz
Package Active Residency: 55.83%
Package Idle Residency: 44.17%
Core 0:
Active Frequency: 2207 MHz
Active Residency: 66.34%
Idle Residency: 33.66%
Core 1:
Active Frequency: 2132 MHz
Active Residency: 47.00%
Idle Residency: 53.00%
Core 2:
Active Frequency: 2992 MHz
Active Residency: 65.00%
Idle Residency: 35.00%
Core 3:
Active Frequency: 2412 MHz
Active Residency: 45.00%
Idle Residency: 55.00%
**** Integrated Graphics Metrics ****
iGPU Performance Limiters: VR_ICCMAX
iGPU Limited Dynamic Frequency: 1200 MHz
iGPU Active Residency: 4.00%
iGPU Idle Frequency: 96.00%
Bugs and Issues
Identified
-
Outputs on M1 Pro/Max/Ultra may not work as expected (IOReport entries are unknown so support is unofficial)
If any other bugs or issues are identified or you want your system supported, please let me know in the issues section.