-
Notifications
You must be signed in to change notification settings - Fork 0
/
bench.sh
executable file
·53 lines (42 loc) · 1.28 KB
/
bench.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/bin/bash
#
# Run a simple benchmark of an initial backup of a sparse file of a
# given size. This mainly measures how fast the client can split the
# live data into chunks and compute checksums for the chunks.
#
# Edit the if-statement towards the end to get a flamegraph to see
# where time is actually spent.
#
# This is very simplistic and could do with a lot of improvement. But it's a start.
set -euo pipefail
SIZE=1G
TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT
chunks="$TMP/chunks"
live="$TMP/live"
mkdir "$chunks"
mkdir "$live"
truncate --size "$SIZE" "$live/data.dat"
cat <<EOF >"$TMP/server.yaml"
address: localhost:8888
chunks: $chunks
tls_key: test.key
tls_cert: test.pem
EOF
cat <<EOF >"$TMP/client.yaml"
server_url: https://localhost:8888
verify_tls_cert: false
roots:
- $live
log: $TMP/client.log
EOF
cargo build -q --release --all-targets
OBNAM_SERVER_LOG=error cargo run -q --release --bin obnam-server -- "$TMP/server.yaml" >/dev/null &
pid="$!"
cargo run -q --release --bin obnam -- --config "$TMP/client.yaml" init --insecure-passphrase=hunter2
if true; then
/usr/bin/time cargo run -q --release --bin obnam -- --config "$TMP/client.yaml" backup >/dev/null
else
cargo flamegraph --bin obnam -o obnam.svg -- --config "$TMP/client.yaml" backup >/dev/null
fi
kill -9 "$pid"