Skip to content

Report allocation, GC pauses and retained heap - #39

Merged
venkat1701 merged 3 commits into
mainfrom
feat/bench-heap-and-gc
Oct 4, 2026
Merged

venkat1701 merged 3 commits into
mainfrom
feat/bench-heap-and-gc

Conversation

@venkat1701

Copy link
Copy Markdown
Collaborator

Closes #31

Every workload now records, over its timed section:

  • bytes allocated by the process (getTotalThreadAllocatedBytes)
  • GC count and pause time (GarbageCollectorMXBean; with ParallelGC that's stop-the-world time)

After ingest the run forces a full GC and records the heap the loaded store keeps. A baseline taken before the store opens is subtracted, so the dataset arrays both runs share aren't counted.

The Resources table from #38 gains allocated-per-operation and GC pause rows. Rows where both stores paused 0 ms are left out. Old result files still render unchanged.

Smoke run at scale 1, async, one run each:

  • Retained heap: HStore 253.7 MiB, HyperGraphDB 151.1 MiB. HStore's cache of 1M decoded nodes ends up holding the whole dataset, which is the imbalance Benchmark caches are not the same size #32 is about.
  • GC pauses: HStore paused about 1.1 s during ingest.edges and 0.9 s during reopen. HyperGraphDB's pauses are spread out and smaller.
  • Allocation: on reads HStore allocates 5 to 8 times less than HyperGraphDB (read.incidence, read.comembership, cold reads). On ingest.edges and single commits it allocates 2.5 times more.

Each workload stores the bytes allocated and the GC count and pause time
over its timed section. After ingest the run forces a full GC and records
the heap the loaded store keeps, minus a baseline taken before it opened.
@venkat1701
venkat1701 merged commit fefa703 into main Oct 4, 2026
@venkat1701
venkat1701 deleted the feat/bench-heap-and-gc branch October 6, 2026 00:54
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.

Benchmark doesn't report heap, allocation or GC

1 participant