Visitar URL original
Benchmarks: the served ArcadeDB arms leave -Xms unset, like the embedded arms by tae898 · Pull Request #456 · humemai/arcadedb-embedded-python · GitHub
Skip to content

Benchmarks: the served ArcadeDB arms leave -Xms unset, like the embedded arms - #456

Merged
tae898 merged 3 commits into
mainfrom
served-xms-unset
Oct 22, 2026
Merged

tae898 merged 3 commits into
mainfrom
served-xms-unset

Conversation

@tae898

@tae898 tae898 commented Oct 22, 2026 •

Copy link
Copy Markdown

Closes #455

The served ArcadeDB arms now pass ARCADEDB_OPTS_MEMORY=-Xmx{heap} instead of -Xms{heap} -Xmx{heap}, so they leave the JVM's initial heap unset like the embedded arms since #429. G1 and the 50% heap budget stay, so both deployments run one JVM configuration again, and it matches the maintainers' guidance for Docker (ArcadeData#9167, arcadedb-docs "JVM settings in a fixed memory budget"). Embedded evidence (ab.py, 10 clean pairs, heap-pin-ab-20261022): unset versus pinned peak RSS about 1.4 versus 2.4 GB, committed heap about 1 GB versus 4096 MiB, total wall pinned 1-7% worse, GC count and time better pinned, vector build pinned 2-9% worse, ingest and graph pinned 2-11% better. The decision is DECISIONS #200.

What changes: runner.py (five served arms, comments), export_web.py (the generated image-defaults sentence reads the main arm's initial heap from the rows, so rows measured before this change keep the old wording and new rows say the main arm sets no initial heap size; the jvm_heap page declaration now says Elasticsearch and Neo4j pin and ArcadeDB, embedded and served, does not; the served main arm is named in the "starts with no initial heap size" memory clause from its own JVM report), fairness_check.py comments, PROTOCOL, FAIRNESS, CAMPAIGN, PAGE-SPEC and the bindings protocol page. PROTOCOL section 7 also gets a table of each JVM engine's heap setting, whether the initial heap is pinned, the vendor source with its sentence, and what the memory column shows. Verified against the current docs: Neo4j recommends initial equal to max, Elasticsearch requires the minimum and maximum to be the same, and QuestDB's configuration page has no JVM heap recommendation, so Neo4j, Elasticsearch and QuestDB are unchanged. Their pinned heaps read toward the cap in the memory columns, which is the cost of the vendors' recommended setups and is reported as such.

Existing rows are not edited; the ArcadeDB served arms run in the Nov 5-12 pass, after this change, so the comparator subset is unaffected. Tests: test_instrument_method.py asserts no ArcadeDB arm pins -Xms and the served arms keep -Xmx{heap}, test_jvm_defaults_arm.py covers both wordings of the generated sentence and every served arm's env, and test_index_before_load_note.py follows the new declaration. The branch is rebased on #461 (Neo4j and Elasticsearch follow their vendors' memory rules, DECISIONS #202), and the "Beyond the heap" rows for the Neo4j page cache and the Elasticsearch heap ceiling now say match.

Untimed served memory check, one container per run, no speed claim (probe and raw rows in the notes repo, DECISIONS #200):

UNTIMED. arcadedata/arcadedb:26.10.2, -m 8g, -Xmx4g, G1, 400000 documents + query mix, MiB, runs in order (median).

metric pinned (-Xms=-Xmx) unset (-Xmx only)
idle RSS 254, 256, 256 (256) 123, 125, 126 (125)
peak RSS (VmHWM) 2881, 2855, 2886 (2881) 1135, 1500, 863 (1135)
end RSS 2874, 2844, 2874 (2874) 700, 558, 629 (629)
cgroup peak 3143, 3045, 3077 (3077) 1294, 1717, 1041 (1294)
heap committed, idle 4096, 4096, 4096 (4096) 80, 80, 80 (80)
heap committed, end 4096, 4096, 4096 (4096) 420, 408, 448 (420)
heap committed, max sample 4096, 4096, 4096 (4096) 654, 608, 488 (608)
heap used, end 1991, 1863, 1982 (1982) 161, 349, 330 (330)

JVM read-back (InitialHeapSize, MaxHeapSize, GC, -Xm flags): {'pinned': [('4294967296', '4294967296', 'G1', '-Xms4g -Xmx4g')], 'unset': [('134217728', '4294967296', 'G1', '-Xmx4g')]}
runs ok 6 of 6

Tests, run after the rebase on the head of this branch (.venv python -m pytest, benchmarks/experiments): test_instrument_method.py, test_jvm_defaults_arm.py, test_index_before_load_note.py, test_instrument_selector.py, test_overrides.py and test_strict_durability.py, 232 passed. I did not run the full benchmark suite.

🤖 Generated with Claude Code

tae898 and others added 3 commits October 22, 2026 13:43
…ded 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>
… what the harness sets, and where they differ (#455)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tch since #461 (DECISIONS #202)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tae898
tae898 marked this pull request as ready for review October 22, 2026 05:20
@tae898
tae898 merged commit 2978e97 into main Oct 22, 2026
4 checks passed
@tae898
tae898 deleted the served-xms-unset branch October 22, 2026 05:40
tae898 added a commit that referenced this pull request Oct 22, 2026
…marks/experiments tests in CI (#474)

#456 merged with test_export_client_twin.py failing because nothing in CI ran benchmarks/experiments/test_*.py. The assertion now names both deployments, as the exporter's sentence does. New workflow: standard ubuntu runner, only for changes under benchmarks/, cancel in progress, uv run --no-project --with ... (about 75 s).

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: the served ArcadeDB arms leave -Xms unset, like the embedded arms since #429

1 participant