Created gh-images branch for storing images

This commit is contained in:
Christopher Haster
2019-03-31 20:42:17 -05:00
commit 405c1ab6e3
6 changed files with 4210 additions and 0 deletions

55
file-cost.py Executable file
View File

@@ -0,0 +1,55 @@
#!/usr/bin/env python
import matplotlib
matplotlib.use('SVG')
import matplotlib.pyplot as plt
import numpy as np
matplotlib.rc('font', family='sans-serif', size=11)
matplotlib.rc('axes', titlesize='medium', labelsize='medium')
matplotlib.rc('xtick', labelsize='small')
matplotlib.rc('ytick', labelsize='small')
fig, ax = plt.subplots(figsize=(6, 3.5))
ax.set_title('File storage cost')
# multiplicative cost of inline files
def inline_cost(n, B):
#return 4+n-n
return np.full_like(n, 4)
# multiplicative cost of ctz skip-list files
def ctz_cost(n, B):
return (np.ceil(n/B)*B) / n
# combined multiplicative cost
def file_cost(n, B):
return np.where(n < B/4, inline_cost(n, B), ctz_cost(n, B))
t = np.arange(0.0, 80.0, 0.25)
ax.plot(t, file_cost(t, 16))
t1 = np.arange(0.0, 16.0/4.0 + 0.5, 0.25)
t2 = np.arange(16.0/4.0, 80.0, 0.25)
ax.plot(t1, ctz_cost(t1, 16), color='C0', linestyle=(2.65, (3.65,1.65)))
ax.plot(t2, inline_cost(t2, 16), color='C0', linestyle=(3.65, (3.65,1.65)))
ax.text(70.5, 4.15, 'inline file', size='small')
ax.text(3.3, 5.85, 'ctz skip-list', rotation=-85, size='small')
ax.set_xlabel('file size')
ax.set_xlim(0, 80)
ax.set_ylabel('multiplicative cost')
ax.set_ylim(0, 6)
xticks = np.arange(0, 80+1, 16)
ax.set_xticks(xticks)
ax.set_xticklabels(['%dKiB' % ((t*(4096/16))/1024) for t in xticks])
yticks = np.arange(0, 6+1, 2)
ax.set_yticks(yticks)
ax.set_yticklabels(['%dx' % t for t in yticks])
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
fig.tight_layout()
plt.savefig('file-cost.svg', bbox_inches="tight")

995
file-cost.svg Normal file
View File

@@ -0,0 +1,995 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Created with matplotlib (http://matplotlib.org/) -->
<svg height="241.712285pt" version="1.1" viewBox="0 0 422.509804 241.712285" width="422.509804pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">
*{stroke-linecap:butt;stroke-linejoin:round;}
</style>
</defs>
<g id="figure_1">
<g id="patch_1">
<path d="M 0 241.712285
L 422.509804 241.712285
L 422.509804 0
L 0 0
z
" style="fill:#ffffff;"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 40.099247 203.998281
L 402.059247 203.998281
L 402.059247 21.558281
L 40.099247 21.558281
z
" style="fill:#ffffff;"/>
</g>
<g id="matplotlib.axis_1">
<g id="xtick_1">
<g id="line2d_1">
<defs>
<path d="M 0 0
L 0 3.5
" id="mf543708c25" style="stroke:#000000;stroke-width:0.8;"/>
</defs>
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="40.099247" xlink:href="#mf543708c25" y="203.998281"/>
</g>
</g>
<g id="text_1">
<!-- 0KiB -->
<defs>
<path d="M 31.78125 66.40625
Q 24.171875 66.40625 20.328125 58.90625
Q 16.5 51.421875 16.5 36.375
Q 16.5 21.390625 20.328125 13.890625
Q 24.171875 6.390625 31.78125 6.390625
Q 39.453125 6.390625 43.28125 13.890625
Q 47.125 21.390625 47.125 36.375
Q 47.125 51.421875 43.28125 58.90625
Q 39.453125 66.40625 31.78125 66.40625
z
M 31.78125 74.21875
Q 44.046875 74.21875 50.515625 64.515625
Q 56.984375 54.828125 56.984375 36.375
Q 56.984375 17.96875 50.515625 8.265625
Q 44.046875 -1.421875 31.78125 -1.421875
Q 19.53125 -1.421875 13.0625 8.265625
Q 6.59375 17.96875 6.59375 36.375
Q 6.59375 54.828125 13.0625 64.515625
Q 19.53125 74.21875 31.78125 74.21875
z
" id="DejaVuSans-30"/>
<path d="M 9.8125 72.90625
L 19.671875 72.90625
L 19.671875 42.09375
L 52.390625 72.90625
L 65.09375 72.90625
L 28.90625 38.921875
L 67.671875 0
L 54.6875 0
L 19.671875 35.109375
L 19.671875 0
L 9.8125 0
z
" id="DejaVuSans-4b"/>
<path d="M 9.421875 54.6875
L 18.40625 54.6875
L 18.40625 0
L 9.421875 0
z
M 9.421875 75.984375
L 18.40625 75.984375
L 18.40625 64.59375
L 9.421875 64.59375
z
" id="DejaVuSans-69"/>
<path d="M 19.671875 34.8125
L 19.671875 8.109375
L 35.5 8.109375
Q 43.453125 8.109375 47.28125 11.40625
Q 51.125 14.703125 51.125 21.484375
Q 51.125 28.328125 47.28125 31.5625
Q 43.453125 34.8125 35.5 34.8125
z
M 19.671875 64.796875
L 19.671875 42.828125
L 34.28125 42.828125
Q 41.5 42.828125 45.03125 45.53125
Q 48.578125 48.25 48.578125 53.8125
Q 48.578125 59.328125 45.03125 62.0625
Q 41.5 64.796875 34.28125 64.796875
z
M 9.8125 72.90625
L 35.015625 72.90625
Q 46.296875 72.90625 52.390625 68.21875
Q 58.5 63.53125 58.5 54.890625
Q 58.5 48.1875 55.375 44.234375
Q 52.25 40.28125 46.1875 39.3125
Q 53.46875 37.75 57.5 32.78125
Q 61.53125 27.828125 61.53125 20.40625
Q 61.53125 10.640625 54.890625 5.3125
Q 48.25 0 35.984375 0
L 9.8125 0
z
" id="DejaVuSans-42"/>
</defs>
<g transform="translate(29.763669 217.96073)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-30"/>
<use x="63.623047" xlink:href="#DejaVuSans-4b"/>
<use x="129.199219" xlink:href="#DejaVuSans-69"/>
<use x="156.982422" xlink:href="#DejaVuSans-42"/>
</g>
</g>
</g>
<g id="xtick_2">
<g id="line2d_2">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="112.491247" xlink:href="#mf543708c25" y="203.998281"/>
</g>
</g>
<g id="text_2">
<!-- 4KiB -->
<defs>
<path d="M 37.796875 64.3125
L 12.890625 25.390625
L 37.796875 25.390625
z
M 35.203125 72.90625
L 47.609375 72.90625
L 47.609375 25.390625
L 58.015625 25.390625
L 58.015625 17.1875
L 47.609375 17.1875
L 47.609375 0
L 37.796875 0
L 37.796875 17.1875
L 4.890625 17.1875
L 4.890625 26.703125
z
" id="DejaVuSans-34"/>
</defs>
<g transform="translate(102.155669 217.96073)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-34"/>
<use x="63.623047" xlink:href="#DejaVuSans-4b"/>
<use x="129.199219" xlink:href="#DejaVuSans-69"/>
<use x="156.982422" xlink:href="#DejaVuSans-42"/>
</g>
</g>
</g>
<g id="xtick_3">
<g id="line2d_3">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="184.883247" xlink:href="#mf543708c25" y="203.998281"/>
</g>
</g>
<g id="text_3">
<!-- 8KiB -->
<defs>
<path d="M 31.78125 34.625
Q 24.75 34.625 20.71875 30.859375
Q 16.703125 27.09375 16.703125 20.515625
Q 16.703125 13.921875 20.71875 10.15625
Q 24.75 6.390625 31.78125 6.390625
Q 38.8125 6.390625 42.859375 10.171875
Q 46.921875 13.96875 46.921875 20.515625
Q 46.921875 27.09375 42.890625 30.859375
Q 38.875 34.625 31.78125 34.625
z
M 21.921875 38.8125
Q 15.578125 40.375 12.03125 44.71875
Q 8.5 49.078125 8.5 55.328125
Q 8.5 64.0625 14.71875 69.140625
Q 20.953125 74.21875 31.78125 74.21875
Q 42.671875 74.21875 48.875 69.140625
Q 55.078125 64.0625 55.078125 55.328125
Q 55.078125 49.078125 51.53125 44.71875
Q 48 40.375 41.703125 38.8125
Q 48.828125 37.15625 52.796875 32.3125
Q 56.78125 27.484375 56.78125 20.515625
Q 56.78125 9.90625 50.3125 4.234375
Q 43.84375 -1.421875 31.78125 -1.421875
Q 19.734375 -1.421875 13.25 4.234375
Q 6.78125 9.90625 6.78125 20.515625
Q 6.78125 27.484375 10.78125 32.3125
Q 14.796875 37.15625 21.921875 38.8125
z
M 18.3125 54.390625
Q 18.3125 48.734375 21.84375 45.5625
Q 25.390625 42.390625 31.78125 42.390625
Q 38.140625 42.390625 41.71875 45.5625
Q 45.3125 48.734375 45.3125 54.390625
Q 45.3125 60.0625 41.71875 63.234375
Q 38.140625 66.40625 31.78125 66.40625
Q 25.390625 66.40625 21.84375 63.234375
Q 18.3125 60.0625 18.3125 54.390625
z
" id="DejaVuSans-38"/>
</defs>
<g transform="translate(174.547669 217.96073)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-38"/>
<use x="63.623047" xlink:href="#DejaVuSans-4b"/>
<use x="129.199219" xlink:href="#DejaVuSans-69"/>
<use x="156.982422" xlink:href="#DejaVuSans-42"/>
</g>
</g>
</g>
<g id="xtick_4">
<g id="line2d_4">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="257.275247" xlink:href="#mf543708c25" y="203.998281"/>
</g>
</g>
<g id="text_4">
<!-- 12KiB -->
<defs>
<path d="M 12.40625 8.296875
L 28.515625 8.296875
L 28.515625 63.921875
L 10.984375 60.40625
L 10.984375 69.390625
L 28.421875 72.90625
L 38.28125 72.90625
L 38.28125 8.296875
L 54.390625 8.296875
L 54.390625 0
L 12.40625 0
z
" id="DejaVuSans-31"/>
<path d="M 19.1875 8.296875
L 53.609375 8.296875
L 53.609375 0
L 7.328125 0
L 7.328125 8.296875
Q 12.9375 14.109375 22.625 23.890625
Q 32.328125 33.6875 34.8125 36.53125
Q 39.546875 41.84375 41.421875 45.53125
Q 43.3125 49.21875 43.3125 52.78125
Q 43.3125 58.59375 39.234375 62.25
Q 35.15625 65.921875 28.609375 65.921875
Q 23.96875 65.921875 18.8125 64.3125
Q 13.671875 62.703125 7.8125 59.421875
L 7.8125 69.390625
Q 13.765625 71.78125 18.9375 73
Q 24.125 74.21875 28.421875 74.21875
Q 39.75 74.21875 46.484375 68.546875
Q 53.21875 62.890625 53.21875 53.421875
Q 53.21875 48.921875 51.53125 44.890625
Q 49.859375 40.875 45.40625 35.40625
Q 44.1875 33.984375 37.640625 27.21875
Q 31.109375 20.453125 19.1875 8.296875
z
" id="DejaVuSans-32"/>
</defs>
<g transform="translate(244.02469 217.96073)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-31"/>
<use x="63.623047" xlink:href="#DejaVuSans-32"/>
<use x="127.246094" xlink:href="#DejaVuSans-4b"/>
<use x="192.822266" xlink:href="#DejaVuSans-69"/>
<use x="220.605469" xlink:href="#DejaVuSans-42"/>
</g>
</g>
</g>
<g id="xtick_5">
<g id="line2d_5">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="329.667247" xlink:href="#mf543708c25" y="203.998281"/>
</g>
</g>
<g id="text_5">
<!-- 16KiB -->
<defs>
<path d="M 33.015625 40.375
Q 26.375 40.375 22.484375 35.828125
Q 18.609375 31.296875 18.609375 23.390625
Q 18.609375 15.53125 22.484375 10.953125
Q 26.375 6.390625 33.015625 6.390625
Q 39.65625 6.390625 43.53125 10.953125
Q 47.40625 15.53125 47.40625 23.390625
Q 47.40625 31.296875 43.53125 35.828125
Q 39.65625 40.375 33.015625 40.375
z
M 52.59375 71.296875
L 52.59375 62.3125
Q 48.875 64.0625 45.09375 64.984375
Q 41.3125 65.921875 37.59375 65.921875
Q 27.828125 65.921875 22.671875 59.328125
Q 17.53125 52.734375 16.796875 39.40625
Q 19.671875 43.65625 24.015625 45.921875
Q 28.375 48.1875 33.59375 48.1875
Q 44.578125 48.1875 50.953125 41.515625
Q 57.328125 34.859375 57.328125 23.390625
Q 57.328125 12.15625 50.6875 5.359375
Q 44.046875 -1.421875 33.015625 -1.421875
Q 20.359375 -1.421875 13.671875 8.265625
Q 6.984375 17.96875 6.984375 36.375
Q 6.984375 53.65625 15.1875 63.9375
Q 23.390625 74.21875 37.203125 74.21875
Q 40.921875 74.21875 44.703125 73.484375
Q 48.484375 72.75 52.59375 71.296875
z
" id="DejaVuSans-36"/>
</defs>
<g transform="translate(316.41669 217.96073)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-31"/>
<use x="63.623047" xlink:href="#DejaVuSans-36"/>
<use x="127.246094" xlink:href="#DejaVuSans-4b"/>
<use x="192.822266" xlink:href="#DejaVuSans-69"/>
<use x="220.605469" xlink:href="#DejaVuSans-42"/>
</g>
</g>
</g>
<g id="xtick_6">
<g id="line2d_6">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="402.059247" xlink:href="#mf543708c25" y="203.998281"/>
</g>
</g>
<g id="text_6">
<!-- 20KiB -->
<g transform="translate(388.80869 217.96073)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-32"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
<use x="127.246094" xlink:href="#DejaVuSans-4b"/>
<use x="192.822266" xlink:href="#DejaVuSans-69"/>
<use x="220.605469" xlink:href="#DejaVuSans-42"/>
</g>
</g>
</g>
<g id="text_7">
<!-- file size -->
<defs>
<path d="M 37.109375 75.984375
L 37.109375 68.5
L 28.515625 68.5
Q 23.6875 68.5 21.796875 66.546875
Q 19.921875 64.59375 19.921875 59.515625
L 19.921875 54.6875
L 34.71875 54.6875
L 34.71875 47.703125
L 19.921875 47.703125
L 19.921875 0
L 10.890625 0
L 10.890625 47.703125
L 2.296875 47.703125
L 2.296875 54.6875
L 10.890625 54.6875
L 10.890625 58.5
Q 10.890625 67.625 15.140625 71.796875
Q 19.390625 75.984375 28.609375 75.984375
z
" id="DejaVuSans-66"/>
<path d="M 9.421875 75.984375
L 18.40625 75.984375
L 18.40625 0
L 9.421875 0
z
" id="DejaVuSans-6c"/>
<path d="M 56.203125 29.59375
L 56.203125 25.203125
L 14.890625 25.203125
Q 15.484375 15.921875 20.484375 11.0625
Q 25.484375 6.203125 34.421875 6.203125
Q 39.59375 6.203125 44.453125 7.46875
Q 49.3125 8.734375 54.109375 11.28125
L 54.109375 2.78125
Q 49.265625 0.734375 44.1875 -0.34375
Q 39.109375 -1.421875 33.890625 -1.421875
Q 20.796875 -1.421875 13.15625 6.1875
Q 5.515625 13.8125 5.515625 26.8125
Q 5.515625 40.234375 12.765625 48.109375
Q 20.015625 56 32.328125 56
Q 43.359375 56 49.78125 48.890625
Q 56.203125 41.796875 56.203125 29.59375
z
M 47.21875 32.234375
Q 47.125 39.59375 43.09375 43.984375
Q 39.0625 48.390625 32.421875 48.390625
Q 24.90625 48.390625 20.390625 44.140625
Q 15.875 39.890625 15.1875 32.171875
z
" id="DejaVuSans-65"/>
<path id="DejaVuSans-20"/>
<path d="M 44.28125 53.078125
L 44.28125 44.578125
Q 40.484375 46.53125 36.375 47.5
Q 32.28125 48.484375 27.875 48.484375
Q 21.1875 48.484375 17.84375 46.4375
Q 14.5 44.390625 14.5 40.28125
Q 14.5 37.15625 16.890625 35.375
Q 19.28125 33.59375 26.515625 31.984375
L 29.59375 31.296875
Q 39.15625 29.25 43.1875 25.515625
Q 47.21875 21.78125 47.21875 15.09375
Q 47.21875 7.46875 41.1875 3.015625
Q 35.15625 -1.421875 24.609375 -1.421875
Q 20.21875 -1.421875 15.453125 -0.5625
Q 10.6875 0.296875 5.421875 2
L 5.421875 11.28125
Q 10.40625 8.6875 15.234375 7.390625
Q 20.0625 6.109375 24.8125 6.109375
Q 31.15625 6.109375 34.5625 8.28125
Q 37.984375 10.453125 37.984375 14.40625
Q 37.984375 18.0625 35.515625 20.015625
Q 33.0625 21.96875 24.703125 23.78125
L 21.578125 24.515625
Q 13.234375 26.265625 9.515625 29.90625
Q 5.8125 33.546875 5.8125 39.890625
Q 5.8125 47.609375 11.28125 51.796875
Q 16.75 56 26.8125 56
Q 31.78125 56 36.171875 55.265625
Q 40.578125 54.546875 44.28125 53.078125
z
" id="DejaVuSans-73"/>
<path d="M 5.515625 54.6875
L 48.1875 54.6875
L 48.1875 46.484375
L 14.40625 7.171875
L 48.1875 7.171875
L 48.1875 0
L 4.296875 0
L 4.296875 8.203125
L 38.09375 47.515625
L 5.515625 47.515625
z
" id="DejaVuSans-7a"/>
</defs>
<g transform="translate(200.290966 232.224628)scale(0.11 -0.11)">
<use xlink:href="#DejaVuSans-66"/>
<use x="35.205078" xlink:href="#DejaVuSans-69"/>
<use x="62.988281" xlink:href="#DejaVuSans-6c"/>
<use x="90.771484" xlink:href="#DejaVuSans-65"/>
<use x="152.294922" xlink:href="#DejaVuSans-20"/>
<use x="184.082031" xlink:href="#DejaVuSans-73"/>
<use x="236.181641" xlink:href="#DejaVuSans-69"/>
<use x="263.964844" xlink:href="#DejaVuSans-7a"/>
<use x="316.455078" xlink:href="#DejaVuSans-65"/>
</g>
</g>
</g>
<g id="matplotlib.axis_2">
<g id="ytick_1">
<g id="line2d_7">
<defs>
<path d="M 0 0
L -3.5 0
" id="medd6d3c8aa" style="stroke:#000000;stroke-width:0.8;"/>
</defs>
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="40.099247" xlink:href="#medd6d3c8aa" y="203.998281"/>
</g>
</g>
<g id="text_8">
<!-- 0x -->
<defs>
<path d="M 54.890625 54.6875
L 35.109375 28.078125
L 55.90625 0
L 45.3125 0
L 29.390625 21.484375
L 13.484375 0
L 2.875 0
L 24.125 28.609375
L 4.6875 54.6875
L 15.28125 54.6875
L 29.78125 35.203125
L 44.28125 54.6875
z
" id="DejaVuSans-78"/>
</defs>
<g transform="translate(21.845938 207.479505)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-30"/>
<use x="63.623047" xlink:href="#DejaVuSans-78"/>
</g>
</g>
</g>
<g id="ytick_2">
<g id="line2d_8">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="40.099247" xlink:href="#medd6d3c8aa" y="143.184948"/>
</g>
</g>
<g id="text_9">
<!-- 2x -->
<g transform="translate(21.845938 146.666172)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-32"/>
<use x="63.623047" xlink:href="#DejaVuSans-78"/>
</g>
</g>
</g>
<g id="ytick_3">
<g id="line2d_9">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="40.099247" xlink:href="#medd6d3c8aa" y="82.371615"/>
</g>
</g>
<g id="text_10">
<!-- 4x -->
<g transform="translate(21.845938 85.852839)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-34"/>
<use x="63.623047" xlink:href="#DejaVuSans-78"/>
</g>
</g>
</g>
<g id="ytick_4">
<g id="line2d_10">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="40.099247" xlink:href="#medd6d3c8aa" y="21.558281"/>
</g>
</g>
<g id="text_11">
<!-- 6x -->
<g transform="translate(21.845938 25.039505)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-36"/>
<use x="63.623047" xlink:href="#DejaVuSans-78"/>
</g>
</g>
</g>
<g id="text_12">
<!-- multiplicative cost -->
<defs>
<path d="M 52 44.1875
Q 55.375 50.25 60.0625 53.125
Q 64.75 56 71.09375 56
Q 79.640625 56 84.28125 50.015625
Q 88.921875 44.046875 88.921875 33.015625
L 88.921875 0
L 79.890625 0
L 79.890625 32.71875
Q 79.890625 40.578125 77.09375 44.375
Q 74.3125 48.1875 68.609375 48.1875
Q 61.625 48.1875 57.5625 43.546875
Q 53.515625 38.921875 53.515625 30.90625
L 53.515625 0
L 44.484375 0
L 44.484375 32.71875
Q 44.484375 40.625 41.703125 44.40625
Q 38.921875 48.1875 33.109375 48.1875
Q 26.21875 48.1875 22.15625 43.53125
Q 18.109375 38.875 18.109375 30.90625
L 18.109375 0
L 9.078125 0
L 9.078125 54.6875
L 18.109375 54.6875
L 18.109375 46.1875
Q 21.1875 51.21875 25.484375 53.609375
Q 29.78125 56 35.6875 56
Q 41.65625 56 45.828125 52.96875
Q 50 49.953125 52 44.1875
z
" id="DejaVuSans-6d"/>
<path d="M 8.5 21.578125
L 8.5 54.6875
L 17.484375 54.6875
L 17.484375 21.921875
Q 17.484375 14.15625 20.5 10.265625
Q 23.53125 6.390625 29.59375 6.390625
Q 36.859375 6.390625 41.078125 11.03125
Q 45.3125 15.671875 45.3125 23.6875
L 45.3125 54.6875
L 54.296875 54.6875
L 54.296875 0
L 45.3125 0
L 45.3125 8.40625
Q 42.046875 3.421875 37.71875 1
Q 33.40625 -1.421875 27.6875 -1.421875
Q 18.265625 -1.421875 13.375 4.4375
Q 8.5 10.296875 8.5 21.578125
z
M 31.109375 56
z
" id="DejaVuSans-75"/>
<path d="M 18.3125 70.21875
L 18.3125 54.6875
L 36.8125 54.6875
L 36.8125 47.703125
L 18.3125 47.703125
L 18.3125 18.015625
Q 18.3125 11.328125 20.140625 9.421875
Q 21.96875 7.515625 27.59375 7.515625
L 36.8125 7.515625
L 36.8125 0
L 27.59375 0
Q 17.1875 0 13.234375 3.875
Q 9.28125 7.765625 9.28125 18.015625
L 9.28125 47.703125
L 2.6875 47.703125
L 2.6875 54.6875
L 9.28125 54.6875
L 9.28125 70.21875
z
" id="DejaVuSans-74"/>
<path d="M 18.109375 8.203125
L 18.109375 -20.796875
L 9.078125 -20.796875
L 9.078125 54.6875
L 18.109375 54.6875
L 18.109375 46.390625
Q 20.953125 51.265625 25.265625 53.625
Q 29.59375 56 35.59375 56
Q 45.5625 56 51.78125 48.09375
Q 58.015625 40.1875 58.015625 27.296875
Q 58.015625 14.40625 51.78125 6.484375
Q 45.5625 -1.421875 35.59375 -1.421875
Q 29.59375 -1.421875 25.265625 0.953125
Q 20.953125 3.328125 18.109375 8.203125
z
M 48.6875 27.296875
Q 48.6875 37.203125 44.609375 42.84375
Q 40.53125 48.484375 33.40625 48.484375
Q 26.265625 48.484375 22.1875 42.84375
Q 18.109375 37.203125 18.109375 27.296875
Q 18.109375 17.390625 22.1875 11.75
Q 26.265625 6.109375 33.40625 6.109375
Q 40.53125 6.109375 44.609375 11.75
Q 48.6875 17.390625 48.6875 27.296875
z
" id="DejaVuSans-70"/>
<path d="M 48.78125 52.59375
L 48.78125 44.1875
Q 44.96875 46.296875 41.140625 47.34375
Q 37.3125 48.390625 33.40625 48.390625
Q 24.65625 48.390625 19.8125 42.84375
Q 14.984375 37.3125 14.984375 27.296875
Q 14.984375 17.28125 19.8125 11.734375
Q 24.65625 6.203125 33.40625 6.203125
Q 37.3125 6.203125 41.140625 7.25
Q 44.96875 8.296875 48.78125 10.40625
L 48.78125 2.09375
Q 45.015625 0.34375 40.984375 -0.53125
Q 36.96875 -1.421875 32.421875 -1.421875
Q 20.0625 -1.421875 12.78125 6.34375
Q 5.515625 14.109375 5.515625 27.296875
Q 5.515625 40.671875 12.859375 48.328125
Q 20.21875 56 33.015625 56
Q 37.15625 56 41.109375 55.140625
Q 45.0625 54.296875 48.78125 52.59375
z
" id="DejaVuSans-63"/>
<path d="M 34.28125 27.484375
Q 23.390625 27.484375 19.1875 25
Q 14.984375 22.515625 14.984375 16.5
Q 14.984375 11.71875 18.140625 8.90625
Q 21.296875 6.109375 26.703125 6.109375
Q 34.1875 6.109375 38.703125 11.40625
Q 43.21875 16.703125 43.21875 25.484375
L 43.21875 27.484375
z
M 52.203125 31.203125
L 52.203125 0
L 43.21875 0
L 43.21875 8.296875
Q 40.140625 3.328125 35.546875 0.953125
Q 30.953125 -1.421875 24.3125 -1.421875
Q 15.921875 -1.421875 10.953125 3.296875
Q 6 8.015625 6 15.921875
Q 6 25.140625 12.171875 29.828125
Q 18.359375 34.515625 30.609375 34.515625
L 43.21875 34.515625
L 43.21875 35.40625
Q 43.21875 41.609375 39.140625 45
Q 35.0625 48.390625 27.6875 48.390625
Q 23 48.390625 18.546875 47.265625
Q 14.109375 46.140625 10.015625 43.890625
L 10.015625 52.203125
Q 14.9375 54.109375 19.578125 55.046875
Q 24.21875 56 28.609375 56
Q 40.484375 56 46.34375 49.84375
Q 52.203125 43.703125 52.203125 31.203125
z
" id="DejaVuSans-61"/>
<path d="M 2.984375 54.6875
L 12.5 54.6875
L 29.59375 8.796875
L 46.6875 54.6875
L 56.203125 54.6875
L 35.6875 0
L 23.484375 0
z
" id="DejaVuSans-76"/>
<path d="M 30.609375 48.390625
Q 23.390625 48.390625 19.1875 42.75
Q 14.984375 37.109375 14.984375 27.296875
Q 14.984375 17.484375 19.15625 11.84375
Q 23.34375 6.203125 30.609375 6.203125
Q 37.796875 6.203125 41.984375 11.859375
Q 46.1875 17.53125 46.1875 27.296875
Q 46.1875 37.015625 41.984375 42.703125
Q 37.796875 48.390625 30.609375 48.390625
z
M 30.609375 56
Q 42.328125 56 49.015625 48.375
Q 55.71875 40.765625 55.71875 27.296875
Q 55.71875 13.875 49.015625 6.21875
Q 42.328125 -1.421875 30.609375 -1.421875
Q 18.84375 -1.421875 12.171875 6.21875
Q 5.515625 13.875 5.515625 27.296875
Q 5.515625 40.765625 12.171875 48.375
Q 18.84375 56 30.609375 56
z
" id="DejaVuSans-6f"/>
</defs>
<g transform="translate(15.558281 163.257969)rotate(-90)scale(0.11 -0.11)">
<use xlink:href="#DejaVuSans-6d"/>
<use x="97.412109" xlink:href="#DejaVuSans-75"/>
<use x="160.791016" xlink:href="#DejaVuSans-6c"/>
<use x="188.574219" xlink:href="#DejaVuSans-74"/>
<use x="227.783203" xlink:href="#DejaVuSans-69"/>
<use x="255.566406" xlink:href="#DejaVuSans-70"/>
<use x="319.042969" xlink:href="#DejaVuSans-6c"/>
<use x="346.826172" xlink:href="#DejaVuSans-69"/>
<use x="374.609375" xlink:href="#DejaVuSans-63"/>
<use x="429.589844" xlink:href="#DejaVuSans-61"/>
<use x="490.869141" xlink:href="#DejaVuSans-74"/>
<use x="530.078125" xlink:href="#DejaVuSans-69"/>
<use x="557.861328" xlink:href="#DejaVuSans-76"/>
<use x="617.041016" xlink:href="#DejaVuSans-65"/>
<use x="678.564453" xlink:href="#DejaVuSans-20"/>
<use x="710.351562" xlink:href="#DejaVuSans-63"/>
<use x="765.332031" xlink:href="#DejaVuSans-6f"/>
<use x="826.513672" xlink:href="#DejaVuSans-73"/>
<use x="878.613281" xlink:href="#DejaVuSans-74"/>
</g>
</g>
</g>
<g id="line2d_11">
<path clip-path="url(#pdf50752646)" d="M 40.099247 82.371615
L 58.197247 82.371615
L 59.328372 89.526124
L 60.459497 95.885689
L 62.721747 106.696948
L 64.983997 115.542524
L 67.246247 122.913837
L 69.508497 129.151102
L 71.770747 134.497329
L 74.032997 139.130726
L 76.295247 143.184948
L 78.557497 146.762203
L 80.819747 149.941985
L 83.081997 152.787053
L 85.344247 155.347615
L 87.606497 157.664313
L 90.999872 160.753244
L 94.393247 163.456059
L 97.786622 165.840896
L 101.179997 167.96075
L 104.573372 169.857463
L 109.097872 172.096205
L 112.491247 173.591615
L 113.622372 144.120538
L 117.015747 146.762203
L 120.409122 149.180629
L 124.933622 152.104237
L 129.458122 154.731783
L 133.982622 157.106072
L 138.507122 159.262036
L 144.162747 161.693354
L 149.818372 163.87402
L 155.473997 165.840896
L 162.260747 167.96075
L 169.047497 169.857463
L 176.965372 171.832551
L 184.883247 173.591615
L 186.014372 158.741847
L 193.932247 161.071222
L 201.850122 163.172547
L 210.899122 165.3355
L 219.948122 167.280797
L 230.128247 169.247805
L 241.439497 171.200079
L 253.881872 173.108969
L 257.275247 173.591615
L 258.406372 163.666122
L 270.848747 165.840896
L 283.291122 167.793134
L 296.864622 169.707062
L 311.569247 171.564503
L 328.536122 173.472373
L 329.667247 173.591615
L 330.798372 166.13784
L 346.634122 168.09373
L 364.732122 170.095378
L 383.961247 171.991264
L 400.928122 173.496296
L 400.928122 173.496296
" style="fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;"/>
</g>
<g id="line2d_12">
<path clip-path="url(#pdf50752646)" d="M 50.866678 -1
L 51.410497 9.395615
L 52.541622 27.086766
L 53.672747 41.829392
L 54.803872 54.303922
L 55.934997 64.996376
L 57.066122 74.26317
L 58.197247 82.371615
L 59.328372 89.526124
" style="fill:none;stroke:#1f77b4;stroke-dasharray:5.475,2.475;stroke-dashoffset:3.975;stroke-width:1.5;"/>
</g>
<g id="line2d_13">
<path clip-path="url(#pdf50752646)" d="M 58.197247 82.371615
L 400.928122 82.371615
L 400.928122 82.371615
" style="fill:none;stroke:#1f77b4;stroke-dasharray:5.475,2.475;stroke-dashoffset:5.475;stroke-width:1.5;"/>
</g>
<g id="patch_3">
<path d="M 40.099247 203.998281
L 40.099247 21.558281
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
</g>
<g id="patch_4">
<path d="M 40.099247 203.998281
L 402.059247 203.998281
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
</g>
<g id="text_13">
<!-- inline file -->
<defs>
<path d="M 54.890625 33.015625
L 54.890625 0
L 45.90625 0
L 45.90625 32.71875
Q 45.90625 40.484375 42.875 44.328125
Q 39.84375 48.1875 33.796875 48.1875
Q 26.515625 48.1875 22.3125 43.546875
Q 18.109375 38.921875 18.109375 30.90625
L 18.109375 0
L 9.078125 0
L 9.078125 54.6875
L 18.109375 54.6875
L 18.109375 46.1875
Q 21.34375 51.125 25.703125 53.5625
Q 30.078125 56 35.796875 56
Q 45.21875 56 50.046875 50.171875
Q 54.890625 44.34375 54.890625 33.015625
z
" id="DejaVuSans-6e"/>
</defs>
<g transform="translate(359.076497 77.810615)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-69"/>
<use x="27.783203" xlink:href="#DejaVuSans-6e"/>
<use x="91.162109" xlink:href="#DejaVuSans-6c"/>
<use x="118.945312" xlink:href="#DejaVuSans-69"/>
<use x="146.728516" xlink:href="#DejaVuSans-6e"/>
<use x="210.107422" xlink:href="#DejaVuSans-65"/>
<use x="271.630859" xlink:href="#DejaVuSans-20"/>
<use x="303.417969" xlink:href="#DejaVuSans-66"/>
<use x="338.623047" xlink:href="#DejaVuSans-69"/>
<use x="366.40625" xlink:href="#DejaVuSans-6c"/>
<use x="394.189453" xlink:href="#DejaVuSans-65"/>
</g>
</g>
<g id="text_14">
<!-- ctz skip-list -->
<defs>
<path d="M 9.078125 75.984375
L 18.109375 75.984375
L 18.109375 31.109375
L 44.921875 54.6875
L 56.390625 54.6875
L 27.390625 29.109375
L 57.625 0
L 45.90625 0
L 18.109375 26.703125
L 18.109375 0
L 9.078125 0
z
" id="DejaVuSans-6b"/>
<path d="M 4.890625 31.390625
L 31.203125 31.390625
L 31.203125 23.390625
L 4.890625 23.390625
z
" id="DejaVuSans-2d"/>
</defs>
<g transform="translate(56.928463 19.76365)rotate(-275)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-63"/>
<use x="54.980469" xlink:href="#DejaVuSans-74"/>
<use x="94.189453" xlink:href="#DejaVuSans-7a"/>
<use x="146.679688" xlink:href="#DejaVuSans-20"/>
<use x="178.466797" xlink:href="#DejaVuSans-73"/>
<use x="230.566406" xlink:href="#DejaVuSans-6b"/>
<use x="288.476562" xlink:href="#DejaVuSans-69"/>
<use x="316.259766" xlink:href="#DejaVuSans-70"/>
<use x="379.736328" xlink:href="#DejaVuSans-2d"/>
<use x="415.820312" xlink:href="#DejaVuSans-6c"/>
<use x="443.603516" xlink:href="#DejaVuSans-69"/>
<use x="471.386719" xlink:href="#DejaVuSans-73"/>
<use x="523.486328" xlink:href="#DejaVuSans-74"/>
</g>
</g>
<g id="text_15">
<!-- File storage cost -->
<defs>
<path d="M 9.8125 72.90625
L 51.703125 72.90625
L 51.703125 64.59375
L 19.671875 64.59375
L 19.671875 43.109375
L 48.578125 43.109375
L 48.578125 34.8125
L 19.671875 34.8125
L 19.671875 0
L 9.8125 0
z
" id="DejaVuSans-46"/>
<path d="M 41.109375 46.296875
Q 39.59375 47.171875 37.8125 47.578125
Q 36.03125 48 33.890625 48
Q 26.265625 48 22.1875 43.046875
Q 18.109375 38.09375 18.109375 28.8125
L 18.109375 0
L 9.078125 0
L 9.078125 54.6875
L 18.109375 54.6875
L 18.109375 46.1875
Q 20.953125 51.171875 25.484375 53.578125
Q 30.03125 56 36.53125 56
Q 37.453125 56 38.578125 55.875
Q 39.703125 55.765625 41.0625 55.515625
z
" id="DejaVuSans-72"/>
<path d="M 45.40625 27.984375
Q 45.40625 37.75 41.375 43.109375
Q 37.359375 48.484375 30.078125 48.484375
Q 22.859375 48.484375 18.828125 43.109375
Q 14.796875 37.75 14.796875 27.984375
Q 14.796875 18.265625 18.828125 12.890625
Q 22.859375 7.515625 30.078125 7.515625
Q 37.359375 7.515625 41.375 12.890625
Q 45.40625 18.265625 45.40625 27.984375
z
M 54.390625 6.78125
Q 54.390625 -7.171875 48.1875 -13.984375
Q 42 -20.796875 29.203125 -20.796875
Q 24.46875 -20.796875 20.265625 -20.09375
Q 16.0625 -19.390625 12.109375 -17.921875
L 12.109375 -9.1875
Q 16.0625 -11.328125 19.921875 -12.34375
Q 23.78125 -13.375 27.78125 -13.375
Q 36.625 -13.375 41.015625 -8.765625
Q 45.40625 -4.15625 45.40625 5.171875
L 45.40625 9.625
Q 42.625 4.78125 38.28125 2.390625
Q 33.9375 0 27.875 0
Q 17.828125 0 11.671875 7.65625
Q 5.515625 15.328125 5.515625 27.984375
Q 5.515625 40.671875 11.671875 48.328125
Q 17.828125 56 27.875 56
Q 33.9375 56 38.28125 53.609375
Q 42.625 51.21875 45.40625 46.390625
L 45.40625 54.6875
L 54.390625 54.6875
z
" id="DejaVuSans-67"/>
</defs>
<g transform="translate(175.681044 15.558281)scale(0.11 -0.11)">
<use xlink:href="#DejaVuSans-46"/>
<use x="57.410156" xlink:href="#DejaVuSans-69"/>
<use x="85.193359" xlink:href="#DejaVuSans-6c"/>
<use x="112.976562" xlink:href="#DejaVuSans-65"/>
<use x="174.5" xlink:href="#DejaVuSans-20"/>
<use x="206.287109" xlink:href="#DejaVuSans-73"/>
<use x="258.386719" xlink:href="#DejaVuSans-74"/>
<use x="297.595703" xlink:href="#DejaVuSans-6f"/>
<use x="358.777344" xlink:href="#DejaVuSans-72"/>
<use x="399.890625" xlink:href="#DejaVuSans-61"/>
<use x="461.169922" xlink:href="#DejaVuSans-67"/>
<use x="524.646484" xlink:href="#DejaVuSans-65"/>
<use x="586.169922" xlink:href="#DejaVuSans-20"/>
<use x="617.957031" xlink:href="#DejaVuSans-63"/>
<use x="672.9375" xlink:href="#DejaVuSans-6f"/>
<use x="734.119141" xlink:href="#DejaVuSans-73"/>
<use x="786.21875" xlink:href="#DejaVuSans-74"/>
</g>
</g>
</g>
</g>
<defs>
<clipPath id="pdf50752646">
<rect height="182.44" width="361.96" x="40.099247" y="21.558281"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 30 KiB

40
metadata-cost.py Executable file
View File

@@ -0,0 +1,40 @@
#!/usr/bin/env python
import matplotlib
matplotlib.use('SVG')
import matplotlib.pyplot as plt
import numpy as np
matplotlib.rc('font', family='sans-serif', size=11)
matplotlib.rc('axes', titlesize='medium', labelsize='medium')
matplotlib.rc('xtick', labelsize='small')
matplotlib.rc('ytick', labelsize='small')
fig, ax = plt.subplots(figsize=(6, 3.5))
ax.set_title('Metadata pair update cost')
# multiplicative cost of metadata
def cost(r, n, size):
cost = n + n*(r*(size/n) / ((1-r)*(size/n) + 1))
return cost / n
t = np.arange(0.0, 1.0, 0.01)
ax.plot(t, cost(t, 100, 4096))
ax.set_xlabel('% full')
ax.set_xlim(0, 1)
ax.set_ylabel('multiplicative cost')
ax.set_ylim(0, 12)
xticks = np.arange(0.0, 1+0.1, 0.2)
ax.set_xticks(xticks)
ax.set_xticklabels(['%d%%' % (100*t) for t in xticks])
yticks = np.arange(0, 12+1, 2)
ax.set_yticks(yticks)
ax.set_yticklabels(['%dx' % t for t in yticks])
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
fig.tight_layout()
plt.savefig('metadata-cost.svg', bbox_inches="tight")

968
metadata-cost.svg Normal file
View File

@@ -0,0 +1,968 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Created with matplotlib (http://matplotlib.org/) -->
<svg height="241.712285pt" version="1.1" viewBox="0 0 422.382285 241.712285" width="422.382285pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">
*{stroke-linecap:butt;stroke-linejoin:round;}
</style>
</defs>
<g id="figure_1">
<g id="patch_1">
<path d="M 0 241.712285
L 422.382285 241.712285
L 422.382285 0
L 0 0
z
" style="fill:#ffffff;"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 45.929206 203.998281
L 402.084206 203.998281
L 402.084206 21.558281
L 45.929206 21.558281
z
" style="fill:#ffffff;"/>
</g>
<g id="matplotlib.axis_1">
<g id="xtick_1">
<g id="line2d_1">
<defs>
<path d="M 0 0
L 0 3.5
" id="md69e27c4ae" style="stroke:#000000;stroke-width:0.8;"/>
</defs>
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="45.929206" xlink:href="#md69e27c4ae" y="203.998281"/>
</g>
</g>
<g id="text_1">
<!-- 0% -->
<defs>
<path d="M 31.78125 66.40625
Q 24.171875 66.40625 20.328125 58.90625
Q 16.5 51.421875 16.5 36.375
Q 16.5 21.390625 20.328125 13.890625
Q 24.171875 6.390625 31.78125 6.390625
Q 39.453125 6.390625 43.28125 13.890625
Q 47.125 21.390625 47.125 36.375
Q 47.125 51.421875 43.28125 58.90625
Q 39.453125 66.40625 31.78125 66.40625
z
M 31.78125 74.21875
Q 44.046875 74.21875 50.515625 64.515625
Q 56.984375 54.828125 56.984375 36.375
Q 56.984375 17.96875 50.515625 8.265625
Q 44.046875 -1.421875 31.78125 -1.421875
Q 19.53125 -1.421875 13.0625 8.265625
Q 6.59375 17.96875 6.59375 36.375
Q 6.59375 54.828125 13.0625 64.515625
Q 19.53125 74.21875 31.78125 74.21875
z
" id="DejaVuSans-30"/>
<path d="M 72.703125 32.078125
Q 68.453125 32.078125 66.03125 28.46875
Q 63.625 24.859375 63.625 18.40625
Q 63.625 12.0625 66.03125 8.421875
Q 68.453125 4.78125 72.703125 4.78125
Q 76.859375 4.78125 79.265625 8.421875
Q 81.6875 12.0625 81.6875 18.40625
Q 81.6875 24.8125 79.265625 28.4375
Q 76.859375 32.078125 72.703125 32.078125
z
M 72.703125 38.28125
Q 80.421875 38.28125 84.953125 32.90625
Q 89.5 27.546875 89.5 18.40625
Q 89.5 9.28125 84.9375 3.921875
Q 80.375 -1.421875 72.703125 -1.421875
Q 64.890625 -1.421875 60.34375 3.921875
Q 55.8125 9.28125 55.8125 18.40625
Q 55.8125 27.59375 60.375 32.9375
Q 64.9375 38.28125 72.703125 38.28125
z
M 22.3125 68.015625
Q 18.109375 68.015625 15.6875 64.375
Q 13.28125 60.75 13.28125 54.390625
Q 13.28125 47.953125 15.671875 44.328125
Q 18.0625 40.71875 22.3125 40.71875
Q 26.5625 40.71875 28.96875 44.328125
Q 31.390625 47.953125 31.390625 54.390625
Q 31.390625 60.6875 28.953125 64.34375
Q 26.515625 68.015625 22.3125 68.015625
z
M 66.40625 74.21875
L 74.21875 74.21875
L 28.609375 -1.421875
L 20.796875 -1.421875
z
M 22.3125 74.21875
Q 30.03125 74.21875 34.609375 68.875
Q 39.203125 63.53125 39.203125 54.390625
Q 39.203125 45.171875 34.640625 39.84375
Q 30.078125 34.515625 22.3125 34.515625
Q 14.546875 34.515625 10.03125 39.859375
Q 5.515625 45.21875 5.515625 54.390625
Q 5.515625 63.484375 10.046875 68.84375
Q 14.59375 74.21875 22.3125 74.21875
z
" id="DejaVuSans-25"/>
</defs>
<g transform="translate(38.661085 217.96073)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-30"/>
<use x="63.623047" xlink:href="#DejaVuSans-25"/>
</g>
</g>
</g>
<g id="xtick_2">
<g id="line2d_2">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="117.160206" xlink:href="#md69e27c4ae" y="203.998281"/>
</g>
</g>
<g id="text_2">
<!-- 20% -->
<defs>
<path d="M 19.1875 8.296875
L 53.609375 8.296875
L 53.609375 0
L 7.328125 0
L 7.328125 8.296875
Q 12.9375 14.109375 22.625 23.890625
Q 32.328125 33.6875 34.8125 36.53125
Q 39.546875 41.84375 41.421875 45.53125
Q 43.3125 49.21875 43.3125 52.78125
Q 43.3125 58.59375 39.234375 62.25
Q 35.15625 65.921875 28.609375 65.921875
Q 23.96875 65.921875 18.8125 64.3125
Q 13.671875 62.703125 7.8125 59.421875
L 7.8125 69.390625
Q 13.765625 71.78125 18.9375 73
Q 24.125 74.21875 28.421875 74.21875
Q 39.75 74.21875 46.484375 68.546875
Q 53.21875 62.890625 53.21875 53.421875
Q 53.21875 48.921875 51.53125 44.890625
Q 49.859375 40.875 45.40625 35.40625
Q 44.1875 33.984375 37.640625 27.21875
Q 31.109375 20.453125 19.1875 8.296875
z
" id="DejaVuSans-32"/>
</defs>
<g transform="translate(106.977106 217.96073)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-32"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
<use x="127.246094" xlink:href="#DejaVuSans-25"/>
</g>
</g>
</g>
<g id="xtick_3">
<g id="line2d_3">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="188.391206" xlink:href="#md69e27c4ae" y="203.998281"/>
</g>
</g>
<g id="text_3">
<!-- 40% -->
<defs>
<path d="M 37.796875 64.3125
L 12.890625 25.390625
L 37.796875 25.390625
z
M 35.203125 72.90625
L 47.609375 72.90625
L 47.609375 25.390625
L 58.015625 25.390625
L 58.015625 17.1875
L 47.609375 17.1875
L 47.609375 0
L 37.796875 0
L 37.796875 17.1875
L 4.890625 17.1875
L 4.890625 26.703125
z
" id="DejaVuSans-34"/>
</defs>
<g transform="translate(178.208106 217.96073)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-34"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
<use x="127.246094" xlink:href="#DejaVuSans-25"/>
</g>
</g>
</g>
<g id="xtick_4">
<g id="line2d_4">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="259.622206" xlink:href="#md69e27c4ae" y="203.998281"/>
</g>
</g>
<g id="text_4">
<!-- 60% -->
<defs>
<path d="M 33.015625 40.375
Q 26.375 40.375 22.484375 35.828125
Q 18.609375 31.296875 18.609375 23.390625
Q 18.609375 15.53125 22.484375 10.953125
Q 26.375 6.390625 33.015625 6.390625
Q 39.65625 6.390625 43.53125 10.953125
Q 47.40625 15.53125 47.40625 23.390625
Q 47.40625 31.296875 43.53125 35.828125
Q 39.65625 40.375 33.015625 40.375
z
M 52.59375 71.296875
L 52.59375 62.3125
Q 48.875 64.0625 45.09375 64.984375
Q 41.3125 65.921875 37.59375 65.921875
Q 27.828125 65.921875 22.671875 59.328125
Q 17.53125 52.734375 16.796875 39.40625
Q 19.671875 43.65625 24.015625 45.921875
Q 28.375 48.1875 33.59375 48.1875
Q 44.578125 48.1875 50.953125 41.515625
Q 57.328125 34.859375 57.328125 23.390625
Q 57.328125 12.15625 50.6875 5.359375
Q 44.046875 -1.421875 33.015625 -1.421875
Q 20.359375 -1.421875 13.671875 8.265625
Q 6.984375 17.96875 6.984375 36.375
Q 6.984375 53.65625 15.1875 63.9375
Q 23.390625 74.21875 37.203125 74.21875
Q 40.921875 74.21875 44.703125 73.484375
Q 48.484375 72.75 52.59375 71.296875
z
" id="DejaVuSans-36"/>
</defs>
<g transform="translate(249.439106 217.96073)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-36"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
<use x="127.246094" xlink:href="#DejaVuSans-25"/>
</g>
</g>
</g>
<g id="xtick_5">
<g id="line2d_5">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="330.853206" xlink:href="#md69e27c4ae" y="203.998281"/>
</g>
</g>
<g id="text_5">
<!-- 80% -->
<defs>
<path d="M 31.78125 34.625
Q 24.75 34.625 20.71875 30.859375
Q 16.703125 27.09375 16.703125 20.515625
Q 16.703125 13.921875 20.71875 10.15625
Q 24.75 6.390625 31.78125 6.390625
Q 38.8125 6.390625 42.859375 10.171875
Q 46.921875 13.96875 46.921875 20.515625
Q 46.921875 27.09375 42.890625 30.859375
Q 38.875 34.625 31.78125 34.625
z
M 21.921875 38.8125
Q 15.578125 40.375 12.03125 44.71875
Q 8.5 49.078125 8.5 55.328125
Q 8.5 64.0625 14.71875 69.140625
Q 20.953125 74.21875 31.78125 74.21875
Q 42.671875 74.21875 48.875 69.140625
Q 55.078125 64.0625 55.078125 55.328125
Q 55.078125 49.078125 51.53125 44.71875
Q 48 40.375 41.703125 38.8125
Q 48.828125 37.15625 52.796875 32.3125
Q 56.78125 27.484375 56.78125 20.515625
Q 56.78125 9.90625 50.3125 4.234375
Q 43.84375 -1.421875 31.78125 -1.421875
Q 19.734375 -1.421875 13.25 4.234375
Q 6.78125 9.90625 6.78125 20.515625
Q 6.78125 27.484375 10.78125 32.3125
Q 14.796875 37.15625 21.921875 38.8125
z
M 18.3125 54.390625
Q 18.3125 48.734375 21.84375 45.5625
Q 25.390625 42.390625 31.78125 42.390625
Q 38.140625 42.390625 41.71875 45.5625
Q 45.3125 48.734375 45.3125 54.390625
Q 45.3125 60.0625 41.71875 63.234375
Q 38.140625 66.40625 31.78125 66.40625
Q 25.390625 66.40625 21.84375 63.234375
Q 18.3125 60.0625 18.3125 54.390625
z
" id="DejaVuSans-38"/>
</defs>
<g transform="translate(320.670106 217.96073)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-38"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
<use x="127.246094" xlink:href="#DejaVuSans-25"/>
</g>
</g>
</g>
<g id="xtick_6">
<g id="line2d_6">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="402.084206" xlink:href="#md69e27c4ae" y="203.998281"/>
</g>
</g>
<g id="text_6">
<!-- 100% -->
<defs>
<path d="M 12.40625 8.296875
L 28.515625 8.296875
L 28.515625 63.921875
L 10.984375 60.40625
L 10.984375 69.390625
L 28.421875 72.90625
L 38.28125 72.90625
L 38.28125 8.296875
L 54.390625 8.296875
L 54.390625 0
L 12.40625 0
z
" id="DejaVuSans-31"/>
</defs>
<g transform="translate(388.986127 217.96073)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-31"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
<use x="127.246094" xlink:href="#DejaVuSans-30"/>
<use x="190.869141" xlink:href="#DejaVuSans-25"/>
</g>
</g>
</g>
<g id="text_7">
<!-- % full -->
<defs>
<path id="DejaVuSans-20"/>
<path d="M 37.109375 75.984375
L 37.109375 68.5
L 28.515625 68.5
Q 23.6875 68.5 21.796875 66.546875
Q 19.921875 64.59375 19.921875 59.515625
L 19.921875 54.6875
L 34.71875 54.6875
L 34.71875 47.703125
L 19.921875 47.703125
L 19.921875 0
L 10.890625 0
L 10.890625 47.703125
L 2.296875 47.703125
L 2.296875 54.6875
L 10.890625 54.6875
L 10.890625 58.5
Q 10.890625 67.625 15.140625 71.796875
Q 19.390625 75.984375 28.609375 75.984375
z
" id="DejaVuSans-66"/>
<path d="M 8.5 21.578125
L 8.5 54.6875
L 17.484375 54.6875
L 17.484375 21.921875
Q 17.484375 14.15625 20.5 10.265625
Q 23.53125 6.390625 29.59375 6.390625
Q 36.859375 6.390625 41.078125 11.03125
Q 45.3125 15.671875 45.3125 23.6875
L 45.3125 54.6875
L 54.296875 54.6875
L 54.296875 0
L 45.3125 0
L 45.3125 8.40625
Q 42.046875 3.421875 37.71875 1
Q 33.40625 -1.421875 27.6875 -1.421875
Q 18.265625 -1.421875 13.375 4.4375
Q 8.5 10.296875 8.5 21.578125
z
M 31.109375 56
z
" id="DejaVuSans-75"/>
<path d="M 9.421875 75.984375
L 18.40625 75.984375
L 18.40625 0
L 9.421875 0
z
" id="DejaVuSans-6c"/>
</defs>
<g transform="translate(208.555143 232.224628)scale(0.11 -0.11)">
<use xlink:href="#DejaVuSans-25"/>
<use x="95.019531" xlink:href="#DejaVuSans-20"/>
<use x="126.806641" xlink:href="#DejaVuSans-66"/>
<use x="162.011719" xlink:href="#DejaVuSans-75"/>
<use x="225.390625" xlink:href="#DejaVuSans-6c"/>
<use x="253.173828" xlink:href="#DejaVuSans-6c"/>
</g>
</g>
</g>
<g id="matplotlib.axis_2">
<g id="ytick_1">
<g id="line2d_7">
<defs>
<path d="M 0 0
L -3.5 0
" id="m3661cbe52c" style="stroke:#000000;stroke-width:0.8;"/>
</defs>
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="45.929206" xlink:href="#m3661cbe52c" y="203.998281"/>
</g>
</g>
<g id="text_8">
<!-- 0x -->
<defs>
<path d="M 54.890625 54.6875
L 35.109375 28.078125
L 55.90625 0
L 45.3125 0
L 29.390625 21.484375
L 13.484375 0
L 2.875 0
L 24.125 28.609375
L 4.6875 54.6875
L 15.28125 54.6875
L 29.78125 35.203125
L 44.28125 54.6875
z
" id="DejaVuSans-78"/>
</defs>
<g transform="translate(27.675896 207.479505)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-30"/>
<use x="63.623047" xlink:href="#DejaVuSans-78"/>
</g>
</g>
</g>
<g id="ytick_2">
<g id="line2d_8">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="45.929206" xlink:href="#m3661cbe52c" y="173.591615"/>
</g>
</g>
<g id="text_9">
<!-- 2x -->
<g transform="translate(27.675896 177.072839)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-32"/>
<use x="63.623047" xlink:href="#DejaVuSans-78"/>
</g>
</g>
</g>
<g id="ytick_3">
<g id="line2d_9">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="45.929206" xlink:href="#m3661cbe52c" y="143.184948"/>
</g>
</g>
<g id="text_10">
<!-- 4x -->
<g transform="translate(27.675896 146.666172)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-34"/>
<use x="63.623047" xlink:href="#DejaVuSans-78"/>
</g>
</g>
</g>
<g id="ytick_4">
<g id="line2d_10">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="45.929206" xlink:href="#m3661cbe52c" y="112.778281"/>
</g>
</g>
<g id="text_11">
<!-- 6x -->
<g transform="translate(27.675896 116.259505)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-36"/>
<use x="63.623047" xlink:href="#DejaVuSans-78"/>
</g>
</g>
</g>
<g id="ytick_5">
<g id="line2d_11">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="45.929206" xlink:href="#m3661cbe52c" y="82.371615"/>
</g>
</g>
<g id="text_12">
<!-- 8x -->
<g transform="translate(27.675896 85.852839)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-38"/>
<use x="63.623047" xlink:href="#DejaVuSans-78"/>
</g>
</g>
</g>
<g id="ytick_6">
<g id="line2d_12">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="45.929206" xlink:href="#m3661cbe52c" y="51.964948"/>
</g>
</g>
<g id="text_13">
<!-- 10x -->
<g transform="translate(21.845938 55.446172)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-31"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
<use x="127.246094" xlink:href="#DejaVuSans-78"/>
</g>
</g>
</g>
<g id="ytick_7">
<g id="line2d_13">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="45.929206" xlink:href="#m3661cbe52c" y="21.558281"/>
</g>
</g>
<g id="text_14">
<!-- 12x -->
<g transform="translate(21.845938 25.039505)scale(0.09163 -0.09163)">
<use xlink:href="#DejaVuSans-31"/>
<use x="63.623047" xlink:href="#DejaVuSans-32"/>
<use x="127.246094" xlink:href="#DejaVuSans-78"/>
</g>
</g>
</g>
<g id="text_15">
<!-- multiplicative cost -->
<defs>
<path d="M 52 44.1875
Q 55.375 50.25 60.0625 53.125
Q 64.75 56 71.09375 56
Q 79.640625 56 84.28125 50.015625
Q 88.921875 44.046875 88.921875 33.015625
L 88.921875 0
L 79.890625 0
L 79.890625 32.71875
Q 79.890625 40.578125 77.09375 44.375
Q 74.3125 48.1875 68.609375 48.1875
Q 61.625 48.1875 57.5625 43.546875
Q 53.515625 38.921875 53.515625 30.90625
L 53.515625 0
L 44.484375 0
L 44.484375 32.71875
Q 44.484375 40.625 41.703125 44.40625
Q 38.921875 48.1875 33.109375 48.1875
Q 26.21875 48.1875 22.15625 43.53125
Q 18.109375 38.875 18.109375 30.90625
L 18.109375 0
L 9.078125 0
L 9.078125 54.6875
L 18.109375 54.6875
L 18.109375 46.1875
Q 21.1875 51.21875 25.484375 53.609375
Q 29.78125 56 35.6875 56
Q 41.65625 56 45.828125 52.96875
Q 50 49.953125 52 44.1875
z
" id="DejaVuSans-6d"/>
<path d="M 18.3125 70.21875
L 18.3125 54.6875
L 36.8125 54.6875
L 36.8125 47.703125
L 18.3125 47.703125
L 18.3125 18.015625
Q 18.3125 11.328125 20.140625 9.421875
Q 21.96875 7.515625 27.59375 7.515625
L 36.8125 7.515625
L 36.8125 0
L 27.59375 0
Q 17.1875 0 13.234375 3.875
Q 9.28125 7.765625 9.28125 18.015625
L 9.28125 47.703125
L 2.6875 47.703125
L 2.6875 54.6875
L 9.28125 54.6875
L 9.28125 70.21875
z
" id="DejaVuSans-74"/>
<path d="M 9.421875 54.6875
L 18.40625 54.6875
L 18.40625 0
L 9.421875 0
z
M 9.421875 75.984375
L 18.40625 75.984375
L 18.40625 64.59375
L 9.421875 64.59375
z
" id="DejaVuSans-69"/>
<path d="M 18.109375 8.203125
L 18.109375 -20.796875
L 9.078125 -20.796875
L 9.078125 54.6875
L 18.109375 54.6875
L 18.109375 46.390625
Q 20.953125 51.265625 25.265625 53.625
Q 29.59375 56 35.59375 56
Q 45.5625 56 51.78125 48.09375
Q 58.015625 40.1875 58.015625 27.296875
Q 58.015625 14.40625 51.78125 6.484375
Q 45.5625 -1.421875 35.59375 -1.421875
Q 29.59375 -1.421875 25.265625 0.953125
Q 20.953125 3.328125 18.109375 8.203125
z
M 48.6875 27.296875
Q 48.6875 37.203125 44.609375 42.84375
Q 40.53125 48.484375 33.40625 48.484375
Q 26.265625 48.484375 22.1875 42.84375
Q 18.109375 37.203125 18.109375 27.296875
Q 18.109375 17.390625 22.1875 11.75
Q 26.265625 6.109375 33.40625 6.109375
Q 40.53125 6.109375 44.609375 11.75
Q 48.6875 17.390625 48.6875 27.296875
z
" id="DejaVuSans-70"/>
<path d="M 48.78125 52.59375
L 48.78125 44.1875
Q 44.96875 46.296875 41.140625 47.34375
Q 37.3125 48.390625 33.40625 48.390625
Q 24.65625 48.390625 19.8125 42.84375
Q 14.984375 37.3125 14.984375 27.296875
Q 14.984375 17.28125 19.8125 11.734375
Q 24.65625 6.203125 33.40625 6.203125
Q 37.3125 6.203125 41.140625 7.25
Q 44.96875 8.296875 48.78125 10.40625
L 48.78125 2.09375
Q 45.015625 0.34375 40.984375 -0.53125
Q 36.96875 -1.421875 32.421875 -1.421875
Q 20.0625 -1.421875 12.78125 6.34375
Q 5.515625 14.109375 5.515625 27.296875
Q 5.515625 40.671875 12.859375 48.328125
Q 20.21875 56 33.015625 56
Q 37.15625 56 41.109375 55.140625
Q 45.0625 54.296875 48.78125 52.59375
z
" id="DejaVuSans-63"/>
<path d="M 34.28125 27.484375
Q 23.390625 27.484375 19.1875 25
Q 14.984375 22.515625 14.984375 16.5
Q 14.984375 11.71875 18.140625 8.90625
Q 21.296875 6.109375 26.703125 6.109375
Q 34.1875 6.109375 38.703125 11.40625
Q 43.21875 16.703125 43.21875 25.484375
L 43.21875 27.484375
z
M 52.203125 31.203125
L 52.203125 0
L 43.21875 0
L 43.21875 8.296875
Q 40.140625 3.328125 35.546875 0.953125
Q 30.953125 -1.421875 24.3125 -1.421875
Q 15.921875 -1.421875 10.953125 3.296875
Q 6 8.015625 6 15.921875
Q 6 25.140625 12.171875 29.828125
Q 18.359375 34.515625 30.609375 34.515625
L 43.21875 34.515625
L 43.21875 35.40625
Q 43.21875 41.609375 39.140625 45
Q 35.0625 48.390625 27.6875 48.390625
Q 23 48.390625 18.546875 47.265625
Q 14.109375 46.140625 10.015625 43.890625
L 10.015625 52.203125
Q 14.9375 54.109375 19.578125 55.046875
Q 24.21875 56 28.609375 56
Q 40.484375 56 46.34375 49.84375
Q 52.203125 43.703125 52.203125 31.203125
z
" id="DejaVuSans-61"/>
<path d="M 2.984375 54.6875
L 12.5 54.6875
L 29.59375 8.796875
L 46.6875 54.6875
L 56.203125 54.6875
L 35.6875 0
L 23.484375 0
z
" id="DejaVuSans-76"/>
<path d="M 56.203125 29.59375
L 56.203125 25.203125
L 14.890625 25.203125
Q 15.484375 15.921875 20.484375 11.0625
Q 25.484375 6.203125 34.421875 6.203125
Q 39.59375 6.203125 44.453125 7.46875
Q 49.3125 8.734375 54.109375 11.28125
L 54.109375 2.78125
Q 49.265625 0.734375 44.1875 -0.34375
Q 39.109375 -1.421875 33.890625 -1.421875
Q 20.796875 -1.421875 13.15625 6.1875
Q 5.515625 13.8125 5.515625 26.8125
Q 5.515625 40.234375 12.765625 48.109375
Q 20.015625 56 32.328125 56
Q 43.359375 56 49.78125 48.890625
Q 56.203125 41.796875 56.203125 29.59375
z
M 47.21875 32.234375
Q 47.125 39.59375 43.09375 43.984375
Q 39.0625 48.390625 32.421875 48.390625
Q 24.90625 48.390625 20.390625 44.140625
Q 15.875 39.890625 15.1875 32.171875
z
" id="DejaVuSans-65"/>
<path d="M 30.609375 48.390625
Q 23.390625 48.390625 19.1875 42.75
Q 14.984375 37.109375 14.984375 27.296875
Q 14.984375 17.484375 19.15625 11.84375
Q 23.34375 6.203125 30.609375 6.203125
Q 37.796875 6.203125 41.984375 11.859375
Q 46.1875 17.53125 46.1875 27.296875
Q 46.1875 37.015625 41.984375 42.703125
Q 37.796875 48.390625 30.609375 48.390625
z
M 30.609375 56
Q 42.328125 56 49.015625 48.375
Q 55.71875 40.765625 55.71875 27.296875
Q 55.71875 13.875 49.015625 6.21875
Q 42.328125 -1.421875 30.609375 -1.421875
Q 18.84375 -1.421875 12.171875 6.21875
Q 5.515625 13.875 5.515625 27.296875
Q 5.515625 40.765625 12.171875 48.375
Q 18.84375 56 30.609375 56
z
" id="DejaVuSans-6f"/>
<path d="M 44.28125 53.078125
L 44.28125 44.578125
Q 40.484375 46.53125 36.375 47.5
Q 32.28125 48.484375 27.875 48.484375
Q 21.1875 48.484375 17.84375 46.4375
Q 14.5 44.390625 14.5 40.28125
Q 14.5 37.15625 16.890625 35.375
Q 19.28125 33.59375 26.515625 31.984375
L 29.59375 31.296875
Q 39.15625 29.25 43.1875 25.515625
Q 47.21875 21.78125 47.21875 15.09375
Q 47.21875 7.46875 41.1875 3.015625
Q 35.15625 -1.421875 24.609375 -1.421875
Q 20.21875 -1.421875 15.453125 -0.5625
Q 10.6875 0.296875 5.421875 2
L 5.421875 11.28125
Q 10.40625 8.6875 15.234375 7.390625
Q 20.0625 6.109375 24.8125 6.109375
Q 31.15625 6.109375 34.5625 8.28125
Q 37.984375 10.453125 37.984375 14.40625
Q 37.984375 18.0625 35.515625 20.015625
Q 33.0625 21.96875 24.703125 23.78125
L 21.578125 24.515625
Q 13.234375 26.265625 9.515625 29.90625
Q 5.8125 33.546875 5.8125 39.890625
Q 5.8125 47.609375 11.28125 51.796875
Q 16.75 56 26.8125 56
Q 31.78125 56 36.171875 55.265625
Q 40.578125 54.546875 44.28125 53.078125
z
" id="DejaVuSans-73"/>
</defs>
<g transform="translate(15.558281 163.257969)rotate(-90)scale(0.11 -0.11)">
<use xlink:href="#DejaVuSans-6d"/>
<use x="97.412109" xlink:href="#DejaVuSans-75"/>
<use x="160.791016" xlink:href="#DejaVuSans-6c"/>
<use x="188.574219" xlink:href="#DejaVuSans-74"/>
<use x="227.783203" xlink:href="#DejaVuSans-69"/>
<use x="255.566406" xlink:href="#DejaVuSans-70"/>
<use x="319.042969" xlink:href="#DejaVuSans-6c"/>
<use x="346.826172" xlink:href="#DejaVuSans-69"/>
<use x="374.609375" xlink:href="#DejaVuSans-63"/>
<use x="429.589844" xlink:href="#DejaVuSans-61"/>
<use x="490.869141" xlink:href="#DejaVuSans-74"/>
<use x="530.078125" xlink:href="#DejaVuSans-69"/>
<use x="557.861328" xlink:href="#DejaVuSans-76"/>
<use x="617.041016" xlink:href="#DejaVuSans-65"/>
<use x="678.564453" xlink:href="#DejaVuSans-20"/>
<use x="710.351562" xlink:href="#DejaVuSans-63"/>
<use x="765.332031" xlink:href="#DejaVuSans-6f"/>
<use x="826.513672" xlink:href="#DejaVuSans-73"/>
<use x="878.613281" xlink:href="#DejaVuSans-74"/>
</g>
</g>
</g>
<g id="line2d_14">
<path clip-path="url(#p0570563b73)" d="M 45.929206 188.794948
L 49.490756 188.645161
L 53.052306 188.492394
L 56.613856 188.336556
L 60.175406 188.177554
L 63.736956 188.01529
L 67.298506 187.849663
L 70.860056 187.680567
L 74.421606 187.507893
L 77.983156 187.331525
L 81.544706 187.151344
L 85.106256 186.967225
L 88.667806 186.779036
L 92.229356 186.586643
L 95.790906 186.389901
L 99.352456 186.188662
L 102.914006 185.982771
L 106.475556 185.772063
L 110.037106 185.556368
L 113.598656 185.335507
L 117.160206 185.109291
L 120.721756 184.877525
L 124.283306 184.64
L 127.844856 184.396499
L 131.406406 184.146795
L 134.967956 183.890647
L 138.529506 183.627802
L 142.091056 183.357994
L 145.652606 183.080943
L 149.214156 182.796354
L 152.775706 182.503913
L 156.337256 182.203293
L 159.898806 181.894144
L 163.460356 181.576099
L 167.021906 181.248768
L 170.583456 180.911738
L 174.145006 180.564572
L 177.706556 180.206805
L 181.268106 179.837945
L 184.829656 179.457468
L 188.391206 179.064815
L 191.952756 178.659392
L 195.514306 178.240568
L 199.075856 177.807665
L 202.637406 177.359962
L 206.198956 176.896687
L 209.760506 176.417013
L 213.322056 175.920053
L 216.883606 175.404856
L 220.445156 174.8704
L 224.006706 174.315583
L 227.568256 173.73922
L 231.129806 173.14003
L 234.691356 172.516631
L 238.252906 171.867525
L 241.814456 171.191088
L 245.376006 170.485557
L 248.937556 169.749014
L 252.499106 168.979367
L 256.060656 168.174335
L 259.622206 167.331419
L 263.183756 166.44788
L 266.745306 165.520709
L 270.306856 164.546593
L 273.868406 163.521874
L 277.429956 162.442503
L 280.991506 161.303989
L 284.553056 160.101333
L 288.114606 158.828958
L 291.676156 157.48062
L 295.237706 156.049307
L 298.799256 154.527117
L 302.360806 152.905112
L 305.922356 151.17314
L 309.483906 149.319626
L 313.045456 147.331312
L 316.607006 145.192935
L 320.168556 142.886843
L 323.730106 140.392499
L 327.291656 137.68587
L 330.853206 134.738652
L 334.414756 131.517273
L 337.976306 127.981615
L 341.537856 124.083324
L 345.099406 119.763597
L 348.660956 114.950186
L 352.222506 109.553332
L 355.784056 103.460109
L 359.345606 96.526442
L 362.907156 88.565565
L 366.468706 79.330948
L 370.030256 68.49031
L 373.591806 55.584789
L 377.153356 39.962316
L 380.714906 20.663968
L 383.871324 -1
" style="fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;"/>
</g>
<g id="patch_3">
<path d="M 45.929206 203.998281
L 45.929206 21.558281
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
</g>
<g id="patch_4">
<path d="M 45.929206 203.998281
L 402.084206 203.998281
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
</g>
<g id="text_16">
<!-- Metadata pair update cost -->
<defs>
<path d="M 9.8125 72.90625
L 24.515625 72.90625
L 43.109375 23.296875
L 61.8125 72.90625
L 76.515625 72.90625
L 76.515625 0
L 66.890625 0
L 66.890625 64.015625
L 48.09375 14.015625
L 38.1875 14.015625
L 19.390625 64.015625
L 19.390625 0
L 9.8125 0
z
" id="DejaVuSans-4d"/>
<path d="M 45.40625 46.390625
L 45.40625 75.984375
L 54.390625 75.984375
L 54.390625 0
L 45.40625 0
L 45.40625 8.203125
Q 42.578125 3.328125 38.25 0.953125
Q 33.9375 -1.421875 27.875 -1.421875
Q 17.96875 -1.421875 11.734375 6.484375
Q 5.515625 14.40625 5.515625 27.296875
Q 5.515625 40.1875 11.734375 48.09375
Q 17.96875 56 27.875 56
Q 33.9375 56 38.25 53.625
Q 42.578125 51.265625 45.40625 46.390625
z
M 14.796875 27.296875
Q 14.796875 17.390625 18.875 11.75
Q 22.953125 6.109375 30.078125 6.109375
Q 37.203125 6.109375 41.296875 11.75
Q 45.40625 17.390625 45.40625 27.296875
Q 45.40625 37.203125 41.296875 42.84375
Q 37.203125 48.484375 30.078125 48.484375
Q 22.953125 48.484375 18.875 42.84375
Q 14.796875 37.203125 14.796875 27.296875
z
" id="DejaVuSans-64"/>
<path d="M 41.109375 46.296875
Q 39.59375 47.171875 37.8125 47.578125
Q 36.03125 48 33.890625 48
Q 26.265625 48 22.1875 43.046875
Q 18.109375 38.09375 18.109375 28.8125
L 18.109375 0
L 9.078125 0
L 9.078125 54.6875
L 18.109375 54.6875
L 18.109375 46.1875
Q 20.953125 51.171875 25.484375 53.578125
Q 30.03125 56 36.53125 56
Q 37.453125 56 38.578125 55.875
Q 39.703125 55.765625 41.0625 55.515625
z
" id="DejaVuSans-72"/>
</defs>
<g transform="translate(151.276081 15.558281)scale(0.11 -0.11)">
<use xlink:href="#DejaVuSans-4d"/>
<use x="86.279297" xlink:href="#DejaVuSans-65"/>
<use x="147.802734" xlink:href="#DejaVuSans-74"/>
<use x="187.011719" xlink:href="#DejaVuSans-61"/>
<use x="248.291016" xlink:href="#DejaVuSans-64"/>
<use x="311.767578" xlink:href="#DejaVuSans-61"/>
<use x="373.046875" xlink:href="#DejaVuSans-74"/>
<use x="412.255859" xlink:href="#DejaVuSans-61"/>
<use x="473.535156" xlink:href="#DejaVuSans-20"/>
<use x="505.322266" xlink:href="#DejaVuSans-70"/>
<use x="568.798828" xlink:href="#DejaVuSans-61"/>
<use x="630.078125" xlink:href="#DejaVuSans-69"/>
<use x="657.861328" xlink:href="#DejaVuSans-72"/>
<use x="698.974609" xlink:href="#DejaVuSans-20"/>
<use x="730.761719" xlink:href="#DejaVuSans-75"/>
<use x="794.140625" xlink:href="#DejaVuSans-70"/>
<use x="857.617188" xlink:href="#DejaVuSans-64"/>
<use x="921.09375" xlink:href="#DejaVuSans-61"/>
<use x="982.373047" xlink:href="#DejaVuSans-74"/>
<use x="1021.582031" xlink:href="#DejaVuSans-65"/>
<use x="1083.105469" xlink:href="#DejaVuSans-20"/>
<use x="1114.892578" xlink:href="#DejaVuSans-63"/>
<use x="1169.873047" xlink:href="#DejaVuSans-6f"/>
<use x="1231.054688" xlink:href="#DejaVuSans-73"/>
<use x="1283.154297" xlink:href="#DejaVuSans-74"/>
</g>
</g>
</g>
</g>
<defs>
<clipPath id="p0570563b73">
<rect height="182.44" width="356.155" x="45.929206" y="21.558281"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 28 KiB

52
wear-distribution.py Executable file
View File

@@ -0,0 +1,52 @@
#!/usr/bin/env python
import matplotlib
matplotlib.use('SVG')
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np
matplotlib.rc('font', family='sans-serif', size=11)
matplotlib.rc('axes', titlesize='medium', labelsize='medium')
matplotlib.rc('xtick', labelsize='small')
matplotlib.rc('ytick', labelsize='small')
np.random.seed(map(ord, "hello"))
gs = gridspec.GridSpec(nrows=2, ncols=2, height_ratios=[1, 2],
wspace=0.25, hspace=0.25)
fig = plt.figure(figsize=(7, 5.5))
ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1], sharex=ax1, sharey=ax1)
ax3 = fig.add_subplot(gs[1, :])
# Convolution (I think?) of two types of uniform distributions under modulo
w1 = np.random.randint(0, 100, 30)
w2 = np.arange(0, 30, 1)
w3 = np.array([w2 + i for i in w1]).flatten() % 100
ax1.hist(w1, bins=100, range=(0,100), histtype='stepfilled')
ax2.hist(w2, bins=100, range=(0,100), histtype='stepfilled')
ax3.hist(w3, bins=100, range=(0,100), histtype='stepfilled')
ax1.set_title('Random offset')
ax2.set_title('Linear allocation')
ax3.set_title('Cumulative allocation')
ax1.set_ylabel('wear')
ax1.set_yticks(np.arange(0, 3))
ax3.set_ylabel('wear')
ax3.set_xlabel('block address')
for ax in [ax1,ax2,ax3]:
ax.set_xlim(0, 100)
ax.set_xticklabels([])
ax.set_yticklabels([])
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax1.text(109.25, 1, '$\\ast$')
fig.tight_layout()
plt.savefig('wear-distribution.svg', bbox_inches="tight")

2100
wear-distribution.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 55 KiB