Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Perf doc #1996

Merged
merged 3 commits into from
Mar 16, 2019
Merged

Perf doc #1996

merged 3 commits into from
Mar 16, 2019

Conversation

graydon
Copy link
Contributor

@graydon graydon commented Mar 8, 2019

This just adds a new (preliminary!) performance.md doc as we've been discussing, that talks explicitly about sources of load on stellar-core nodes and ways to configure it to control for them.

Additions welcome. I figured I'd get a sketch done and we could build it out with contributions from operators.

(There are 2 doc-maintenance commits in here too, the only one about performance.md is the third commit)

Copy link
Contributor

@tomquisel tomquisel left a comment

Choose a reason for hiding this comment

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

These performance docs are great! I mentioned a few minor formatting issues, but the content is perfect. Thanks so much for putting this guide together 🎉 .

The performance of a `stellar-core` node varies in two main dimensions:

1. _What it is configured to do_:
* As discussed in the [admin.md](./admin.md) file, nodes may be configured as watchers, archivers, basic validators or full validators. These roles have different performance costs.
Copy link
Contributor

Choose a reason for hiding this comment

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

These list items aren't rendering right (I think you just need a newline)

* Each such role may have a variety of options enabled or disabled at varying costs to the node.

2. _How it is physically and logically configured to do its job_:
* The physical hardware -- disks, CPUs, memory and networking equipment -- supporting the node can substantially affect performance.
Copy link
Contributor

Choose a reason for hiding this comment

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

ditto


1. The `BUCKET_DIR_PATH` config option sets the location that `stellar-core` places its buckets while (re)writing the bucket list. This should be located on a relatively fast, low-latency local disk. Ideally SSD or NVMe or similar. The faster the better. It does not need to be _very_ large and should not grow in usage _very_ fast, though `stellar-core` will fail if it fills up, so keep an eye on its utilization and make sure there's plenty of room.
2. The `DATABASE` config value controls not only which _kind_ of database the node is performing transactions against, but also _where_ the database is located. Unlike with many database-backed programs, the _content_ of the database in a `stellar-core` installation is somewhat ephemeral: every node has a complete copy of it, as does every history archive, and the database can always be restored / rebuilt from history archives (it is in fact being continuously backed up every 5 minutes). So the main thing to optimize for here is latency, especially on nodes doing consensus. We recommend either:
* SQLite on a fast, local disk. This is probably the fastest option and is perfectly adequate for many types of node.
Copy link
Contributor

Choose a reason for hiding this comment

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

ditto

@MonsieurNicolas MonsieurNicolas added this to To do in v11.0.0 via automation Mar 15, 2019
@graydon graydon force-pushed the perf-doc branch 3 times, most recently from 35828fa to 14996e3 Compare March 15, 2019 23:57
@graydon
Copy link
Contributor Author

graydon commented Mar 16, 2019

r+ 8683e14

latobarita added a commit that referenced this pull request Mar 16, 2019
Perf doc

Reviewed-by: graydon
@latobarita latobarita merged commit 8683e14 into stellar:master Mar 16, 2019
v11.0.0 automation moved this from To do to Done Mar 16, 2019
@graydon graydon deleted the perf-doc branch April 11, 2019 16:29
@theaeolianmachine theaeolianmachine added the docs issue/PR that affects documentation label Apr 18, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs issue/PR that affects documentation enhancement
Projects
No open projects
v11.0.0
  
Done
Development

Successfully merging this pull request may close these issues.

None yet

5 participants