Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

bench: N=100 hugepage spawn numbers (deferred from #230)

Open
#234 2 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
38/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Quiet
Tech stack
bash, linux, python, rust

Research direction

Start by reading bench/live-fork-pause-window/bench-hugepages.py and the N=4 results in PR #230; the issue says the script is correct and needs a clean host with patched Firecracker v1.16.0-dev and a fresh snapshot. Follow the listed setup steps, including scripts/netns-setup.sh, then run the specified N=100 command. Post the CSV and summary table here and in bench/live-fork-pause-window/RESULTS-v0.5.md, documenting whether the acceptance criteria are met or whether larger-parent runs are needed.

Written by the indexing model from the issue text.

Description

backend:firecracker help wanted optimization

Context. #230 (merged in v0.5.2) shipped the hugepage-backed memfd path end-to-end + bench/live-fork-pause-window/bench-hugepages.py. @theflashwin ran the bench at N=4 on his hardware (numbers in the PR README) and noted he didn't have compute to push to N=100.

I committed in PR review to running N=100 on my dev box — that didn't happen because of two stacked issues that surfaced during the attempt:

What went wrong

  1. Dev-box Firecracker version drift. /usr/local/bin/firecracker was v1.12.0 (unpatched upstream). The MemfdShared backend requires the deeplethe-patched FC fork (mem_backend.shared = true field is forkd-specific) — the patched binary was sitting at ~/firecracker/build/.../firecracker v1.16.0-dev but wasn't on PATH.
  2. Snapshot bitcode incompat. Re-snapping with the patched FC works, but old snapshots (taken with v1.12) can't load on v1.16 (bitcode error from FC's snapshot deserializer). Need a fresh snapshot for the bench.

I got partway through both fixes (installed patched FC, rebuilt a benchsrc-v116 parent, started bench) before hitting an unrelated host issue and rolling back. The bench script itself is correct — the failures were environmental.

To-do

  • Provision a clean host (or container) with patched FC v1.16.0-dev installed by default
  • Build a small benchsrc snapshot fresh under that FC
  • sudo bash scripts/netns-setup.sh 100 to provision per-child netns (the bench needs N netns up front; the script is idempotent)
  • Bump /proc/sys/vm/nr_hugepages to ≥ (parent_mem_mib / 2) + n * 2 — for a 512 MiB parent + N=100 that's 257 + 200 = ~460 pages; round up to 1024 for headroom
  • Run sudo python3 bench/live-fork-pause-window/bench-hugepages.py --source-tag <fresh-tag> --n 100 --iterations 5 --branch-mode diff
  • Post the CSV + summary table (interleaved p50/p99 spawn_ms, ms/child, pause_ms for baseline vs hugepages) here and in bench/live-fork-pause-window/RESULTS-v0.5.md

Acceptance

A reproducible N=100 number that either:

  • Validates the hugepages path (≥1.3× spawn-time speedup at p50 or measurable pause-window reduction), OR
  • Surfaces that the win only shows for memory-heavy parents (in which case the bench should grow a --mem-mib knob and we re-run at 2 GiB + 4 GiB parents to characterize where it pays off)

Either outcome is shippable as a follow-up patch with a one-paragraph note in the README.

Dominant language
Rust
Stars
2.9k
Forks
227
Avg merge
5h 12m
Merged PRs (30d)
12

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from deeplethe/forkd

All issues in deeplethe/forkd

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.