Upcoming storage node improvements including benchmark tool

Performance improvements are all merged. Time for one final update to keep you all informed.

Let’s start with the important information first. There is now a feature flag for nodes that require security over performance. --filestore.force-sync=true

Also I am not sure how accurate the bandwidth tracking on the storage node dashboard will be. Once upon a time we had the problem that the dashboard was showing the order size instead of the transfered bytes. I would expect a similar situation again. If you see a broken dashboard in production it is not because we didn’t test it. It is because we already made the decision that a broken dashboard is still worth the performance gain. We can worry about the dashboard later. As a workaround I would suggest to use grafana instead. That should still show the correct value.

We also need to increase the free space buffer from 500MB to 5GB. Because of the TTL nodes will switch between full and free space more frequently. Combined with an higher upload rate a 500MB buffer would give the customer a bad experience. The customer will get a decent number of failed uploads. By increasing the free space buffer we can make sure the storage node can accept 100MBit/s for 5 more minutes after passing the threshold. I am not saying that a customer would ever upload such an amount but technically the storage nodes are capable of handling it. So we can as well increase the free space buffer to make it possible for both sides.

Now one final request if you don’t mind. We would love to get some final benchmark results especially from systems that we haven’t tested yet. For example a Windows node or some strange file system. Most if not all of our internal tests have been ZFS and ext4.

git clone https://github.com/storj/storj
cd storj
git fetch https://review.dev.storj.io/storj/storj refs/changes/99/13099/3 && git checkout FETCH_HEAD
go install ./cmd/tools/piecestore-benchmark/

For executing this version of the benchmark you don’t need any extra flags. Soon this final benchmark will get merged onto the main branch. The idea is that this benchmark can be used to test out different setups.

In terms of target performance we have blasted away all of our goals. The performance gain is higher than needed and even higher than we ever dreamed of. Seriously you have to test this out on your machine otherwise you will not believe it. Here is what my slowest hard drive can handle now:

# old code
piecestore-benchmark  -pieces-to-upload 100000
uploaded 824633807224 pieces in 24m8.519875266s (4.09 MiB/s)
# new code with ZFS sync=standard
piecestore-benchmark  -pieces-to-upload 100000
uploaded 100000 pieces in 29.534088576s (200.42 MiB/s)
collected 100000 pieces in 16.178403936s (365.87 MiB/s)
# new code with ZFS sync=disabled
piecestore-benchmark  -pieces-to-upload 100000
uploaded 100000 pieces in 23.438063319s (252.55 MiB/s)
collected 100000 pieces in 14.063208782s (420.90 MiB/s)
10 Likes