Logarithmic scale!!

toying-with-ramdb
Philippe PITTOLI 2024-05-28 20:37:59 +02:00
parent 00a5531b73
commit 948f995ef4
11 changed files with 220 additions and 165 deletions

View File

@ -1,78 +0,0 @@
.G1
copy "legend.grap"
frame invis ht 3 wid 4 left solid bot solid
coord y 0,50
ticks left out from 0 to 50 by 10
ticks bot out at 50000 "50,000", 100000 "100,000", 150000 "150,000", 200000 "200,000", 250000 "250,000"
label left "Request duration with" unaligned "an index (µs)" "(Median)" left 0.8
label bot "Number of cars in the database" down 0.1
obram = obuncache = obcache = obfifo = obsemi = 0 # old bullets
cbram = cbuncache = cbcache = cbfifo = cbsemi = 0 # current bullets
legendxleft = 100000
legendxright = 250000
legendyup = 15
legendydown = 2
boite(legendxleft,legendxright,legendyup,legendydown)
legend(legendxleft,legendxright,legendyup,legendydown)
copy "../data/index.d" thru X
cx = $1*5
y_scale = 1000
# ram cached fifo semi uncached
line from cx,$2/y_scale to cx,$4/y_scale
line from cx,$5/y_scale to cx,$7/y_scale
line from cx,$8/y_scale to cx,$10/y_scale
line from cx,$11/y_scale to cx,$13/y_scale
line from cx,$14/y_scale to cx,$16/y_scale
#ty = $3
cx = $1*5
cbram = $3/y_scale
cbcache = $6/y_scale
cbfifo = $9/y_scale
cbsemi = $12/y_scale
cbuncache = $15/y_scale
if (obram > 0) then {line from cx,cbram to ox,obram}
if (obcache > 0) then {line from cx,cbcache to ox,obcache}
.gcolor pink
if (obfifo > 0) then {line from cx,cbfifo to ox,obfifo}
.gcolor
.gcolor blue
if (obsemi > 0) then {line from cx,cbsemi to ox,obsemi}
.gcolor
.gcolor green
if (obuncache > 0) then {line from cx,cbuncache to ox,obuncache}
.gcolor
obram = cbram
obcache = cbcache
obfifo = cbfifo
obsemi = cbsemi
obuncache = cbuncache
ox = cx
# ram cached fifo semi uncached
.gcolor red
bullet at cx,cbram
.gcolor
bullet at cx,cbcache
.gcolor pink
bullet at cx,cbfifo
.gcolor
.gcolor blue
bullet at cx,cbsemi
.gcolor
.gcolor green
bullet at cx,cbuncache
.gcolor
X
.G2

View File

@ -1,40 +0,0 @@
.G1
copy "legend.grap"
frame invis ht 3 wid 4 left solid bot solid
coord x 0,5000*2 y 0.05,350 log y
ticks bot out from 1000 to 10000 by 1000
label left "Request duration" unaligned "for a partition (ms)" "(Median)" left 0.8
label bot "Number of cars matching the partition" down 0.1
obram = obuncache = obfifo = obcache = obsemi = 0
cbram = cbuncache = cbfifo = cbcache = cbsemi = 0
legendxleft = 1000
legendxright = 6500
legendyup = 0.01
legendydown = 0.0001
#boite(legendxleft,legendxright,legendyup,legendydown)
#legend(legendxleft,legendxright,legendyup,legendydown)
copy "../data/partitions.d" thru X
cx = $1*2
y_scale = 1000000
line_no_mustache(cbram, obram, $3, red)
line_no_mustache(cbcache, obcache, $6, black)
line_no_mustache(cbfifo, obfifo, $9, pink)
line_no_mustache(cbsemi, obsemi, $12, blue)
line_no_mustache(cbuncache, obuncache, $15, green)
#line_with_mustache(cbram, obram, $3, red, $2, $4)
#line_with_mustache(cbcache, obcache, $6, black, $5, $7)
#line_with_mustache(cbfifo, obfifo, $9, pink, $8, $10)
#line_with_mustache(cbsemi, obsemi, $12,blue, $11, $13)
#line_with_mustache(cbuncache,obuncache,$15,green, $14, $16)
ox = cx
X
.G2

View File

@ -1,40 +0,0 @@
.G1
copy "legend.grap"
frame invis ht 3 wid 4 left solid bot solid
coord x 0,5000 y 0,170
ticks left out from 0 to 170 by 20
ticks bot out from 1000 to 5000 by 1000
label left "Request duration" unaligned "for a tag (ms)" "(Median)" left 0.8
label bot "Number of cars matching the tag" down 0.1
obram = obuncache = obfifo = obcache = obsemi = 0
cbram = cbuncache = cbfifo = cbcache = cbsemi = 0
legendxleft = 200
legendxright = 3000
legendyup = 170
legendydown = 120
boite(legendxleft,legendxright,legendyup,legendydown)
legend(legendxleft,legendxright,legendyup,legendydown)
copy "../data/tags.d" thru X
cx = $1
y_scale = 1000000
#line_no_mustache(cbram, obram, $3, red)
#line_no_mustache(cbcache, obcache, $6, black)
#line_no_mustache(cbfifo, obfifo, $9, pink)
#line_no_mustache(cbsemi, obsemi, $12, blue)
#line_no_mustache(cbuncache, obuncache, $15, green)
line_with_mustache(cbram, obram, $3, red, $2, $4)
line_with_mustache(cbcache, obcache, $6, black, $5, $7)
line_with_mustache(cbfifo, obfifo, $9, pink, $8, $10)
line_with_mustache(cbsemi, obsemi, $12,blue, $11, $13)
line_with_mustache(cbuncache,obuncache,$15,green, $14, $16)
ox = cx
X
.G2

View File

@ -0,0 +1,64 @@
.G1
copy "legend.grap"
graph Linear
frame invis ht 3 wid 4 left solid bot solid
coord y 0,40000
ticks left out from 0 to 40000 by 10000
ticks bot off
label left "Request duration with" unaligned "an index (ns)" "(Median)" left 0.8
label right "\s+2Linear" unaligned "scale\s0"
obram = obuncache = obcache = obfifo = obsemi = 0 # old bullets
cbram = cbuncache = cbcache = cbfifo = cbsemi = 0 # current bullets
legendxleft = 100000
legendxright = 250000
legendyup = 15000
legendydown = 2000
boite(legendxleft,legendxright,legendyup,legendydown)
legend(legendxleft,legendxright,legendyup,legendydown)
copy "../data/index.d" thru X
cx = $1*5
y_scale = 1
line_no_mustache(cbram, obram, $3, red)
line_no_mustache(cbcache, obcache, $6, black)
line_no_mustache(cbfifo, obfifo, $9, pink)
line_no_mustache(cbsemi, obsemi, $12, blue)
line_no_mustache(cbuncache, obuncache, $15, green)
ox = cx
X
graph Exponential with .Frame.n at Linear.Frame.s -(0,.05)
frame invis ht 3 wid 4 left solid bot solid
coord log y
#ticks left out from 0 to 50 by 10
ticks bot out at 50000 "50,000", 100000 "100,000", 150000 "150,000", 200000 "200,000", 250000 "250,000"
label left "Request duration with" unaligned "an index (ns)" "(Median)" left 0.8
label bot "Number of cars in the database" down 0.1
label right "\s+2Logarithmic" unaligned "scale\s0"
obram = obuncache = obcache = obfifo = obsemi = 0 # old bullets
cbram = cbuncache = cbcache = cbfifo = cbsemi = 0 # current bullets
copy "../data/index.d" thru X
cx = $1*5
y_scale = 1
line_no_mustache(cbram, obram, $3, red)
line_no_mustache(cbcache, obcache, $6, black)
line_no_mustache(cbfifo, obfifo, $9, pink)
line_no_mustache(cbsemi, obsemi, $12, blue)
line_no_mustache(cbuncache, obuncache, $15, green)
ox = cx
X
.G2

View File

@ -0,0 +1,74 @@
.G1
copy "legend.grap"
graph Linear
frame invis ht 3 wid 4 left solid bot solid
coord x 0,5000*2
ticks bot off
label left "Request duration" unaligned "for a partition (ms)" "(Median)" left 0.8
label right "\s+2Linear" unaligned "scale\s0"
obram = obuncache = obfifo = obcache = obsemi = 0
cbram = cbuncache = cbfifo = cbcache = cbsemi = 0
legendxleft = 1000
legendxright = 6500
legendyup = 320
legendydown = 220
boite(legendxleft,legendxright,legendyup,legendydown)
legend(legendxleft,legendxright,legendyup,legendydown)
copy "../data/partitions.d" thru X
cx = $1*2
y_scale = 1000000
line_no_mustache(cbram, obram, $3, red)
line_no_mustache(cbcache, obcache, $6, black)
line_no_mustache(cbfifo, obfifo, $9, pink)
line_no_mustache(cbsemi, obsemi, $12, blue)
line_no_mustache(cbuncache, obuncache, $15, green)
#line_with_mustache(cbram, obram, $3, red, $2, $4)
#line_with_mustache(cbcache, obcache, $6, black, $5, $7)
#line_with_mustache(cbfifo, obfifo, $9, pink, $8, $10)
#line_with_mustache(cbsemi, obsemi, $12,blue, $11, $13)
#line_with_mustache(cbuncache,obuncache,$15,green, $14, $16)
ox = cx
X
graph Exponential with .Frame.n at Linear.Frame.s -(0,.05)
frame invis ht 3 wid 4 left solid bot solid
coord x 0,5000*2 y 0.05,350 log y
ticks bot out from 1000 to 10000 by 1000
label left "Request duration" unaligned "for a partition (ms)" "(Median)" left 0.8
label bot "Number of cars matching the partition" down 0.1
label right "\s+2Logarithmic" unaligned "scale\s0"
obram = obuncache = obfifo = obcache = obsemi = 0
cbram = cbuncache = cbfifo = cbcache = cbsemi = 0
copy "../data/partitions.d" thru X
cx = $1*2
y_scale = 1000000
line_no_mustache(cbram, obram, $3, red)
line_no_mustache(cbcache, obcache, $6, black)
line_no_mustache(cbfifo, obfifo, $9, pink)
line_no_mustache(cbsemi, obsemi, $12, blue)
line_no_mustache(cbuncache, obuncache, $15, green)
#line_with_mustache(cbram, obram, $3, red, $2, $4)
#line_with_mustache(cbcache, obcache, $6, black, $5, $7)
#line_with_mustache(cbfifo, obfifo, $9, pink, $8, $10)
#line_with_mustache(cbsemi, obsemi, $12,blue, $11, $13)
#line_with_mustache(cbuncache,obuncache,$15,green, $14, $16)
ox = cx
X
.G2

View File

@ -0,0 +1,75 @@
.G1
copy "legend.grap"
graph Linear
frame invis ht 3 wid 4 left solid bot solid
coord x 0,5000 y 0,170
ticks left out from 0 to 170 by 20
ticks bot off
label left "Request duration" unaligned "for a tag (ms)" "(Median)" left 0.8
#label bot "Number of cars matching the tag" down 0.1
label right "\s+2Linear" unaligned "scale\s0"
obram = obuncache = obfifo = obcache = obsemi = 0
cbram = cbuncache = cbfifo = cbcache = cbsemi = 0
legendxleft = 200
legendxright = 3000
legendyup = 170
legendydown = 120
boite(legendxleft,legendxright,legendyup,legendydown)
legend(legendxleft,legendxright,legendyup,legendydown)
copy "../data/tags.d" thru X
cx = $1
y_scale = 1000000
line_no_mustache(cbram, obram, $3, red)
line_no_mustache(cbcache, obcache, $6, black)
line_no_mustache(cbfifo, obfifo, $9, pink)
line_no_mustache(cbsemi, obsemi, $12, blue)
line_no_mustache(cbuncache, obuncache, $15, green)
#line_with_mustache(cbram, obram, $3, red, $2, $4)
#line_with_mustache(cbcache, obcache, $6, black, $5, $7)
#line_with_mustache(cbfifo, obfifo, $9, pink, $8, $10)
#line_with_mustache(cbsemi, obsemi, $12,blue, $11, $13)
#line_with_mustache(cbuncache,obuncache,$15,green, $14, $16)
ox = cx
X
graph Exponential with .Frame.n at Linear.Frame.s -(0,.05)
frame invis ht 3 wid 4 left solid bot solid
coord x 0,5000 y 0.02,350 log y
ticks bot out from 1000 to 5000 by 1000
label left "Request duration" unaligned "for a tag (ms)" "(Median)" left 0.8
label bot "Number of cars matching the tag" down 0.1
label right "\s+2Logarithmic" unaligned "scale\s0"
obram = obuncache = obfifo = obcache = obsemi = 0
cbram = cbuncache = cbfifo = cbcache = cbsemi = 0
copy "../data/tags.d" thru X
cx = $1
y_scale = 1000000
line_no_mustache(cbram, obram, $3, red)
line_no_mustache(cbcache, obcache, $6, black)
line_no_mustache(cbfifo, obfifo, $9, pink)
line_no_mustache(cbsemi, obsemi, $12, blue)
line_no_mustache(cbuncache, obuncache, $15, green)
#line_with_mustache(cbram, obram, $3, red, $2, $4)
#line_with_mustache(cbcache, obcache, $6, black, $5, $7)
#line_with_mustache(cbfifo, obfifo, $9, pink, $8, $10)
#line_with_mustache(cbsemi, obsemi, $12,blue, $11, $13)
#line_with_mustache(cbuncache,obuncache,$15,green, $14, $16)
ox = cx
X
.G2

View File

@ -940,7 +940,7 @@ The following graph represents the result of 100 queries of a car based on its n
The experiment starts with a database containing 1,000 cars and goes up to 250,000 cars.
.ps -2
.so graph_query_index.grap
.so graphs/query_index.grap
.ps \n[PS]
.QP
This figure shows the request durations to retrieve data based on a basic index with a database containing up to 250k entries.
@ -980,13 +980,13 @@ Caching the value enables a massive performance gain, data can be retrieved seve
.LP
.ps -2
.so graph_query_partition.grap
.so graphs/query_partition.grap
.ps \n[PS]
.SS Tags (n to n relations)
.LP
.ps -2
.so graph_query_tag.grap
.so graphs/query_tag.grap
.ps \n[PS]
.
.
@ -1046,7 +1046,7 @@ Since this implementation of DODB is related to the Crystal language (which isn'
.APPENDIX FIFO vs Efficient FIFO
.ps -2
.so graph_addition_fifo.grap
.so graphs/addition_fifo.grap
.ps \n[PS]
.APPENDIX Common database performance
@ -1056,7 +1056,7 @@ database enables to configure the number of allowed entries in the cache.
The following figures show the performance of the common database depending on the cache size.
.ps -2
.so graph_fifo_query_index.grap
.so graphs/fifo_query_index.grap
.ps \n[PS]
.QP
This figure shows the request durations to retrieve data based on a basic index with a database containing up to 250k entries.
@ -1074,7 +1074,7 @@ $+-$ 170 ns.
delim off
.EN
.ps -2
.so graph_fifo_query_partition.grap
.so graphs/fifo_query_partition.grap
.ps \n[PS]
.QP
This figure shows the request durations to retrieve data based on a partition containing up to 10k entries.
@ -1082,7 +1082,7 @@ This figure shows the request durations to retrieve data based on a partition co
As we see in the figure, the duration for data retrieval grows almost linearly for databases with a sufficient cache size (starting with 10k entries).
When the cache size is not sufficient, the requests are hundred times slower, which explain why the database with a cache size of one thousand entries isn't even represented in the graph, and why the 5k database has great results up to 5k partitions.
.ps -2
.so graph_fifo_query_tag.grap
.so graphs/fifo_query_tag.grap
.ps \n[PS]
.QP
This figure shows the request durations to retrieve data based on a tag containing up to 5k entries.