Skip to content

chore(docs): Update Performance documentation to include SDio Flag#5870

Open
Shubhang wants to merge 6 commits intoapache:mainfrom
Shubhang:docs-update-Sdio
Open

chore(docs): Update Performance documentation to include SDio Flag#5870
Shubhang wants to merge 6 commits intoapache:mainfrom
Shubhang:docs-update-Sdio

Conversation

@Shubhang
Copy link

@Shubhang Shubhang commented Jan 30, 2026

Overview

Setting the +A flag currently doesn't do anything meaningful to the performance of CouchDB.

Testing recommendations

Doc update

Related Issues or Pull Requests

Checklist

  • Code is written and works correctly
  • Changes are covered by tests
  • Any new configurable parameters are documented in rel/overlay/etc/default.ini
  • Documentation changes were made in the src/docs folder
  • Documentation changes were backported (separated PR) to affected branches

Copy link
Contributor

@nickva nickva left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great idea @Shubhang to update the docs. Thank you for your contribution.

I had a few corrections in a comment (the flag name) and a suggestion to improve it even better by removing the whole +A section and ERL_FLAGS and replace it with more current advice. What do you think?

(or equivalent)::

export ERL_FLAGS="+Sdio 80"

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+Sdio 80"

Note, the flag is +SDio ... (capital D) (double-check at https://www.erlang.org/doc/apps/erts/erl_cmd.html#emulator-flags)

I wonder since the +A advice doesn't apply any longer maybe we should mention the correct way of updating the value and to use vm.args https://github.com/apache/couchdb/blob/main/rel/overlay/etc/vm.args#L71-L73. Maybe at the end, as minor note, we could add that this used to be an +A and that it doesn't apply any longer, and that +A setting should be removed.

(suggestion)


...However, there is one option that can increase the responsiveness of your CouchDB server when disk performance is a bottleneck, and that is setting the number dirty IO schedulers for the Erlang VM.

The setting is +SDio N where N is the number of dirty IO schedulers. CouchDB releases version 3.3.0 and higher set the value in the vm.args file as +SDio 16. Larger machines with more CPUs and faster disks could use a larger value like +SDio 80, for example.

These schedulers can also be configured by ERL_FLAGS environment variable. For example, to give Erlang 80 dirty schedulers add the following to (prefix)/etc/defaults/couchdb (or equivalent)::

export ERL_FLAGS="+SDio 80"
...


That's just a suggestion, it can probably use better wording

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.

3 participants