55 lines
1.9 KiB
Markdown
55 lines
1.9 KiB
Markdown
# Étudier les performances de Bouncer
|
|
|
|
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.
|
|
|
|
Voir le répertoire `./internal/bench/testdata/proxies` pour voir les différentes configurations de cas.
|
|
|
|
## Lancer les benchmarks
|
|
|
|
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:
|
|
|
|
```bash
|
|
go test -bench="BenchmarkProxies/$BENCH_CASE" -run='^$' ./internal/bench
|
|
```
|
|
|
|
Par exemple:
|
|
|
|
```bash
|
|
# Pour exécuter ./internal/bench/testdata/proxies/basic-auth.yml
|
|
go test -bench='BenchmarkProxies/basic-auth' -run='^$' ./internal/bench
|
|
```
|
|
|
|
## Visualiser les profils d'exécution
|
|
|
|
Vous pouvez visualiser les profils d'exécution via la commande suivante:
|
|
|
|
```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
|
|
```
|