Benchmark based on https://github.com/feast-dev/feast-benchmarks
which compares Feast feature server implemented in go and yummy feature server implemented in rust.
The benchmark is limited only to redis online store. The implementations feast and yummy have
fully compatible: request/response payloads, config (feature_store.yaml) and registries.
To reproduce test please follow steps:
./build.sh - will build all required docker images
vegeta- vegeta attack which will be used to run benchmark for required trafficfeast-serve- which is based onfeastdev/feature-server:0.26.0and will be used to apply and materialize feature store and as a Feast feature serveryummy-serve- which will be used as a Yummy feature server
./materialize.sh - will run redis, apply feature store and materialize (using feast-serve image) it to redis
./run_test_feast.sh - will run the benchmark for feast
./run_test_yummy.sh - will run the benchmark for yummy
The benchamr reports will be saved to: output-feast-serve and 'output-yummy-serve` respectively.
In the benchmark we will have three scenarios:
Entities: form 10 to 100 (step 10) Features: 50 Concurrency: 5 RPS: 10
Entities: 1 Features: from 50 to 250 (step 50) Concurrency: 5 RPS: 10
-
1 Entities: 1 Features: 50 Concurrency: 5 RPS: from 10 to 100 (step 10)
-
2 Entities: 1 Features: 50 Concurrency: 5 RPS: from 100 to 1000 (step 100)
-
3 Entities: 1 Features: 250 Concurrency: 5 RPS: from 10 to 100 (step 10)
-
4 Entities: 100 Features: 50 Concurrency: 5 RPS: from 10 to 100 (step 10)
-
5 Entities: 100 Features: 50 Concurrency: 5 RPS: from 10 to 100 (step 10)
Unlike benchmark presented on Feast blog I have used single or 5 instance of the feature server (on my laptop) thus results vary (on blog 16 instances on c5.4xlarge, 16 vCPU were used).
For the single instance (p99 latency, timeout 5s) for: Entities: 1 Features: 50 Concurrency: 5 RPS: from 10 to 100 (step 10)
| RPS | Feast serve | Yummy serve |
|---|---|---|
| 10 | 92 ms | 3.88 ms |
| 20 | timout | 3.77 ms |
| 30 | timeout | 3.74 ms |
| 40 | timeout | 3.68 ms |
| 50 | timeout | 3.60 ms |
| 60 | timeout | 3.62 ms |
| 70 | timeout | 3.56 ms |
| 80 | timeout | 3.47 ms |
| 90 | timeout | 3.25 ms |
| 100 | timeout | 3.37 ms |
For the 5 instances (p99 latency, timeout 5s) for: Entities: 1 Features: 50 Concurrency: 5 RPS: from 10 to 100 (step 10)
| RPS | Feast serve | Yummy serve |
|---|---|---|
| 10 | 83 ms | 4.2 ms |
| 20 | 93 ms | 4.0 ms |
| 30 | 91 ms | 4.1 ms |
| 40 | 105 ms | 4.0 ms |
| 50 | timeout | 3.9 ms |
| 60 | timeout | 3.8 ms |
| 70 | timeout | 3.5 ms |
| 80 | timeout | 3.4 ms |
| 90 | timeout | 3.6 ms |
| 100 | timeout | 1.9 ms |