Skip to content

perf(geekbench): Add Geekbench runner and its lava yaml files#260

Merged
vnarapar merged 7 commits intoqualcomm-linux:mainfrom
smuppand:sysbench
Feb 12, 2026
Merged

perf(geekbench): Add Geekbench runner and its lava yaml files#260
vnarapar merged 7 commits intoqualcomm-linux:mainfrom
smuppand:sysbench

Conversation

@smuppand
Copy link
Contributor

This PR improves the Geekbench performance test in qcom-linux-testkit by making the runner more CI/LAVA-friendly and adding structured outputs.

What changed

  • Geekbench runner (Runner/suites/Performance/Geekbench/run.sh)
    • Supports live console progress updates during execution.
    • Produces per-iteration logs under the chosen --outdir.
    • Generates two CSVs:
      • geekbench_summary.csv (summary scores per run + average)
      • geekbench_workloads.csv (per-workload scores/throughput)
  • Uses existing performance helpers and keeps behavior POSIX + ShellCheck clean.
  • Keeps LAVA-friendly behavior: always exits 0 and writes PASS/FAIL/SKIP to .res.
  • Performance library (Runner/utils/lib_performance.sh)
    • Adds/reuses Geekbench helper functions for:
    • live progress parsing (Single-Core / Multi-Core / Benchmark Summary)
    • summary parsing + workload extraction
    • CSV init/append helpers
  • LAVA YAML / configs
  • Updates YAML commands to match current run.sh CLI:
    • --no-perf-gov is a flag (no 0/1 argument)
    • adds --progress-heartbeat "$HEARTBEAT_SECS"
  • Fixes the single-core/multi-core/full command blocks to forward args correctly and preserve multiline style.
  • Docs
    • README updated with usage examples, outputs, and common run patterns (single-core, multi-core, full).

…outputs

- Add POSIX-safe progress runner (fifo + heartbeat) without PIPESTATUS
- Add summary/workload parsers and CSV init/append helpers
- Add Geekbench bin resolver + unlock helper
- Keep helpers self-contained for reuse by Geekbench runner

Signed-off-by: Srikanth Muppandam <smuppand@qti.qualcomm.com>
…ummaries

- Add robust init_env discovery and dependency checks
- Support wrapper options (runs/outdir/res/bin/core-list/unlock/heartbeat)
- Forward unknown args to Geekbench and support raw forwarding via --
- Generate summary/workloads CSV and final readable summary output
- Always exit 0 and write PASS/FAIL/SKIP to .res

Signed-off-by: Srikanth Muppandam <smuppand@qti.qualcomm.com>
# Naming convention (matches long-metric key style):
# goal.geekbench.<section>.workload.<WorkloadName>.<kind>
# where:
# section = single | multi
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here section is 1, 1-2, 1-3 ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In geekbench_baseline.conf, “section” refers to result group (single/multi) in metric keys, not Geekbench CLI --section (numeric selectors like 1 / 1-3 belong to YAML SECTION and are forwarded as-is by the wrapper if supported).


RUNS="${GEEKBENCH_RUNS:-1}"
OUTDIR="${GEEKBENCH_OUTDIR:-$OUTDIR_DEFAULT}"
RES_FILE="${GEEKBENCH_RES_FILE:-$RES_FILE_DEFAULT}"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

result file should always be in the script directory for lava/internal tool to fetch results

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

result file should always be in the script directory for lava/internal tool to fetch results

By default, it will be located in the script directory. If the user chooses to override this, their selection will be used instead.

# ---------------------------------------------------------------------------
# Clock sanity (avoid epoch time breaking logs / gating)
# ---------------------------------------------------------------------------
if command -v ensure_reasonable_clock >/dev/null 2>&1; then
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since this function is statically available in functestlib.sh, no need to check the availability

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since this function is statically available in functestlib.sh, no need to check the availability

There are certain scenarios in the shell where, if a user unsets or exits, we may encounter issues. Therefore, it's always best to check beforehand before running any commands.

if command -v ensure_reasonable_clock >/dev/null 2>&1; then
log_info "Ensuring system clock is reasonable before Geekbench..."
if ! ensure_reasonable_clock; then
log_error "Clock is not reasonable, Running Geekbench benchmark may lead to invalid results."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since running Geekbench will lead to invalid results, can you exit script with fail?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since running Geekbench will lead to invalid results, can you exit script with fail?

Geekbench does not rely on the rtcsync clock. It was included in the log for debugging purposes to align with other benchmarks.

…artifacts

- Run Geekbench runner from qcom-linux-testkit
- Publish logs, CSV outputs, and final summary as test artifacts
- Keep template generic for RB3/RB4/RB8 targets

Signed-off-by: Srikanth Muppandam <smuppand@qti.qualcomm.com>
Signed-off-by: Srikanth Muppandam <smuppand@qti.qualcomm.com>
Signed-off-by: Srikanth Muppandam <smuppand@qti.qualcomm.com>
- Provide reproducible defaults for iterations and output directory
- Allow optional CPU pinning and wrapper env overrides
- Document knobs used by LAVA and local runs

Signed-off-by: Srikanth Muppandam <smuppand@qti.qualcomm.com>
- Explain wrapper options vs forwarded Geekbench args
- Add examples for single/multi-core, runs, and taskset pinning
- Document generated logs/CSVs and .res semantics for LAVA

Signed-off-by: Srikanth Muppandam <smuppand@qti.qualcomm.com>
Copy link
Contributor

@vnarapar vnarapar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@vnarapar vnarapar merged commit 50ef1f0 into qualcomm-linux:main Feb 12, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants