Skip to content

Conversation

@jvolmer
Copy link
Contributor

@jvolmer jvolmer commented Nov 10, 2025

This adds two tests for a traversal on a tree with a supernode:

I also refactored the already existing script for the creation of trees for better readability.

Additionally, this PR now fixes significant instabilities in the traversal simple performance tests by setting the number of shards to the number of dbservers. This way we fix the number of required http requests per run. Before, we used one shard everywhere, such that in one run the edges and the vertices shard could live on different dbservers, on another run they could live on the same dbserver, which would result in a difference of http requests by a factor of 2 which would result in significant performance differences. We see these performance differences in the cluster traversal tests: They basically fluctuate between two values.

@dmitrysper
Copy link
Contributor

dmitrysper commented Nov 12, 2025

Hi @jvolmer - we need to see whether your refactoring changes affect existing edges and subquery tests (their results to be exact) since both suites use test data created with:

      if (testParams.edges || testParams.subqueryTests) {
        initializeEdgeCollection();
      }

Could you pls run perf-simple-branch pipeline (specifying the required ArangoDB and simple-performance-test branches)

Thanks upfront :)

@dmitrysper
Copy link
Contributor

dmitrysper commented Dec 2, 2025

Hi @jvolmer - thanks for running the performance tests from your branches.

Now that we have results it's possible to visualize them and compare to devel (or any other branch) with the following Grafana dashboards:

As you can see (especially with tests executed against the cluster) - there's a number of tests that were negatively impacted by the changes and it's not only edge or subquery subsets.

Could you pls trigger another build of perf-simple-branch so that we can have more data to compare and take a closer look at the tests' results with significant disparity (if the outcome will be similar).

Thank you in advance!

@jvolmer jvolmer self-assigned this Dec 16, 2025
Depending on the distribution of shards, the traversals had to do
different number of http requests which resulted in varying
performance results.
@jvolmer jvolmer changed the title Add limited-traversal query on a binary tree with one supernode [COR-78] Add limited-traversal query on a binary tree with one supernode Dec 17, 2025
@jvolmer
Copy link
Contributor Author

jvolmer commented Dec 22, 2025

I now ran perf-simple-branch several times and did not see significant differences (I looked here) at the behaviour over time. The two PRs I mentioned above that were the reason for this PR are now merged into devel already.

Additionally, this PR now fixes significant instabilities in the traversal simple performance tests by setting the number of shards to the number of dbservers. This way we fix the number of required http requests per run. Before, we used one shard everywhere, such that in one run the edges and the vertices shard could live on different dbservers, on another run they could live on the same dbserver, which would result in a difference of http requests by a factor of 2 which would result in significant performance differences. We see these performance differences in the cluster traversal tests: They basically fluctuate between two values.

@KVS85 KVS85 requested a review from mpoeter December 22, 2025 11:16
@KVS85 KVS85 requested a review from mpoeter December 22, 2025 13:54
@KVS85
Copy link
Contributor

KVS85 commented Dec 22, 2025

@KVS85
Copy link
Contributor

KVS85 commented Dec 22, 2025

[2025-12-22T14:15:49.928Z] 2025-12-22T14:15:49.852471Z [1-1] ERROR [8a210] {general} JavaScript exception in file '/performance/simple/binaryTrees.js' at 15,17: TypeError: Cannot convert undefined or null to object

[2025-12-22T14:15:49.928Z] 2025-12-22T14:15:49.852480Z [1-1] ERROR [409ee] {general} !  return Object.values(db._connection.GET("/_admin/cluster/health").Health).filter(item => item.Role == "DBServer").length;

[2025-12-22T14:15:49.928Z] 2025-12-22T14:15:49.852482Z [1-1] ERROR [cb0bd] {general} !                ^

[2025-12-22T14:15:50.183Z] 2025-12-22T14:15:49.854908Z [1-1] DEBUG [cb0bf] {v8} !stacktrace: TypeError: Cannot convert undefined or null to object\n    at Function.values (<anonymous>)\n    at numberOfDbservers (/performance/simple/binaryTrees.js:15:17)\n    at createGraph (/performance/simple/binaryTrees.js:25:118)\n    at makeTreeWithLargeData (/performance/simple/binaryTrees.js:57:3)\n    at initializeEdgeCollection (/performance/simple/test.js:526:9)\n    at main (/performance/simple/test.js:3460:9)\n    at exports.test (/performance/simple/test.js:4009:10)\n    at main (simple/run-big-all.js:3:28)\n    at simple/run-big-all.js:25:16\n

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.

5 participants