Improve configuration defaults and documentation #732

Open
opened 2025-12-28 17:20:30 +00:00 by sami · 1 comment
Owner

Originally created by @fyrchik on GitHub (Sep 7, 2022).

Currently, we have a lot of parameters which affect the runtime performance. These include pool sizes, batch sizes, timeouts etc.
All parameters are set independently and have constant defaults. I think we can improve this in a number of ways:

  1. Document how one parameter can affect others. For example, object.put.pool_size_remote is also used in policer and tuned in runtime.
  2. Allow to set default for one parameter based on another parameter.
    2.1. Example: default replicator settings in the tree service can be set based on batch size.
    2.2. Example: apiclient.stream_timeout can be set based on dial_timeout, as the former in some sense reflects network latency expectations.
    2.3. Example: shard pool size and put service local poll size are connected to each other.
  3. Defaults should be set as expected for public networks, private installations should override, not the other way.
  4. neofs-adm storage-config can incorporate some of this complexity.
  5. For private installations with the known configuration (the amount of consensus and storage nodes), we should give some general recommendations.

It is already proven to be complex during our performance testing, the goal is to make it more understandable for an average user.

I am making this an epic issue, let's discuss what we want and create tasks afterwise.

Originally created by @fyrchik on GitHub (Sep 7, 2022). Currently, we have a lot of parameters which affect the runtime performance. These include pool sizes, batch sizes, timeouts etc. All parameters are set independently and have constant defaults. I think we can improve this in a number of ways: 1. Document how one parameter can affect others. For example, `object.put.pool_size_remote` is also used in policer and tuned in runtime. 2. Allow to set default for one parameter based on another parameter. 2.1. Example: default replicator settings in the tree service can be set based on batch size. 2.2. Example: `apiclient.stream_timeout` can be set based on `dial_timeout`, as the former in some sense reflects network latency expectations. 2.3. Example: shard pool size and put service local poll size are connected to each other. 3. Defaults should be set as expected for public networks, private installations should override, not the other way. 4. `neofs-adm storage-config` can incorporate some of this complexity. 5. For private installations with the known configuration (the amount of consensus and storage nodes), we should give some general recommendations. It is already proven to be complex during our performance testing, the goal is to make it more understandable for an average user. I am making this an epic issue, let's discuss what we want and create tasks afterwise.
Author
Owner

@fyrchik commented on GitHub (Sep 7, 2022):

For some low-level performance settings we should take input from our testing team doing benchmarks on real hardware.

@fyrchik commented on GitHub (Sep 7, 2022): For some low-level performance settings we should take input from our testing team doing benchmarks on real hardware.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nspcc-dev/neofs-node#732
No description provided.