diff --git a/cmd/metrics/metadata.go b/cmd/metrics/metadata.go index 3314a8d..288439e 100644 --- a/cmd/metrics/metadata.go +++ b/cmd/metrics/metadata.go @@ -627,6 +627,8 @@ func getNumGPCounters(uarch string) (numGPCounters int, err error) { fallthrough case "SRF": fallthrough + case "CWF": + fallthrough case "GNR": numGPCounters = 8 case "Gen": diff --git a/internal/report/table_defs.go b/internal/report/table_defs.go index 818a630..1149f31 100644 --- a/internal/report/table_defs.go +++ b/internal/report/table_defs.go @@ -258,8 +258,6 @@ var tableDefinitions = map[string]TableDefinition{ script.MaximumFrequencyScriptName, script.SpecCoreFrequenciesScriptName, script.PPINName, - script.PrefetchControlName, - script.PrefetchersName, script.L3WaySizeName}, FieldsFunc: cpuTableValues, InsightsFunc: cpuTableInsights}, @@ -1040,6 +1038,7 @@ func cpuTableInsights(outputs map[string]script.ScriptOutput, tableValues TableV "SPR": 6, "EMR": 7, "SRF": 8, + "CWF": 8, "GNR": 8, } uarch := tableValues.Fields[uarchIndex].Values[0] @@ -1175,7 +1174,7 @@ func uncoreTableValues(outputs map[string]script.ScriptOutput) []Field { slog.Error("failed to get uarch from script outputs") return []Field{} } - if strings.Contains(uarch, "SRF") || strings.Contains(uarch, "GNR") { + if strings.Contains(uarch, "SRF") || strings.Contains(uarch, "GNR") || strings.Contains(uarch, "CWF") { return []Field{ {Name: "Min Frequency (Compute)", Values: []string{uncoreMinMaxDieFrequencyFromOutput(false, true, outputs)}}, {Name: "Min Frequency (I/O)", Values: []string{uncoreMinMaxDieFrequencyFromOutput(false, false, outputs)}}, @@ -1943,7 +1942,7 @@ func configurationTableValues(outputs map[string]script.ScriptOutput) []Field { {Name: "Package Power / TDP", Values: []string{tdpFromOutput(outputs)}}, {Name: "All-Core Max Frequency", Values: []string{allCoreMaxFrequencyFromOutput(outputs)}}, } - if strings.Contains(uarch, "SRF") || strings.Contains(uarch, "GNR") { + if strings.Contains(uarch, "SRF") || strings.Contains(uarch, "GNR") || strings.Contains(uarch, "CWF") { fields = append(fields, []Field{ {Name: "Uncore Min Frequency (Compute)", Values: []string{uncoreMinMaxDieFrequencyFromOutput(false, true, outputs)}}, {Name: "Uncore Min Frequency (I/O)", Values: []string{uncoreMinMaxDieFrequencyFromOutput(false, false, outputs)}}, @@ -1962,7 +1961,7 @@ func configurationTableValues(outputs map[string]script.ScriptOutput) []Field { {Name: "Scaling Governor", Values: []string{strings.TrimSpace(outputs[script.ScalingGovernorScriptName].Stdout)}}, }...) // add ELC (for SRF and GNR only) - if strings.Contains(uarch, "SRF") || strings.Contains(uarch, "GNR") { + if strings.Contains(uarch, "SRF") || strings.Contains(uarch, "GNR") || strings.Contains(uarch, "CWF") { fields = append(fields, Field{Name: "Efficiency Latency Control", Values: []string{elcSummaryFromOutput(outputs)}}) } // add prefetchers diff --git a/internal/report/table_helpers.go b/internal/report/table_helpers.go index 2aa497d..e144be3 100644 --- a/internal/report/table_helpers.go +++ b/internal/report/table_helpers.go @@ -257,7 +257,7 @@ func getSpecCoreFrequenciesFromOutput(outputs map[string]script.ScriptOutput) ([ var buckets []string startRange := 1 var archMultiplier int - if strings.Contains(arch, "SRF") { + if strings.Contains(arch, "SRF") || strings.Contains(arch, "CWF") { archMultiplier = 4 } else if strings.Contains(arch, "GNR_X3") { archMultiplier = 3 @@ -1240,6 +1240,12 @@ func clusteringModeFromOutput(outputs map[string]script.ScriptOutput) string { } else if nodesPerSocket == 2 { return "SNC 2" } + } else if uarch == "CWF" { + if nodesPerSocket == 1 { + return "UMA 6 (Hex)" + } else if nodesPerSocket == 3 { + return "SNC 3" + } } return "" }