File: test-concurrency-performance-stats.py

package info (click to toggle)
duplicity 3.0.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,260 kB
  • sloc: python: 25,089; sh: 934; ansic: 392; makefile: 83
file content (53 lines) | stat: -rwxr-xr-x 1,700 bytes parent folder | download | duplicates (2)
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
#!/usr/bin/python3

import glob
import json
import os
import re
from pprint import pprint as print
import matplotlib.pyplot as plt


DEST_DIR = "/tmp/back-cc-test"

stats = {}
rex = re.compile(r".*tt([0-9]*)-cc([0-9]*).json")

for filename in glob.iglob("/tmp/results-*/jsonstat-tt*.json"):
    print(filename)
    m = rex.match(filename)
    tt, cc = m.groups() if m is not None else ("no", "no")
    tt, cc = int(tt), int(cc)
    with open(filename) as file:
        stats.setdefault(tt, {})[cc] = json.load(file)
        pass
# print(stats)

for tt, cc_dict in sorted(stats.items()):
    time_per_volumes = []
    for cc, values in cc_dict.items():
        time_total = values["ElapsedTime"]
        time_per_volume = time_total / values["ConcurrentTransferStats"]["count"]
        time_per_volumes.append(time_per_volume)
        print(
            f"Backend delay: {tt:5}, Concurrency: {cc} Time: {values['ElapsedTime']:6.2f}, Time per vol: {time_per_volume:5.2f}, avg pur transfer time {values['ConcurrentTransferStats']['time']['avg']:5.2f}, avg throttle {values['ConcurrentTransferStats']['throttle']['avg']:5.2f}, Peak in queue: {values['ConcurrentTransferStats']['peak_in_queue']}",
            width=200,
        )
    x1 = list(sorted(cc_dict.keys()))
    y1 = [y["ElapsedTime"] for y in cc_dict.values()]
    y1 = time_per_volumes
    plt.plot(x1, y1, label=f"TT: {tt}")

# naming the x axis
plt.xlabel("concurrency")
# naming the y axis
plt.ylabel("avg duration per volume")
# giving a title to my graph
plt.title("Backup time by concurrency and transfer speed")

# show a legend on the plot
plt.legend()

# function to show the plot
plt.savefig("/tmp/concurrency-stat.png")
plt.show()