2024-06-27 14:13:08 +02:00
# Étudier les performances de Bouncer
2024-05-28 16:45:15 +02:00
2024-06-28 17:44:51 +02:00
Le package `./internal` est dédié à l'étude des performances de Bouncer. Il contient une suite de benchmarks simulant de proxies avec différentes configurations de layers afin d'évaluer les points d'engorgement sur le traitement des requêtes.
2024-05-28 16:45:15 +02:00
2024-06-28 17:44:51 +02:00
Voir le répertoire `./internal/bench/testdata/proxies` pour voir les différentes configurations de cas.
2024-05-28 16:45:15 +02:00
2024-06-28 17:44:51 +02:00
## Lancer les benchmarks
2024-05-28 16:45:15 +02:00
2024-06-28 17:44:51 +02:00
Le plus simple est d'utiliser la commande `make bench` qui exécutera séquentiellement tous les benchmarks. Il est également possible de lancer un benchmark spécifique via la commande suivante:
2024-05-28 16:45:15 +02:00
2024-06-28 17:44:51 +02:00
```bash
go test -bench="BenchmarkProxies/$BENCH_CASE" -run='^$' ./internal/bench
```
2024-05-28 16:45:15 +02:00
2024-06-28 17:44:51 +02:00
Par exemple:
2024-05-28 16:45:15 +02:00
2024-06-28 17:44:51 +02:00
```bash
# Pour exécuter ./internal/bench/testdata/proxies/basic-auth.yml
go test -bench='BenchmarkProxies/basic-auth' -run='^$' ./internal/bench
```
2024-05-28 16:45:15 +02:00
2024-06-28 17:44:51 +02:00
## Visualiser les profils d'exécution
2024-05-28 16:45:15 +02:00
2024-06-28 17:44:51 +02:00
Vous pouvez visualiser les profils d'exécution via la commande suivante:
2024-05-28 16:45:15 +02:00
2024-06-28 17:44:51 +02:00
```shell
go tool pprof -web path/to/file.prof
```
Par défaut l'exécution des benchmarks créera automatiquement des fichiers de profil dans le répertoire `./internal/bench/testdata/proxies` .
Par exemple:
```shell
go tool pprof -web ./internal/bench/testdata/proxies/basic-auth.prof
```
## Comparer les évolutions
```bash
# Lancer un premier benchmark
go test -bench="BenchmarkProxies/$BENCH_CASE" -run='^$' ./internal/bench
# Faire une sauvegarde du fichier de profil
cp ./internal/bench/testdata/proxies/$BENCH_CASE.prof ./internal/bench/testdata/proxies/$BENCH_CASE-prev.prof
# Faire des modifications sur les sources
# Lancer un second benchmark
go test -bench="BenchmarkProxies/$BENCH_CASE" -run='^$' ./internal/bench
# Visualiser la différence entre les deux profils
go tool pprof -web -base=./internal/bench/testdata/proxies/$BENCH_CASE-prev.prof ./internal/bench/testdata/proxies/$BENCH_CASE.prof
```