From 431fad7d9b0d0e7c35bfd02784cfd562e20b8f24 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 31 Aug 2026 19:25:07 +0000 Subject: [PATCH 1/3] Initial plan From b0a764d843fab2cf3f433af7cd8d12cbef52afea Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 31 Aug 2026 19:25:54 +0000 Subject: [PATCH 2/3] Add timeout 30 to perf stat capability probe scripts in metadata.go Co-authored-by: romirdes <86635949+romirdes@users.noreply.github.com> --- cmd/metrics/metadata.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cmd/metrics/metadata.go b/cmd/metrics/metadata.go index fd5a3cf7..d47a6ce1 100644 --- a/cmd/metrics/metadata.go +++ b/cmd/metrics/metadata.go @@ -226,52 +226,52 @@ BEGIN { }, { Name: scriptPerfStatInstructions, - ScriptTemplate: "perf stat -a -e instructions sleep 1", + ScriptTemplate: "timeout 30 perf stat -a -e instructions sleep 1", Depends: []string{"perf"}, }, { Name: scriptPerfStatRefCycles, - ScriptTemplate: "perf stat -a -e ref-cycles sleep 1", + ScriptTemplate: "timeout 30 perf stat -a -e ref-cycles sleep 1", Depends: []string{"perf"}, }, { Name: scriptPerfStatPEBS, - ScriptTemplate: "perf stat -a -e INT_MISC.UNKNOWN_BRANCH_CYCLES sleep 1", + ScriptTemplate: "timeout 30 perf stat -a -e INT_MISC.UNKNOWN_BRANCH_CYCLES sleep 1", Architectures: []string{cpus.X86Architecture}, Depends: []string{"perf"}, }, { Name: scriptPerfStatOCR, - ScriptTemplate: "perf stat -a -e OCR.READS_TO_CORE.LOCAL_DRAM sleep 1", + ScriptTemplate: "timeout 30 perf stat -a -e OCR.READS_TO_CORE.LOCAL_DRAM sleep 1", Architectures: []string{cpus.X86Architecture}, Depends: []string{"perf"}, }, { Name: scriptPerfStatTMA, - ScriptTemplate: "perf stat -a -e '{topdown.slots, topdown-bad-spec}' sleep 1", + ScriptTemplate: "timeout 30 perf stat -a -e '{topdown.slots, topdown-bad-spec}' sleep 1", Architectures: []string{cpus.X86Architecture}, Depends: []string{"perf"}, }, { Name: scriptPerfStatAMDUncoreProbe, - ScriptTemplate: `perf stat -a -e "l3/event=0x4,umask=0xff,enallcores=0x1,enallslices=0x1,threadmask=0x3,name='l3_lookup_state.all_coherent_accesses_to_l3'/" sleep 1`, + ScriptTemplate: `timeout 30 perf stat -a -e "l3/event=0x4,umask=0xff,enallcores=0x1,enallslices=0x1,threadmask=0x3,name='l3_lookup_state.all_coherent_accesses_to_l3'/" sleep 1`, Architectures: []string{cpus.X86Architecture}, Vendors: []string{cpus.AMDVendor}, Depends: []string{"perf"}, }, { Name: scriptPerfStatFixedInstr, - ScriptTemplate: "perf stat -a -e '{{{.InstructionsList}}}' sleep 1", + ScriptTemplate: "timeout 30 perf stat -a -e '{{{.InstructionsList}}}' sleep 1", Depends: []string{"perf"}, }, { Name: scriptPerfStatFixedCycles, - ScriptTemplate: "perf stat -a -e '{{{.CpuCyclesList}}}' sleep 1", + ScriptTemplate: "timeout 30 perf stat -a -e '{{{.CpuCyclesList}}}' sleep 1", Depends: []string{"perf"}, }, { Name: scriptPerfStatFixedRefCycles, - ScriptTemplate: "perf stat -a -e '{{{.RefCyclesList}}}' sleep 1", + ScriptTemplate: "timeout 30 perf stat -a -e '{{{.RefCyclesList}}}' sleep 1", Depends: []string{"perf"}, }, { From 5b85a8dc40a198b5066019fe4009b4f9b479166b Mon Sep 17 00:00:00 2001 From: romirdes Date: Mon, 31 Aug 2026 13:46:20 -0700 Subject: [PATCH 3/3] Add timeout 30 to perf list --json probe scripts to prevent hang on large virtualized instances perf list --json can also stall indefinitely on some hypervisors (e.g. m6i.16xlarge), just like perf stat. The stderr.txt from the failing test showed PerfSpect was stuck at "collecting metadata", and perf list is the remaining unguarded perf command in that stage. Wrap both scriptPerfSupportedEvents and scriptPerfAllSupportedEvents with timeout 30 to bound them consistently with the perf stat probes. --- cmd/metrics/metadata.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/metrics/metadata.go b/cmd/metrics/metadata.go index d47a6ce1..1a5deb7f 100644 --- a/cmd/metrics/metadata.go +++ b/cmd/metrics/metadata.go @@ -147,7 +147,7 @@ var baseMetadataScripts = []script.ScriptDefinition{ { Name: scriptPerfSupportedEvents, ScriptTemplate: `# Parse perf list JSON output to extract Hardware events and cstate/power events -perf list --json 2>/dev/null | awk ' +timeout 30 perf list --json 2>/dev/null | awk ' BEGIN { in_hardware_event = 0 event_name = "" @@ -192,7 +192,7 @@ BEGIN { { Name: scriptPerfAllSupportedEvents, ScriptTemplate: `# Parse perf list JSON output to extract Hardware events and cstate/power events -perf list --json 2>/dev/null | awk ' +timeout 30 perf list --json 2>/dev/null | awk ' BEGIN { event_name = "" }