Performance tests and benchmarks
Go to file
dependabot[bot] ae23553c87
chore(deps): Bump github.com/prometheus/common from 0.64.0 to 0.65.0 (#110)
Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.64.0 to 0.65.0.
- [Release notes](https://github.com/prometheus/common/releases)
- [Changelog](https://github.com/prometheus/common/blob/main/RELEASE.md)
- [Commits](https://github.com/prometheus/common/compare/v0.64.0...v0.65.0)

---
updated-dependencies:
- dependency-name: github.com/prometheus/common
  dependency-version: 0.65.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-23 14:29:32 +08:00
.github chore(deps): Bump golangci/golangci-lint-action from 6.5.0 to 6.5.1 (#93) 2025-03-18 15:13:33 +08:00
cmd/dfbench fix: remove shorthand for namespace (#101) 2025-05-08 21:41:57 +08:00
hack feat: add markdownlint 2022-02-24 20:25:03 +08:00
pkg feat: add downloadURL parameter to downloadFileByDfget and downloadFileByProxy functions (#102) 2025-05-09 12:09:26 +08:00
tools/file-server feat: add benchmark tools and fixed downloading (#73) 2024-10-31 13:47:19 +08:00
.gitignore feat: change .gitignore 2022-02-25 10:57:55 +08:00
.golangci.yml feat: change layout for perf-tests (#75) 2024-11-01 12:20:19 +08:00
.markdownlint.yml chore: add markdownlint.yml 2022-02-24 20:18:33 +08:00
LICENSE feat: change LICENSE 2022-02-24 20:47:15 +08:00
Makefile feat: add file-server tools (#72) 2024-09-25 22:38:08 +08:00
README.md chore(README.md): add maintainer google groups for communication channels and remove discussion group (#107) 2025-05-22 18:09:38 +08:00
go.mod chore(deps): Bump github.com/prometheus/common from 0.64.0 to 0.65.0 (#110) 2025-06-23 14:29:32 +08:00
go.sum chore(deps): Bump github.com/prometheus/common from 0.64.0 to 0.65.0 (#110) 2025-06-23 14:29:32 +08:00

README.md

Performance testing

This repository includes performance test tools of dragonfly.

Usage

Installation

go install github.com/dragonflyoss/perf-tests/cmd/dfbench@latest

Install Dragonfly for testing

Install Dragonfly using Helm chart, refer to Dragonfly Helm Chart.

$ helm repo add dragonfly https://dragonflyoss.github.io/helm-charts/
$ helm install --wait --create-namespace --namespace dragonfly-system dragonfly dragonfly/dragonfly
NAME: dragonfly
LAST DEPLOYED: Thu Apr 18 19:26:39 2024
NAMESPACE: dragonfly-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Get the scheduler address by running these commands:
  export SCHEDULER_POD_NAME=$(kubectl get pods --namespace dragonfly-system -l "app=dragonfly,release=dragonfly,component=scheduler" -o jsonpath={.items[0].metadata.name})
  export SCHEDULER_CONTAINER_PORT=$(kubectl get pod --namespace dragonfly-system $SCHEDULER_POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
  kubectl --namespace dragonfly-system port-forward $SCHEDULER_POD_NAME 8002:$SCHEDULER_CONTAINER_PORT
  echo "Visit http://127.0.0.1:8002 to use your scheduler"

2. Get the dfdaemon port by running these commands:
  export DFDAEMON_POD_NAME=$(kubectl get pods --namespace dragonfly-system -l "app=dragonfly,release=dragonfly,component=dfdaemon" -o jsonpath={.items[0].metadata.name})
  export DFDAEMON_CONTAINER_PORT=$(kubectl get pod --namespace dragonfly-system $DFDAEMON_POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
  You can use $DFDAEMON_CONTAINER_PORT as a proxy port in Node.

3. Configure runtime to use dragonfly:
  https://d7y.io/docs/getting-started/quick-start/kubernetes/

Install file server for testing.

kubectl apply -f https://raw.githubusercontent.com/dragonflyoss/perf-tests/main/tools/file-server/file-server.yaml

Run performance testing

$ dfbench dragonfly
Running benchmark for all size levels by DFGET ...
+-----------------+-------+-------------+-------------+-------------+
| FILE SIZE LEVEL | TIMES |  MIN COST   |  MAX COST   |  AVG COST   |
+-----------------+-------+-------------+-------------+-------------+
| Nano(1B)        | 3     | 528.46ms    | 717.28ms    | 648.17ms    |
+-----------------+-------+-------------+-------------+-------------+
| Micro(1KB)      | 3     | 691.76ms    | 967.26ms    | 798.55ms    |
+-----------------+-------+-------------+-------------+-------------+
| Small(1MB)      | 3     | 671.12ms    | 1250.22ms   | 897.32ms    |
+-----------------+-------+-------------+-------------+-------------+
| Medium(10MB)    | 3     | 716.83ms    | 971.49ms    | 816.14ms    |
+-----------------+-------+-------------+-------------+-------------+
| Large(1GB)      | 3     | 4855.28ms   | 6069.76ms   | 5526.63ms   |
+-----------------+-------+-------------+-------------+-------------+
| XLarge(10GB)    | 3     | 37428.71ms  | 41206.96ms  | 38794.96ms  |
+-----------------+-------+-------------+-------------+-------------+
| XXLarge(30GB)   | 3     | 102279.19ms | 139299.07ms | 118039.78ms |
+-----------------+-------+-------------+-------------+-------------+

Community

Join the conversation and help the community.

Contributing

You should check out our CONTRIBUTING and develop the project together.

Code of Conduct

Please refer to our Code of Conduct.