Tweaked example plotting scripts.
This commit is contained in:
parent
03b307d5f0
commit
1616a855f1
2 changed files with 14 additions and 8 deletions
|
@ -21,23 +21,25 @@ def main():
|
||||||
for name, qs in quorum_systems.items():
|
for name, qs in quorum_systems.items():
|
||||||
d = {0.0: 1, 0.1: 1, 0.2: 1, 0.3: 1, 0.4: 1, 0.5: 1,
|
d = {0.0: 1, 0.1: 1, 0.2: 1, 0.3: 1, 0.4: 1, 0.5: 1,
|
||||||
0.6: 1, 0.7: 1, 0.8: 1, 0.9: 1, 1.0: 1}
|
0.6: 1, 0.7: 1, 0.8: 1, 0.9: 1, 1.0: 1}
|
||||||
fig, axes = plt.subplots(3, 4, figsize=(6 * 4, 4 * 3), sharey='all')
|
fig, axes = plt.subplots(3, 4, figsize=(6 * 2, 4 * 2), sharey='all')
|
||||||
axes_iter = (axes[row][col] for row in range(3) for col in range(4))
|
axes_iter = (axes[row][col] for row in range(3) for col in range(4))
|
||||||
|
|
||||||
for fr in d.keys():
|
for fr in d.keys():
|
||||||
sigma = qs.strategy(read_fraction=fr)
|
sigma = qs.strategy(read_fraction=fr)
|
||||||
ax = next(axes_iter)
|
ax = next(axes_iter)
|
||||||
plot_load_distribution_on(ax, sigma, nodes)
|
plot_load_distribution_on(ax, sigma, nodes)
|
||||||
ax.set_title(f'Optimized For Read Fraction = {fr}')
|
ax.set_title(f'Optimized For\nRead Fraction = {fr}')
|
||||||
ax.set_xlabel('Read Fraction')
|
ax.set_xlabel('Read Fraction')
|
||||||
ax.legend()
|
ax.grid()
|
||||||
|
# ax.legend()
|
||||||
|
|
||||||
sigma = qs.strategy(read_fraction=d)
|
sigma = qs.strategy(read_fraction=d)
|
||||||
ax = next(axes_iter)
|
ax = next(axes_iter)
|
||||||
plot_load_distribution_on(ax, sigma, nodes)
|
plot_load_distribution_on(ax, sigma, nodes)
|
||||||
ax.set_title('Optimized For Uniform Read Fraction')
|
ax.set_title('Optimized For\nUniform Read Fraction')
|
||||||
ax.set_xlabel('Read Fraction')
|
ax.set_xlabel('Read Fraction')
|
||||||
ax.legend()
|
ax.grid()
|
||||||
|
# ax.legend()
|
||||||
|
|
||||||
axes[0][0].set_ylabel('Load')
|
axes[0][0].set_ylabel('Load')
|
||||||
axes[1][0].set_ylabel('Load')
|
axes[1][0].set_ylabel('Load')
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from quorums import *
|
from quorums import *
|
||||||
|
import datetime
|
||||||
import matplotlib
|
import matplotlib
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
@ -10,16 +11,18 @@ def main():
|
||||||
c = Node('c', write_capacity=1000, read_capacity=10000)
|
c = Node('c', write_capacity=1000, read_capacity=10000)
|
||||||
d = Node('d', write_capacity=500, read_capacity=5000)
|
d = Node('d', write_capacity=500, read_capacity=5000)
|
||||||
e = Node('e', write_capacity=1000, read_capacity=10000)
|
e = Node('e', write_capacity=1000, read_capacity=10000)
|
||||||
|
fr = 0.9
|
||||||
nodes = [a, b, c, d, e]
|
nodes = [a, b, c, d, e]
|
||||||
|
|
||||||
simple_majority = QuorumSystem(reads=majority([a, b, c, d, e]))
|
simple_majority = QuorumSystem(reads=majority([a, b, c, d, e]))
|
||||||
crumbling_walls = QuorumSystem(reads=a*b + c*d*e)
|
crumbling_walls = QuorumSystem(reads=a*b + c*d*e)
|
||||||
paths = QuorumSystem(reads=a*b + a*c*e + d*e + d*c*b)
|
paths = QuorumSystem(reads=a*b + a*c*e + d*e + d*c*b)
|
||||||
|
opt = search(nodes, read_fraction=fr, timeout=datetime.timedelta(seconds=9))
|
||||||
|
|
||||||
fig, ax = plt.subplots(3, 3, figsize = (6.3 * 2, 4.8 * 2), sharey='row')
|
fig, ax = plt.subplots(3, 4, figsize = (6.3 * 2, 4.8 * 2), sharey='row')
|
||||||
for i, qs in enumerate([simple_majority, crumbling_walls, paths]):
|
for i, qs in enumerate([simple_majority, crumbling_walls, paths, opt]):
|
||||||
fr = 0.9
|
|
||||||
sigma = qs.strategy(read_fraction=fr)
|
sigma = qs.strategy(read_fraction=fr)
|
||||||
|
print(qs, sigma.capacity(read_fraction=fr))
|
||||||
plot_node_load_on(ax[0][i], sigma, nodes=nodes, read_fraction=fr)
|
plot_node_load_on(ax[0][i], sigma, nodes=nodes, read_fraction=fr)
|
||||||
plot_node_utilization_on(ax[1][i], sigma, nodes=nodes, read_fraction=fr)
|
plot_node_utilization_on(ax[1][i], sigma, nodes=nodes, read_fraction=fr)
|
||||||
plot_node_throughput_on(ax[2][i], sigma, nodes=nodes, read_fraction=fr)
|
plot_node_throughput_on(ax[2][i], sigma, nodes=nodes, read_fraction=fr)
|
||||||
|
@ -27,6 +30,7 @@ def main():
|
||||||
ax[0][0].set_title('Simple Majority')
|
ax[0][0].set_title('Simple Majority')
|
||||||
ax[0][1].set_title('Crumbling Walls')
|
ax[0][1].set_title('Crumbling Walls')
|
||||||
ax[0][2].set_title('Paths')
|
ax[0][2].set_title('Paths')
|
||||||
|
ax[0][3].set_title(f'Opt {opt.reads}')
|
||||||
ax[0][0].set_ylabel('Load')
|
ax[0][0].set_ylabel('Load')
|
||||||
ax[1][0].set_ylabel('Utilization at Peak Throughput')
|
ax[1][0].set_ylabel('Utilization at Peak Throughput')
|
||||||
ax[2][0].set_ylabel('Throughput at Peak Throughput')
|
ax[2][0].set_ylabel('Throughput at Peak Throughput')
|
||||||
|
|
Loading…
Reference in a new issue