This chart shows the average publish performance of the IPFS Kubo node from several different regions. 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. 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 root, 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
root
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.
Merkle-izing plus providing a 100 MiB file