Hello everyone!
If you’ve been following the forum closely, you may have noticed three separate things:
- This thread, where we talked about storage node performance benchmarking.
- Release v1.104, where we have many changes from the benchmarking thread
- This running operational update, where we documented the rollout of the v1.104.
But if you haven’t been following the forum as closely, this thread is for you!
Big performance changes for nodes in v1.104.x
v1.104.1 has started rolling out, and it includes some major performance improvements for storage nodes. Many of the nodes we’ve tested have gone from being able to handle under 100 uploads/sec to over 1,000 uploads/sec. Some nodes have seen a 100x improvement!
Possible config change necessary
There are a number of changes we’ve made to achieve these performance improvements, but one of the major ones is we’ve stopped using fsync
by default. fsync
is a feature that makes the storage node software wait until new bytes are completely flushed to the disk hardware. The waiting is the problem, and our system doesn’t actually need every node to write all bytes to disk.
However, if your node is fairly unstable, this may be a regrettable change, as losing bytes could cause audit failures. Most nodes should have no trouble (a node that is shutdown safely will have all bytes flushed to disk by the operating system naturally), but a node that loses power regularly without any kind of backup system could lose data it claims to be responsible for. If this is you, you’ll want to re-enable fsync
.
However, keeping fsync
disabled is an enormous performance benefit, and will help your node win more upload races. If you enable fsync
you run the risk of losing most upload races.
Summary:
- With fsync disabled (default): much faster performance, but make sure to shut your node’s operating system off safely.
- With fsync enabled (former default): slower, more likely to lose races, but should be okay if your node’s operating system regularly shuts down unsafely.
If you want to enable fsync
, you’ll need to start your node with --filestore.force-sync=true
(or filestore.force-sync: true
in the config file)
Thanks!
Please let us know what your experience is like with v1.104.x. As this rollout progresses we’re excitedly watching many graphs, but we’d be thrilled if you shared yours!