Skip to content

misc: Store perf data uncompressed and remove score fallback#762

Merged
jensen-yan merged 1 commit intoxs-devfrom
nozip-ci-align
Feb 27, 2026
Merged

misc: Store perf data uncompressed and remove score fallback#762
jensen-yan merged 1 commit intoxs-devfrom
nozip-ci-align

Conversation

@jensen-yan
Copy link
Collaborator

@jensen-yan jensen-yan commented Feb 27, 2026

Change-Id: Ie93b309f48546cce494c910b2570609b5bc38b6d

Summary by CodeRabbit

  • Bug Fixes

    • Improved workflow resilience by allowing builds to continue if artifact uploads fail, preventing interruptions
  • Chores

    • Optimized artifact archiving by switching to direct directory copies for faster processing
    • Updated artifact size reporting to align with the new archival method
    • Removed unnecessary fallback artifact save logic

@coderabbitai
Copy link

coderabbitai bot commented Feb 27, 2026

📝 Walkthrough

Walkthrough

The gem5 performance template workflow was modified to replace tar.gz archive compression with direct directory copying, update size reporting to reference the copied directory, remove fallback artifact saving on failure, and enable the upload step to continue on errors.

Changes

Cohort / File(s) Summary
GitHub Actions Workflow
.github/workflows/gem5-perf-template.yml
Modified archive creation from compressed tar.gz to direct directory copy; updated size reporting to use copied directory instead of archive; removed fallback score.txt save logic; added continue-on-error: true to upload step for graceful error handling.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested reviewers

  • Yakkhini

Poem

🐰 No more tarballs squeezed so tight,
Just copy files, keep things light!
When uploads stumble, onward we go,
A workflow that's graceful, stealing the show!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'misc: Store perf data uncompressed and remove score fallback' accurately summarizes the two main changes: replacing compressed archive with direct directory copy and removing the fallback artifact save mechanism.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch nozip-ci-align

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Change-Id: Ie93b309f48546cce494c910b2570609b5bc38b6d
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
.github/workflows/gem5-perf-template.yml (2)

209-209: Storage impact consideration.

Switching from tar.gz compression to direct copy will significantly increase storage usage (typically 5-10x depending on compressibility of the data). With 200 runs retained across multiple benchmark types, ensure the NFS storage at /nfs/home/share/gem5_ci/performance_data has adequate capacity for the increased footprint.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/gem5-perf-template.yml at line 209, The direct cp of
"$GITHUB_WORKSPACE/util/xs_scripts/test/spec_all" to "$TARGET_DIR" will blow up
NFS storage; change the step to create a compressed tarball and copy that
instead (e.g., tar -czf spec_all.tar.gz -C
"$GITHUB_WORKSPACE/util/xs_scripts/test" spec_all then mv/cp the tarball to
"$TARGET_DIR"), or at minimum add a pre-copy free-space check against the target
mount (/nfs/home/share/gem5_ci/performance_data) and fail with a clear message
if insufficient space; update the pipeline step that currently runs the cp
command so it produces a compressed artifact and/or validates available capacity
before copying.

207-244: Consider defensive check for missing spec_all directory.

Since this step runs with if: always(), it may execute when earlier steps have failed and spec_all doesn't exist. The cp -a on line 209 would fail, and subsequently du -sh on line 239 would also fail, potentially causing confusing error output.

Consider adding a check before archiving:

🛡️ Proposed defensive check
          # Create target directory
          mkdir -p "$TARGET_DIR"
          
+         SPEC_ALL_DIR="$GITHUB_WORKSPACE/util/xs_scripts/test/spec_all"
+         if [ ! -d "$SPEC_ALL_DIR" ]; then
+           echo "Warning: spec_all directory not found, skipping archive"
+           echo "### Archive output" >> $GITHUB_STEP_SUMMARY
+           echo "- Status: Skipped (no data to archive)" >> $GITHUB_STEP_SUMMARY
+           exit 0
+         fi
+         
          # Archive entire spec_all directory without compression
          echo "Archiving performance data to $TARGET_DIR"
-         cp -a "$GITHUB_WORKSPACE/util/xs_scripts/test/spec_all" "$TARGET_DIR/"
+         cp -a "$SPEC_ALL_DIR" "$TARGET_DIR/"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/gem5-perf-template.yml around lines 207 - 244, Add a
defensive existence check for the spec_all source and guard the archive-size
calculation: before calling cp -a for
"$GITHUB_WORKSPACE/util/xs_scripts/test/spec_all", verify that the directory
exists and only run cp if it does (otherwise log a warning and skip copying);
likewise, when computing ARCHIVE_SIZE with du -sh "$TARGET_DIR/spec_all", check
that "$TARGET_DIR/spec_all" exists and set ARCHIVE_SIZE to a sensible default or
a "not found" message if it doesn't, so ARCHIVE_SIZE and subsequent steps won't
fail; update the blocks around TARGET_DIR/spec_all and the ARCHIVE_SIZE
assignment to use these checks.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In @.github/workflows/gem5-perf-template.yml:
- Line 209: The direct cp of "$GITHUB_WORKSPACE/util/xs_scripts/test/spec_all"
to "$TARGET_DIR" will blow up NFS storage; change the step to create a
compressed tarball and copy that instead (e.g., tar -czf spec_all.tar.gz -C
"$GITHUB_WORKSPACE/util/xs_scripts/test" spec_all then mv/cp the tarball to
"$TARGET_DIR"), or at minimum add a pre-copy free-space check against the target
mount (/nfs/home/share/gem5_ci/performance_data) and fail with a clear message
if insufficient space; update the pipeline step that currently runs the cp
command so it produces a compressed artifact and/or validates available capacity
before copying.
- Around line 207-244: Add a defensive existence check for the spec_all source
and guard the archive-size calculation: before calling cp -a for
"$GITHUB_WORKSPACE/util/xs_scripts/test/spec_all", verify that the directory
exists and only run cp if it does (otherwise log a warning and skip copying);
likewise, when computing ARCHIVE_SIZE with du -sh "$TARGET_DIR/spec_all", check
that "$TARGET_DIR/spec_all" exists and set ARCHIVE_SIZE to a sensible default or
a "not found" message if it doesn't, so ARCHIVE_SIZE and subsequent steps won't
fail; update the blocks around TARGET_DIR/spec_all and the ARCHIVE_SIZE
assignment to use these checks.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 11a1b6f and e62f09c.

📒 Files selected for processing (1)
  • .github/workflows/gem5-perf-template.yml

@github-actions
Copy link

🚀 Coremark Smoke Test Results

Branch IPC Change
Base (xs-dev) 2.1727 -
This PR 2.1727 ➡️ 0.0000 (0.00%)

✅ Difftest smoke test passed!

@jensen-yan jensen-yan merged commit 7542d58 into xs-dev Feb 27, 2026
3 checks passed
@jensen-yan jensen-yan deleted the nozip-ci-align branch February 27, 2026 06:31
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.

1 participant