Deploy smart contracts on Filecoin’s Virtual Machine →

HTTP Retrieval Benchmarks with Boost

Boost has recently released a feature which enables storage providers to serve HTTP retrievals (full piece retrieval and range requests) with booster-http. Ecosystem partners working on Filecoin Evergreen, perpetual storage initiatives, or doing storage deal replication have shared that full piece retrievals are beneficial to efficiently move these efforts forward. In addition, there is an option to perform range requests, which means clients can select a range of content in the full piece to retrieve.

We have performed load testing on booster-http and are sharing out results in hopes that these findings can help storage providers better understand how HTTP retrievals with Boost might work on their own setup. Anyone can download our load testing tools and run their own load testing.

Environment

For this HTTP load testing effort, we tested on filcollins, which is our team’s production grade petabyte scale storage provider. Below you will find the hardware details for filcollins, which includes 4 instances - 2 cpu instances and 2 gpu instances.

CPU Instance Type

CPU

model name: AMD EPYC 7F32 8-Core Processor

Storage

5 x 1.8TB HDDs running as a striped array, designated for scratch area

2 x NVMe running as a stripped array, designated for scratch area

Memory

1 TB RAM

GPU Instance Type

CPU

model name: Intel® Xeon® Gold 6242 CPU @ 2.80GHz

Memory

502 GB RAM

GPU

4 x NVIDIA Quadro RTX 6000 (24 GB GDDR6)

Storage

500 TB Ceph system designated for long term storage of sealed/unsealed sectors

3 x 900 GB HDDs running as a striped array, designated for scratch area

Load Testing Process

In terms of process to setup the HTTP benchmark testing, we created an artificial limit on the outbound connection to simulate the 10GBit and 1GBit connections. On both, we also setup an artificial one way latency of 40ms. We simulated downloads using a load testing framework called K6.

There are two scenarios that were tested with varying concurrency: raw retrievals and Boost retrievals.

  • Raw: NGinx serving files directly from disk with no Boost or Filecoin involved.
  • Boost: done via booster-http.

These protocols were tested in 2 main modes: full-fetch and range requests.

  • full-fetch refers to full Filecoin piece retrievals.
  • range requests refers to retrieving a specific range of content within the full Filecoin piece. For this load testing exercise, we tested across multiple ranges - 1 MiB, 10 MiB, and 100 MiB.

Results

Full piece retrievals

The results of our load testing for 1GB and 10GB connections for full piece retrievals are similar. There are small differences in latency, but not by a significant amount (all less than a second).

Range requests

The results of our load testing for 1GB and 10GB connections for range requests also yielded similar results at lower concurrencies. The differences between raw retrievals and booster-http are not that noticeable (less than a second).

However, as concurrency goes up to 1000, you can see that boost range request retrievals are very slow (for 10GB connection, up to 10 minutes for larger data ranges), and the success rate also drops in comparison to HTTPS retrievals (40% to 60% success rates). There is a drop off in ability for Boost to start responding to the request, especially with high concurrent requests.

The team is committed to investigating this issue and figuring out why this is the case. This slow down only occurs at high concurrency levels. If any storage providers observe similar behavior, or have use cases which require this level or higher concurrency, we would like to learn more. In addition, if you have work loads that you would like help testing, please reach out to the team. You can find us on GitHub or #boost-help in Filecoin slack.

Filecoin is an open-source cloud storage marketplace, protocol, and incentive layer.
icon_client
filecoin_request_icon
filecoin_data_icon
filecoin_data_icon_black
icon_miner
icon_miner_other
filecoin_data_icon_black