Skip to content

Commit e31144b

Browse files
committed
Fixes for P-CPU
1 parent a95b0ce commit e31144b

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

main.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -805,24 +805,24 @@ func parseCPUMetrics(powermetricsOutput string, cpuMetrics CPUMetrics, modelName
805805

806806
cpuMetrics.ECores = eCores
807807
cpuMetrics.PCores = pCores
808-
if cpuMetrics.E1ClusterActive != 0 {
809-
// M1 Ultra
808+
multra, mmax := false, false
809+
if cpuMetrics.E1ClusterActive != 0 { // M1 Ultra
810810
cpuMetrics.EClusterActive = (cpuMetrics.E0ClusterActive + cpuMetrics.E1ClusterActive) / 2
811811
cpuMetrics.EClusterFreqMHz = max(cpuMetrics.E0ClusterFreqMHz, cpuMetrics.E1ClusterFreqMHz)
812+
multra = true
812813
}
813-
if cpuMetrics.P3ClusterActive != 0 {
814-
// M1 Ultra
814+
if cpuMetrics.P3ClusterActive != 0 { // M1 Ultra
815815
cpuMetrics.PClusterActive = (cpuMetrics.P0ClusterActive + cpuMetrics.P1ClusterActive + cpuMetrics.P2ClusterActive + cpuMetrics.P3ClusterActive) / 4
816816
cpuMetrics.PClusterFreqMHz = max(cpuMetrics.P0ClusterFreqMHz, cpuMetrics.P1ClusterFreqMHz, cpuMetrics.P2ClusterFreqMHz, cpuMetrics.P3ClusterFreqMHz)
817-
} else if cpuMetrics.P1ClusterActive != 0 {
818-
// M1/M2/M3 Max/Pro
817+
multra = true
818+
} else if cpuMetrics.P1ClusterActive != 0 && !multra { // M1/M2/M3 Max/Pro
819819
cpuMetrics.PClusterActive = (cpuMetrics.P0ClusterActive + cpuMetrics.P1ClusterActive) / 2
820820
cpuMetrics.PClusterFreqMHz = max(cpuMetrics.P0ClusterFreqMHz, cpuMetrics.P1ClusterFreqMHz)
821-
} else {
822-
// M1
821+
mmax = true
822+
} else if !multra && !mmax { // M1
823823
cpuMetrics.PClusterActive = cpuMetrics.PClusterActive + cpuMetrics.P0ClusterActive
824824
}
825-
if eClusterCount > 0 { // Calculate average active residency and frequency for E and P clusters
825+
if eClusterCount > 0 && !multra && !mmax { // Calculate average active residency and frequency for E and P clusters
826826
cpuMetrics.EClusterActive = eClusterActiveTotal / eClusterCount
827827
}
828828
}

0 commit comments

Comments
 (0)