Skip to content

feat(linux): add gapbs NEMU checkpoint workload family#26

Merged
poemonsense merged 1 commit into
mainfrom
feat-gapbs-workloads
Jul 10, 2026
Merged

feat(linux): add gapbs NEMU checkpoint workload family#26
poemonsense merged 1 commit into
mainfrom
feat-gapbs-workloads

Conversation

@eastonman

Copy link
Copy Markdown
Member

Adds a gapbs workload family that produces NEMU SimPoint checkpoint images
for the 18 kernel × graph combinations of {bfs, sssp, pr, cc, bc, tc} ×
{road, twitter, web}. See workloads/linux/gapbs/README.md for the full
mechanism.

Note: the largest weighted graphs produce a >4 GiB initramfs and rely on the
64-bit initrd device-tree cells from the companion feat(dts) PR.

Large-graph delivery (no GAPBS change)

Serialized graphs are bundled in the initramfs, but the newc cpio format
caps each file at 4 GiB. Graphs at or above that (all twitter/web, 9.5–30 GB)
are split into sub-4-GiB parts at build time and rejoined in the guest via a
suffix-carrying named FIFO (mkfifo + streamed cat), feeding an unmodified
GAPBS — its serialized reader is strictly sequential, so a forward-only pipe
suffices. Small graphs (road) are bundled whole.

Contents

  • gapbs-package.py — lists cases; cross-compiles the kernel (static,
    SERIAL=1); stages or splits the graph; writes run.sh + inittab.
  • rules.mk — 18 per-case build and image targets.
  • build.sh — thin per-case wrapper.
  • source — GAPBS submodule (as rvv-bench / kvmtool vendor upstream).
  • README.md — case matrix, build commands, the split+FIFO mechanism, memory/DTB notes.

Generate SimPoint checkpoint images for the 18 combinations of
{road,twitter,web} x {bfs,sssp,pr,cc,bc,tc}. Kernels build static and
single-threaded; each pre-serialized graph is bundled in the initramfs.

The newc cpio format caps each file at 4 GiB, so graphs at or above that
(all twitter/web cases, 9.5-30 GB) are split into sub-4-GiB parts at build
time and rejoined in the guest through a suffix-carrying named FIFO that
feeds an unmodified GAPBS -- its serialized reader is strictly sequential,
so a pipe suffices. Small graphs are bundled whole. No GAPBS source change,
no guest driver. A README documents the mechanism.

Assisted-by: Claude Opus 4.8
(cherry picked from commit b76c3723d9c28c2b9fafab55cae0fd65c660987a)
@eastonman eastonman requested review from poemonsense and rezado July 10, 2026 01:55
@poemonsense poemonsense merged commit d41c7d8 into main Jul 10, 2026
2 checks passed
@poemonsense poemonsense deleted the feat-gapbs-workloads branch July 10, 2026 02:08
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