Skip to content

Commit 5103271

Browse files
authored
don't check for PMUs in use if noroot flag given (#541)
Signed-off-by: Harper, Jason M <[email protected]>
1 parent b0f6467 commit 5103271

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

cmd/metrics/metrics.go

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,20 +1147,22 @@ func prepareTarget(targetContext *targetContext, localTempDir string, localPerfP
11471147
var err error
11481148
_ = statusUpdate(myTarget.GetName(), "configuring target")
11491149
// are PMUs being used on target?
1150-
if family, err := myTarget.GetFamily(); err == nil && cpus.IsIntelCPUFamilyStr(family) {
1151-
output, err := script.RunScript(myTarget, script.GetScriptByName(script.PMUBusyScriptName), localTempDir)
1152-
if err != nil {
1153-
err = fmt.Errorf("failed to check if PMUs are in use: %w", err)
1154-
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %v", err))
1155-
targetContext.err = err
1156-
channelError <- targetError{target: myTarget, err: err}
1157-
return
1158-
}
1159-
for line := range strings.SplitSeq(output.Stdout, "\n") {
1160-
// if one of the PMU MSR registers is active, then the PMU is in use (ignore cpu_cycles)
1161-
if strings.Contains(line, "Active") && !strings.Contains(line, "0x30a") {
1162-
slog.Warn("PMU is in use on target", slog.String("target", myTarget.GetName()), slog.String("line", line))
1163-
_ = statusUpdate(myTarget.GetName(), "Warning: PMU in use, see log for details")
1150+
if !flagNoRoot {
1151+
if family, err := myTarget.GetFamily(); err == nil && cpus.IsIntelCPUFamilyStr(family) {
1152+
output, err := script.RunScript(myTarget, script.GetScriptByName(script.PMUBusyScriptName), localTempDir)
1153+
if err != nil {
1154+
err = fmt.Errorf("failed to check if PMUs are in use: %w", err)
1155+
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %v", err))
1156+
targetContext.err = err
1157+
channelError <- targetError{target: myTarget, err: err}
1158+
return
1159+
}
1160+
for line := range strings.SplitSeq(output.Stdout, "\n") {
1161+
// if one of the PMU MSR registers is active, then the PMU is in use (ignore cpu_cycles)
1162+
if strings.Contains(line, "Active") && !strings.Contains(line, "0x30a") {
1163+
slog.Warn("PMU is in use on target", slog.String("target", myTarget.GetName()), slog.String("line", line))
1164+
_ = statusUpdate(myTarget.GetName(), "Warning: PMU in use, see log for details")
1165+
}
11641166
}
11651167
}
11661168
}

0 commit comments

Comments
 (0)