Visitar URL original
Benchmarks: Neo4j and Elasticsearch memory settings follow their vendors' guidance by tae898 · Pull Request #461 · humemai/arcadedb-embedded-python · GitHub
Skip to content

Benchmarks: Neo4j and Elasticsearch memory settings follow their vendors' guidance - #461

Merged
tae898 merged 1 commit into
mainfrom
bench-vendor-memory-neo4j-es
Oct 22, 2026
Merged

tae898 merged 1 commit into
mainfrom
bench-vendor-memory-neo4j-es

Conversation

@tae898

@tae898 tae898 commented Oct 22, 2026

Copy link
Copy Markdown

Closes #460. Pairs with #456 (served -Xms, DECISIONS #200): that PR changes the initial heap and adds the "Vendor JVM settings" and "Beyond the heap" tables to PROTOCOL, this one changes the Neo4j and Elasticsearch heap and page cache those tables listed as mismatches. Both can merge in either order; the PROTOCOL rows I edit are the Neo4j and Elasticsearch ones, and the Elasticsearch row sits directly under a row #456 edits, so one trivial conflict hunk is possible. After both merge, the two "Beyond the heap" rows (Neo4j page cache, Elasticsearch heap ceiling) should read match.

What changes. Every engine runs as its vendor recommends. Neo4j: vendor_memory.NEO4J_MEMORY holds, for each cap in the tier table (8g, 12g, 16g, 24g, 28g, 32g, 36g, 48g), the heap and page cache that neo4j-admin server memory-recommendation --memory=<cap> --docker prints from the pinned image digest; the raw tool output is committed as neo4j_memory_recommendation.json (regenerate with python3 vendor_memory.py --regenerate) and test_vendor_memory.py re-parses it and requires the table to equal it, the image digest to match every Neo4j arm, and every cap to be covered. Initial heap stays equal to max heap. Elasticsearch: the heap is the tier heap capped at 50% of the cap and 26 GiB; it runs the sparse lane at micro to large (already half the cap) and the dense lanes at micro, tiny, small and deep10m, and only deep10m moves, 24g to 18g. observe_server now reads a heap such as 3600m back exactly, fairness_check.check_envelope judges these arms' heap against the table on rows stamped vendor_memory, and rows measured before are not edited and are judged as before. A diagnostic --heap or --mem override turns the rule off. PROTOCOL, FAIRNESS (F3d), CAMPAIGN and the reader-facing protocol page are updated; DECISIONS #202 records the rule, the sources, the tool output and the change. The tool's page cache is for an empty data directory, and it also prints an ExitOnOutOfMemoryError flag that the harness does not set.

Effect on rows. Existing rows are untouched. The comparator subset (installs on mini Oct 27) is the first pass that uses the Neo4j numbers; Elasticsearch is outside that subset. The stage drafts in .notes/bench/stages-draft/2611s-20261022/ must be regenerated from main after merge.

Tests: the full benchmarks/experiments suite with uv run --no-project python -m pytest (984 passed, 2 skipped, test_lean_http_live.py excluded), including the new test_vendor_memory.py.

🤖 Generated with Claude Code

…ors' guidance (#460)

Neo4j takes the heap and page cache of neo4j-admin server memory-recommendation for each tier cap; Elasticsearch deep10m heap goes from 24g to 18g (50% of the cap, under 26 GiB). DECISIONS #202.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tae898
tae898 merged commit cec5eb8 into main Oct 22, 2026
4 checks passed
@tae898
tae898 deleted the bench-vendor-memory-neo4j-es branch October 22, 2026 04:27
tae898 added a commit that referenced this pull request Oct 22, 2026
…tch since #461 (DECISIONS #202)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tae898 added a commit that referenced this pull request Oct 22, 2026
…ded arms (#456)

* Benchmarks: the served ArcadeDB arms leave -Xms unset, like the embedded arms (#455)

ARCADEDB_OPTS_MEMORY on every served ArcadeDB arm is -Xmx{heap} only, so both deployments run one JVM configuration again (G1, -Xmx half the cell's memory, no -Xms), as ArcadeDB's maintainers advise for a container with a fixed memory budget. The generated image-defaults sentence reads the main arm's initial heap from the rows, PROTOCOL gains a table of each JVM engine's vendor-recommended setting and what its memory column shows, and the docs and tests follow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* PROTOCOL: what each JVM engine's vendor says to size beyond the heap, what the harness sets, and where they differ (#455)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* PROTOCOL: the Neo4j page cache and Elasticsearch heap ceiling rows match since #461 (DECISIONS #202)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.

Benchmarks: Neo4j and Elasticsearch memory settings follow their vendors' guidance

1 participant