diff --git a/python/MooreTests/make_profile_plots.py b/python/MooreTests/make_profile_plots.py
index 096f0cb0ec789bc948c0f9fa5966501a82ce3f8a..50fb302f319ad70897adb0798b506c9953cdd264 100755
--- a/python/MooreTests/make_profile_plots.py
+++ b/python/MooreTests/make_profile_plots.py
@@ -38,7 +38,13 @@ HEAPTRACK_ARGS = [
 def main(listOfLogs, hltlabel, throughput, produceYAML, ht_file, heaptrack,
          perf_exe, no_inline):
 
-    llvm_cxxfilt_path = "/cvmfs/sft.cern.ch/lcg/contrib/clang/12/x86_64-centos7/bin/llvm-cxxfilt"
+    binary_tag = os.environ["BINARY_TAG"]
+    if "centos7" in binary_tag.split("-"):
+        llvm_cxxfilt_path = "/cvmfs/sft.cern.ch/lcg/contrib/clang/12/x86_64-centos7/bin/llvm-cxxfilt"
+    elif "el9" in binary_tag.split("-"):
+        llvm_cxxfilt_path = "/cvmfs/sft.cern.ch/lcg/releases/clang/14.0.6-14bdb/x86_64-centos9/bin/llvm-cxxfilt"
+    else:
+        raise RuntimeError(f"{binary_tag=} not supported")
     if os.path.isfile(llvm_cxxfilt_path):
         demangle = llvm_cxxfilt_path
     else:
diff --git a/python/MooreTests/run_throughput_jobs.py b/python/MooreTests/run_throughput_jobs.py
index a5bec228a984e6a0fbb24cf3e8409a9a40b6685f..08c1683a10fd483a164a42a3d38be173ad2956f2 100755
--- a/python/MooreTests/run_throughput_jobs.py
+++ b/python/MooreTests/run_throughput_jobs.py
@@ -59,6 +59,8 @@ import subprocess
 import tempfile
 from itertools import cycle, islice
 
+IS_EL9 = '-el9-' in os.environ["BINARY_TAG"]
+
 
 def rep(x, length):
     return list(islice(cycle(x), length))
@@ -220,8 +222,12 @@ options.preamble_algs = [
 
     if args.profile:
         # see module docstring for more info about perf
-        perf_exe = "perf_libunwind_lcg101"
-        if not has_command(["perf_libunwind_lcg101"]):
+        if IS_EL9:
+            perf_exe = "perf"
+        else:
+            perf_exe = "perf_libunwind_lcg101"
+
+        if not has_command([perf_exe]):
             from Moore.qmtest.context import xrdcp
             from pathlib import Path
             import stat