diff --git a/plot.py b/plot.py new file mode 100644 index 0000000..6ed45e7 --- /dev/null +++ b/plot.py @@ -0,0 +1,131 @@ +import re + +from matplotlib.figure import Figure +from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas + +data = """ +pgsql-with-hashes-vm1 playbook=94e5f782b9a10c181c9514183912a9a6851b60c9, storage=4c4d264e674c687cc8ba46bcd6e8303b0b9039fa: + 220k 0:00:10 [24.5k/s] [21.6k/s] + 405k 0:00:22 [ 18k/s] [18.2k/s] + 608k 0:00:46 [50.7k/s] [13.2k/s] + 800k 0:01:15 [14.2k/s] [10.7k/s] + 1M 0:01:50 [8.85k/s] [9.08k/s] + 1.2M 0:02:26 [ 2.6k/s] [8.15k/s] + 1.4M 0:03:06 [6.76k/s] [ 7.5k/s] +1.62M 0:03:55 [ 0 /s] [6.87k/s] +1.81M 0:05:00 [5.29k/s] [6.03k/s] + +pgsql-with-hashes-vm2 playbook=94e5f782b9a10c181c9514183912a9a6851b60c9, storage=4c4d264e674c687cc8ba46bcd6e8303b0b9039fa: + 220k 0:00:12 [28.7k/s] [18.1k/s] + 395k 0:00:27 [11.6k/s] [14.6k/s] + 596k 0:00:56 [2.85k/s] [10.6k/s] + 803k 0:01:33 [5.02k/s] [8.62k/s] + 998k 0:02:15 [12.3k/s] [7.36k/s] + 1.2M 0:03:01 [ 541 /s] [6.59k/s] +1.42M 0:03:53 [15.3k/s] [6.07k/s] + 1.6M 0:04:40 [24.5k/s] [5.71k/s] + 1.8M 0:05:55 [5.77k/s] [5.05k/s] + 2M 0:07:07 [5.45k/s] [4.68k/s] + 2.2M 0:08:43 [4.01k/s] [4.21k/s] + 2.4M 0:10:03 [ 0 /s] [3.98k/s] + 2.6M 0:12:28 [ 0 /s] [3.47k/s] + 2.8M 0:15:59 [1.85k/s] [2.91k/s] + +pgsql-with-btrees-vm3 playbook=94e5f782b9a10c181c9514183912a9a6851b60c9, storage=4c4d264e674c687cc8ba46bcd6e8303b0b9039fa: + 198k 0:00:15 [24.4k/s] [12.7k/s] + 409k 0:00:44 [10.9k/s] [9.28k/s] + 608k 0:01:18 [23.6k/s] [7.78k/s] + 800k 0:02:04 [53.6k/s] [6.41k/s] + 994k 0:02:57 [ 3.4k/s] [5.61k/s] + 1.2M 0:04:37 [2.99k/s] [4.31k/s] + 1.4M 0:06:29 [ 0 /s] [ 3.6k/s] + +pgsql-with-btrees-vm4 playbook=94e5f782b9a10c181c9514183912a9a6851b60c9, storage=4c4d264e674c687cc8ba46bcd6e8303b0b9039fa: + 201k 0:00:10 [63.6k/s] [ 20k/s] + 418k 0:00:25 [15.5k/s] [16.3k/s] + 616k 0:00:45 [34.2k/s] [13.4k/s] + 800k 0:01:09 [9.84k/s] [11.6k/s] +1.01M 0:01:34 [18.8k/s] [10.7k/s] +1.23M 0:02:00 [12.1k/s] [10.2k/s] + 1.4M 0:02:40 [ 11k/s] [8.69k/s] + 1.6M 0:03:15 [ 0 /s] [8.16k/s] +1.85M 0:04:15 [7.16k/s] [7.24k/s] + 2M 0:04:58 [4.86k/s] [6.72k/s] + 2.2M 0:05:51 [11.8k/s] [6.25k/s] + 2.4M 0:07:00 [ 9.3k/s] [ 5.7k/s] + 2.6M 0:08:51 [4.23k/s] [4.88k/s] + 2.8M 0:10:55 [ 840 /s] [4.27k/s] + 3M 0:13:18 [9.25k/s] [3.76k/s] +3.21M 0:16:32 [6.57k/s] [3.23k/s] + +cassandra-1-node playbook=94e5f782b9a10c181c9514183912a9a6851b60c9, storage=4c4d264e674c687cc8ba46bcd6e8303b0b9039fa, 1 node: + 198k 0:00:44 [1.92k/s] [4.42k/s] + 399k 0:01:39 [12.6k/s] [4.02k/s] + 600k 0:02:35 [6.68k/s] [3.87k/s] + 800k 0:03:32 [2.13k/s] [3.76k/s] + 998k 0:04:23 [6.75k/s] [3.78k/s] + 1.2M 0:05:19 [2.57k/s] [3.75k/s] + 1.4M 0:06:12 [ 0 /s] [3.75k/s] +1.64M 0:07:16 [8.18k/s] [3.77k/s] + 1.8M 0:07:58 [2.59k/s] [3.76k/s] + 2M 0:08:51 [8.13k/s] [3.76k/s] + +cassandra-4-nodes playbook=94e5f782b9a10c181c9514183912a9a6851b60c9, storage=4c4d264e674c687cc8ba46bcd6e8303b0b9039fa: + 207k 0:00:49 [5.33k/s] [4.21k/s] + 402k 0:01:42 [6.56k/s] [ 3.9k/s] + 604k 0:02:38 [11.7k/s] [3.81k/s] + 800k 0:03:41 [1.23k/s] [3.62k/s] + 997k 0:04:35 [4.83k/s] [3.62k/s] + 1.2M 0:05:31 [3.85k/s] [3.62k/s] + 1.4M 0:06:27 [ 673 /s] [ 3.6k/s] + 1.6M 0:07:20 [3.82k/s] [3.63k/s] + 1.8M 0:08:18 [17.3k/s] [3.62k/s] + 2M 0:09:12 [8.49k/s] [3.62k/s] +2.21M 0:10:10 [2.85k/s] [3.62k/s] + 2.4M 0:10:59 [ 0 /s] [3.63k/s] +""" + +chunks = data.strip().split('\n\n') + +_data_re = re.compile(r' *' + r'(?P[0-9.]+[kM]) ' + r'(?P