This chart shows the average publish performance per day of our IPFS Kubo node in the region that you select in the dropdown menu. Here, Publish is defined as adding a 100MiB blob of random bytes to a local Kubo node, and waiting for Kubo to store the provider record for the file's root CID in the Public Amino DHT. Failed publish operations are not included. We run the measurements with our Tiros measurement suite. The overall latency in seconds is shown on the left y-axis and is broken down to the several stages of the process:
Add Duration: The time it took to merkle-ize the 100MiB file and add it to the Kubo node. We use the default Kubo configuration (which has the default datastore's sync property set to false) except for the Provide.Strategy which we have set to roots, so that we can guarantee deterministic behavior with regards to when CIDs are provided to the DHT. The measurement setup expects this to happen shortly after we have added the file to the Kubo node.
sync
false
Provide.Strategy
roots
Provide Delay: The delay from when the file was added to the Kubo node until the provide operation was started.
Provide Duration: The time from when the provide operation started until the provider records were written to the DHT.
We are showing average latencies here as opposed to percentiles because they are additive and only this allows us to correctly visualize the different steps as stacked bars. The tooltip shows more information like the total P50 and P90 percentile latencies, plus the number of samples used to calculate the aggregations.
The resource provisioning of our Kubo node under test is as follows:
The right y-axis shows the number of samples used to produce each daily aggregation. Dashed lines mark the day we changed the resources of our Kubo node and the day we deployed Kubo v0.39.0.
Merkle-izing plus providing a 100 MiB file