Update s3concurrent

This commit is contained in:
Quentin 2022-09-19 12:37:25 +02:00
parent 12764a020a
commit 1ea2244c8c
Signed by untrusted user: quentin
GPG key ID: E9602264D639FF68
4 changed files with 35 additions and 1 deletions

View file

@ -30,6 +30,7 @@ source .venv/bin/activate
## Topologies
All topologies:
- `./topo/dc.yml` - A 3 node topology connected with a 1Gbit/s link and a 1ms latency
- `./topo/with-vdsl.yml` - A topology mixing datacenters with fast internal connectivity and an isolated VDSL node
- `./topo/50ms.yml` - An artifical topology simulating nodes with high bandwidth but with a fixed 50ms latency, useful to quantify the impact of latency on a distributed software
- `./topo/multi-dc.yml` - Simulate 3 DC interconnected with 50ms latency WAN network and close to zero latency inside the DC
@ -41,6 +42,7 @@ Feel free to write new topologies!
All scenarios:
- `./scenarios/garage-s3lat [garage-v0.7|garage-v0.8]` - Run s3lat on Garage
- `./scenarios/garage-concurrent [garage-v0.7|garage-v0.8]` - Run s3concurrent on Garage
- `./scenarios/garage-warp [garage-v0.7|garage-v0.8] [default|fast]` - Run warp on Garage. 2 flavors are available: fast and default.
*Scenarios take optional flavors as input that modulate their behavioir. Passing them is not mandatory,

View file

@ -3,6 +3,8 @@ package main
import (
"context"
"crypto/tls"
"fmt"
"time"
"io"
"log"
"math/rand"
@ -99,24 +101,32 @@ func main() {
}
log.Printf("created bucket %s\n", buck)
fmt.Println("sent,success,elapsed,elapsed_per_req")
// Send to bucket
for i := 1; i <= 16; i++ {
log.Printf("start concurrent loop with %d coroutines\n", i)
syn := make(chan error)
start := time.Now()
for j := 1; j <= i; j++ {
go func() {
syn <- putObj(buck, 1024*1024)
}()
}
errCount := 0
for j := 1; j <= i; j++ {
cerr := <-syn
if cerr != nil {
errCount += 1
log.Printf("%d/%d failed with %s\n", j, i, cerr)
}
}
elapsed := time.Since(start)
fmt.Printf("%d,%d,%v,%v\n", i, i - errCount, elapsed.Nanoseconds(), elapsed.Nanoseconds() / int64(i))
log.Printf("done, %d coroutines returned\n", i)
}
log.Println("done")
log.Println("bench done")
}

Binary file not shown.

22
topo/dc.yml Normal file
View file

@ -0,0 +1,22 @@
links:
- &1000
bandwidth: 1000M
latency: 1ms
servers:
- name: node1
<<: *1000
- name: node2
<<: *1000
- name: node3
<<: *1000
global:
subnet:
base: 'fc00:9a7a:9e::'
local: 64
zone: 16
latency-offset: 3ms
upstream:
ip: fc00:9a7a:9e:ffff:ffff:ffff:ffff:ffff
conn: *1000