From 6828d6eea1e834231e35547dce0172f659dca6f4 Mon Sep 17 00:00:00 2001 From: Artur Sarlo Date: Wed, 8 Apr 2026 22:10:22 +0000 Subject: [PATCH] Fix the arguments ordering for perf commands --- gprofiler/utils/perf.py | 12 +++++------- gprofiler/utils/perf_process.py | 4 ++-- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/gprofiler/utils/perf.py b/gprofiler/utils/perf.py index 607c7387b..4fea8bfbb 100644 --- a/gprofiler/utils/perf.py +++ b/gprofiler/utils/perf.py @@ -99,12 +99,10 @@ def discover_appropriate_perf_event( "sleep", "0.5", ] # `sleep 0.5` is enough to be certain some samples should've been collected. - # For discovery, we need to ensure we can capture the 'sleep 0.5' command - # When using cgroups, the sleep command won't be in any target cgroup, - # so we use system-wide profiling for discovery regardless of the final mode - discovery_pids = None if use_cgroups else pids - discovery_use_cgroups = False # Always use system-wide for discovery - + # For discovery, always use system-wide profiling so that `sleep 0.5` is captured + # regardless of the final profiling mode (pid-based or cgroup-based). + discovery_use_cgroups = False + perf_process = PerfProcess( frequency=11, stop_event=stop_event, @@ -112,7 +110,7 @@ def discover_appropriate_perf_event( is_dwarf=False, inject_jit=False, extra_args=current_extra_args, - processes_to_profile=discovery_pids, + processes_to_profile=None, # None -> system-wide (-a), placed before -- by _get_perf_cmd switch_timeout_s=15, use_cgroups=discovery_use_cgroups, max_cgroups=max_cgroups, diff --git a/gprofiler/utils/perf_process.py b/gprofiler/utils/perf_process.py index e5f0703e9..cdbe4333f 100644 --- a/gprofiler/utils/perf_process.py +++ b/gprofiler/utils/perf_process.py @@ -192,8 +192,8 @@ def _get_perf_cmd(self) -> List[str]: "-m", str(self._MMAP_SIZES[self._type]), ] - + extra_args # Events must come before cgroups - + self._pid_args + + self._pid_args # -a or --pid must come before extra_args which may contain -- + + extra_args # Events must come before cgroups; may contain -- cmd for discovery + self._cgroup_args + (["-k", "1"] if self._inject_jit else []) )