44 "fmt"
55 "log/slog"
66 "math"
7+ "perfspect/internal/cpus"
78 "perfspect/internal/report"
89 "perfspect/internal/script"
910 "perfspect/internal/target"
@@ -132,7 +133,7 @@ func setLlcSize(desiredLlcSize float64, myTarget target.Target, localTempDir str
132133 }
133134
134135 uarch := report .UarchFromOutput (outputs )
135- cpu , err := report .GetCPUByMicroArchitecture (uarch )
136+ cpu , err := cpus .GetCPUByMicroArchitecture (uarch )
136137 if err != nil {
137138 completeChannel <- setOutput {goRoutineID : goRoutineId , err : fmt .Errorf ("failed to get CPU by microarchitecture: %w" , err )}
138139 return
@@ -176,7 +177,7 @@ func setLlcSize(desiredLlcSize float64, myTarget target.Target, localTempDir str
176177 Name : "set LLC size" ,
177178 ScriptTemplate : fmt .Sprintf ("wrmsr -a 0xC90 %d" , msrVal ),
178179 Superuser : true ,
179- Vendors : []string {"GenuineIntel" },
180+ Vendors : []string {cpus . IntelVendor },
180181 // Depends: []string{"wrmsr"},
181182 // Lkms: []string{"msr"},
182183 }
@@ -203,7 +204,7 @@ func setCoreFrequency(coreFrequency float64, myTarget target.Target, localTempDi
203204 completeChannel <- setOutput {goRoutineID : goRoutineId , err : fmt .Errorf ("failed to get target vendor: %w" , err )}
204205 return
205206 }
206- if targetVendor != "GenuineIntel" {
207+ if targetVendor != cpus . IntelVendor {
207208 completeChannel <- setOutput {goRoutineID : goRoutineId , err : fmt .Errorf ("core frequency setting not supported on %s due to vendor mismatch" , myTarget .GetName ())}
208209 return
209210 }
@@ -214,7 +215,7 @@ func setCoreFrequency(coreFrequency float64, myTarget target.Target, localTempDi
214215 getScript := script.ScriptDefinition {
215216 Name : "get pstate driver" ,
216217 ScriptTemplate : "cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver" ,
217- Vendors : []string {"GenuineIntel" },
218+ Vendors : []string {cpus . IntelVendor },
218219 }
219220 output , err := runScript (myTarget , getScript , localTempDir )
220221 if err != nil {
@@ -231,7 +232,7 @@ func setCoreFrequency(coreFrequency float64, myTarget target.Target, localTempDi
231232 Name : "set frequency bins" ,
232233 ScriptTemplate : fmt .Sprintf ("wrmsr 0x774 %d" , value ),
233234 Superuser : true ,
234- Vendors : []string {"GenuineIntel" },
235+ Vendors : []string {cpus . IntelVendor },
235236 // Depends: []string{"wrmsr"},
236237 // Lkms: []string{"msr"},
237238 }
@@ -241,7 +242,7 @@ func setCoreFrequency(coreFrequency float64, myTarget target.Target, localTempDi
241242 Name : "set frequency bins" ,
242243 ScriptTemplate : fmt .Sprintf ("wrmsr 0x199 %d" , value ),
243244 Superuser : true ,
244- Vendors : []string {"GenuineIntel" },
245+ Vendors : []string {cpus . IntelVendor },
245246 // Depends: []string{"wrmsr"},
246247 // Lkms: []string{"msr"},
247248 }
@@ -256,7 +257,7 @@ func setCoreFrequency(coreFrequency float64, myTarget target.Target, localTempDi
256257 Name : "set frequency bins" ,
257258 ScriptTemplate : fmt .Sprintf ("wrmsr -a 0x1AD %d" , value ),
258259 Superuser : true ,
259- Vendors : []string {"GenuineIntel" },
260+ Vendors : []string {cpus . IntelVendor },
260261 // Depends: []string{"wrmsr"},
261262 // Lkms: []string{"msr"},
262263 }
@@ -326,7 +327,7 @@ func setUncoreDieFrequency(maxFreq bool, computeDie bool, uncoreFrequency float6
326327 setScript := script.ScriptDefinition {
327328 Name : "write max and min uncore frequency TPMI" ,
328329 ScriptTemplate : fmt .Sprintf ("pcm-tpmi 2 0x18 -d -b %s -w %d -i %s -e %s" , bits , value , die .instance , die .entry ),
329- Vendors : []string {"GenuineIntel" },
330+ Vendors : []string {cpus . IntelVendor },
330331 Depends : []string {"pcm-tpmi" },
331332 Superuser : true ,
332333 }
@@ -348,7 +349,7 @@ func setUncoreFrequency(maxFreq bool, uncoreFrequency float64, myTarget target.T
348349 scripts = append (scripts , script.ScriptDefinition {
349350 Name : "get uncore frequency MSR" ,
350351 ScriptTemplate : "rdmsr 0x620" ,
351- Vendors : []string {"GenuineIntel" },
352+ Vendors : []string {cpus . IntelVendor },
352353 Superuser : true ,
353354 // Depends: []string{"rdmsr"},
354355 // Lkms: []string{"msr"},
@@ -394,7 +395,7 @@ func setUncoreFrequency(maxFreq bool, uncoreFrequency float64, myTarget target.T
394395 Name : "set uncore frequency MSR" ,
395396 ScriptTemplate : fmt .Sprintf ("wrmsr -a 0x620 %d" , newVal ),
396397 Superuser : true ,
397- Vendors : []string {"GenuineIntel" },
398+ Vendors : []string {cpus . IntelVendor },
398399 // Depends: []string{"wrmsr"},
399400 // Lkms: []string{"msr"},
400401 }
@@ -410,7 +411,7 @@ func setTDP(power int, myTarget target.Target, localTempDir string, completeChan
410411 Name : "get power MSR" ,
411412 ScriptTemplate : "rdmsr 0x610" ,
412413 Superuser : true ,
413- Vendors : []string {"GenuineIntel" },
414+ Vendors : []string {cpus . IntelVendor },
414415 // Lkms: []string{"msr"},
415416 // Depends: []string{"rdmsr"},
416417 }
@@ -433,7 +434,7 @@ func setTDP(power int, myTarget target.Target, localTempDir string, completeChan
433434 Name : "set tdp" ,
434435 ScriptTemplate : fmt .Sprintf ("wrmsr -a 0x610 %d" , newVal ),
435436 Superuser : true ,
436- Vendors : []string {"GenuineIntel" },
437+ Vendors : []string {cpus . IntelVendor },
437438 // Depends: []string{"wrmsr"},
438439 // Lkms: []string{"msr"},
439440 }
@@ -472,7 +473,7 @@ func setEPB(epb int, myTarget target.Target, localTempDir string, completeChanne
472473 readScript := script.ScriptDefinition {
473474 Name : "read " + msr ,
474475 ScriptTemplate : "rdmsr " + msr ,
475- Vendors : []string {"GenuineIntel" },
476+ Vendors : []string {cpus . IntelVendor },
476477 Superuser : true ,
477478 // Lkms: []string{"msr"},
478479 // Depends: []string{"rdmsr"},
@@ -496,7 +497,7 @@ func setEPB(epb int, myTarget target.Target, localTempDir string, completeChanne
496497 Name : "set epb" ,
497498 ScriptTemplate : fmt .Sprintf ("wrmsr -a %s %d" , msr , msrValue ),
498499 Superuser : true ,
499- Vendors : []string {"GenuineIntel" },
500+ Vendors : []string {cpus . IntelVendor },
500501 // Depends: []string{"wrmsr"},
501502 // Lkms: []string{"msr"},
502503 }
@@ -515,7 +516,7 @@ func setEPP(epp int, myTarget target.Target, localTempDir string, completeChanne
515516 getScript := script.ScriptDefinition {
516517 Name : "get epp msr" ,
517518 ScriptTemplate : "rdmsr 0x774" , // IA32_HWP_REQUEST
518- Vendors : []string {"GenuineIntel" },
519+ Vendors : []string {cpus . IntelVendor },
519520 Superuser : true ,
520521 // Lkms: []string{"msr"},
521522 // Depends: []string{"rdmsr"},
@@ -539,7 +540,7 @@ func setEPP(epp int, myTarget target.Target, localTempDir string, completeChanne
539540 Name : "set epp" ,
540541 ScriptTemplate : fmt .Sprintf ("wrmsr -a 0x774 %d" , eppValue ),
541542 Superuser : true ,
542- Vendors : []string {"GenuineIntel" },
543+ Vendors : []string {cpus . IntelVendor },
543544 // Depends: []string{"wrmsr"},
544545 // Lkms: []string{"msr"},
545546 }
@@ -552,7 +553,7 @@ func setEPP(epp int, myTarget target.Target, localTempDir string, completeChanne
552553 getScript = script.ScriptDefinition {
553554 Name : "get epp pkg msr" ,
554555 ScriptTemplate : "rdmsr 0x772" , // IA32_HWP_REQUEST_PKG
555- Vendors : []string {"GenuineIntel" },
556+ Vendors : []string {cpus . IntelVendor },
556557 Superuser : true ,
557558 // Lkms: []string{"msr"},
558559 // Depends: []string{"rdmsr"},
@@ -576,7 +577,7 @@ func setEPP(epp int, myTarget target.Target, localTempDir string, completeChanne
576577 Name : "set epp" ,
577578 ScriptTemplate : fmt .Sprintf ("wrmsr -a 0x772 %d" , eppValue ),
578579 Superuser : true ,
579- Vendors : []string {"GenuineIntel" },
580+ Vendors : []string {cpus . IntelVendor },
580581 // Depends: []string{"wrmsr"},
581582 // Lkms: []string{"msr"},
582583 }
@@ -612,12 +613,12 @@ func setELC(elc string, myTarget target.Target, localTempDir string, completeCha
612613 return
613614 }
614615 setScript := script.ScriptDefinition {
615- Name : "set elc" ,
616- ScriptTemplate : fmt .Sprintf ("bhs-power-mode.sh --%s" , mode ),
617- Superuser : true ,
618- Vendors : []string {"GenuineIntel" },
619- Models : []string {"173 " , "174 " , "175 " , "221 " }, // GNR, GNR-D, SRF, CWF
620- Depends : []string {"bhs-power-mode.sh" , "pcm-tpmi" },
616+ Name : "set elc" ,
617+ ScriptTemplate : fmt .Sprintf ("bhs-power-mode.sh --%s" , mode ),
618+ Superuser : true ,
619+ Vendors : []string {cpus . IntelVendor },
620+ MicroArchitectures : []string {"GNR " , "GNR-D " , "SRF " , "CWF " },
621+ Depends : []string {"bhs-power-mode.sh" , "pcm-tpmi" },
621622 }
622623 _ , err := runScript (myTarget , setScript , localTempDir )
623624 if err != nil {
@@ -657,7 +658,7 @@ func setPrefetcher(enableDisable string, myTarget target.Target, localTempDir st
657658 getScript := script.ScriptDefinition {
658659 Name : "get prefetcher msr" ,
659660 ScriptTemplate : fmt .Sprintf ("rdmsr %d" , pf .Msr ),
660- Vendors : []string {"GenuineIntel" },
661+ Vendors : []string {cpus . IntelVendor },
661662 Superuser : true ,
662663 // Lkms: []string{"msr"},
663664 // Depends: []string{"rdmsr"},
@@ -692,7 +693,7 @@ func setPrefetcher(enableDisable string, myTarget target.Target, localTempDir st
692693 Name : "set prefetcher" + prefetcherType ,
693694 ScriptTemplate : fmt .Sprintf ("wrmsr -a %d %d" , pf .Msr , newVal ),
694695 Superuser : true ,
695- Vendors : []string {"GenuineIntel" },
696+ Vendors : []string {cpus . IntelVendor },
696697 // Depends: []string{"wrmsr"},
697698 // Lkms: []string{"msr"},
698699 }
@@ -762,7 +763,7 @@ func setC1Demotion(enableDisable string, myTarget target.Target, localTempDir st
762763 getScript := script.ScriptDefinition {
763764 Name : "get C1 demotion" ,
764765 ScriptTemplate : "rdmsr 0xe2" ,
765- Vendors : []string {"GenuineIntel" },
766+ Vendors : []string {cpus . IntelVendor },
766767 Superuser : true ,
767768 // Lkms: []string{"msr"},
768769 // Depends: []string{"rdmsr"},
@@ -797,7 +798,7 @@ func setC1Demotion(enableDisable string, myTarget target.Target, localTempDir st
797798 setScript := script.ScriptDefinition {
798799 Name : "set C1 demotion" ,
799800 ScriptTemplate : fmt .Sprintf ("wrmsr -a %d %d" , 0xe2 , newVal ),
800- Vendors : []string {"GenuineIntel" },
801+ Vendors : []string {cpus . IntelVendor },
801802 Superuser : true ,
802803 // Depends: []string{"wrmsr"},
803804 // Lkms: []string{"msr"},
0 commit comments