Paper: a few more graphs.
parent
5f4977ddd1
commit
42967edd9f
|
@ -1,8 +1,8 @@
|
|||
.G1
|
||||
copy "legend.grap"
|
||||
frame invis ht 3 wid 4 left solid bot solid
|
||||
coord y 0,500
|
||||
ticks left out from 0 to 500 by 50
|
||||
coord y 0,300
|
||||
ticks left out from 0 to 300 by 50
|
||||
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
|
||||
|
@ -11,10 +11,10 @@ label bot "Number of cars in the database" down 0.1
|
|||
obfifo1 = obfifo5 = obfifo10 = obfifo20 = 0 # old bullets
|
||||
cbfifo1 = cbfifo5 = cbfifo10 = cbfifo20 = 0 # current bullets
|
||||
|
||||
legendxleft = 180000
|
||||
legendxright = 240000
|
||||
legendyup = 400
|
||||
legendydown = 300
|
||||
legendxleft = 120000
|
||||
legendxright = 180000
|
||||
legendyup = 120
|
||||
legendydown = 20
|
||||
|
||||
boite(legendxleft,legendxright,legendyup,legendydown)
|
||||
legend_common(legendxleft,legendxright,legendyup,legendydown)
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
.G1
|
||||
copy "legend.grap"
|
||||
frame invis ht 3 wid 4 left solid bot solid
|
||||
coord x 0,5000*2 y 0,5000
|
||||
ticks left out from 0 to 5000 by 1000
|
||||
coord x 0,5000*2 y 0,4000
|
||||
ticks left out from 0 to 4000 by 400
|
||||
ticks bot out from 1000 to 10000 by 1000
|
||||
|
||||
label left "Request duration" unaligned "for a partition (µs)" "(Median)" left 0.8
|
||||
label bot "Number of cars matching the partition" down 0.1
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
.G1
|
||||
copy "legend.grap"
|
||||
frame invis ht 3 wid 4 left solid bot solid
|
||||
coord x 0,5000 y 0,3000
|
||||
ticks left out from 0 to 5000 by 200
|
||||
ticks bot out from 1000 to 5000 by 1000
|
||||
label left "Request duration" unaligned "for a tag (µs)" "(Median)" left 0.8
|
||||
label bot "Number of cars matching the tag" down 0.1
|
||||
|
||||
obfifo1 = obfifo5 = obfifo10 = obfifo20 = 0
|
||||
cbfifo1 = cbfifo5 = cbfifo10 = cbfifo20 = 0
|
||||
|
||||
legendxleft = 2000
|
||||
legendxright = 3500
|
||||
legendyup = 2500
|
||||
legendydown = 1500
|
||||
|
||||
boite(legendxleft,legendxright,legendyup,legendydown)
|
||||
legend_common(legendxleft,legendxright,legendyup,legendydown)
|
||||
|
||||
copy "../data/fifo_tags.d" thru X
|
||||
cx = $1
|
||||
|
||||
y_scale = 1000
|
||||
|
||||
## fifo1 fifo5 fifo10 fifo20
|
||||
#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
|
||||
|
||||
#ty = $3
|
||||
|
||||
cbfifo1 = $3/y_scale
|
||||
cbfifo5 = $6/y_scale
|
||||
cbfifo10 = $9/y_scale
|
||||
cbfifo20 = $12/y_scale
|
||||
|
||||
.gcolor red
|
||||
if (obfifo1 > 0) then {line from cx,cbfifo1 to ox,obfifo1}
|
||||
.gcolor
|
||||
.gcolor green
|
||||
if (obfifo5 > 0) then {line from cx,cbfifo5 to ox,obfifo5}
|
||||
.gcolor
|
||||
if (obfifo10 > 0) then {line from cx,cbfifo10 to ox,obfifo10}
|
||||
.gcolor pink
|
||||
if (obfifo20 > 0) then {line from cx,cbfifo20 to ox,obfifo20}
|
||||
.gcolor
|
||||
|
||||
obfifo1 = cbfifo1
|
||||
obfifo5 = cbfifo5
|
||||
obfifo10 = cbfifo10
|
||||
obfifo20 = cbfifo20
|
||||
ox = cx
|
||||
|
||||
# fifo1 fifo5 fifo10 fifo20
|
||||
.gcolor red
|
||||
bullet at cx,cbfifo1
|
||||
.gcolor
|
||||
.gcolor green
|
||||
bullet at cx,cbfifo5
|
||||
.gcolor
|
||||
bullet at cx,cbfifo10
|
||||
.gcolor pink
|
||||
bullet at cx,cbfifo20
|
||||
.gcolor
|
||||
X
|
||||
.G2
|
|
@ -3,6 +3,7 @@ copy "legend.grap"
|
|||
frame invis ht 3 wid 4 left solid bot solid
|
||||
coord x 0,5000*2 y 0,350
|
||||
ticks left out from 0 to 350 by 50
|
||||
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
|
||||
|
|
|
@ -3,6 +3,7 @@ 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
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
.I \\$1 \\$2 \\$3
|
||||
..
|
||||
.
|
||||
.
|
||||
. \" The document starts here.
|
||||
.
|
||||
.TITLE Document Oriented DataBase (DODB)
|
||||
|
@ -941,6 +942,9 @@ The experiment starts with a database containing 1,000 cars and goes up to 250,0
|
|||
.ps -2
|
||||
.so graph_query_index.grap
|
||||
.ps \n[PS]
|
||||
.QP
|
||||
This first figure shows the request durations to retrieve data based on a basic index with a database containing up to 250k entries.
|
||||
.QE
|
||||
|
||||
Since there is only one value to retrieve, the request is quick and time is almost constant.
|
||||
When the value and the index are kept in memory (see \f[CW]RAM only\f[] and \f[CW]Cached db\f[]), the retrieval is almost instantaneous (about 50 to 120 ns).
|
||||
|
@ -1045,10 +1049,41 @@ Since this implementation of DODB is related to the Crystal language (which isn'
|
|||
.so graph_addition_fifo.grap
|
||||
.ps \n[PS]
|
||||
|
||||
.APPENDIX Common database
|
||||
.APPENDIX Common database performance
|
||||
The
|
||||
.I Common
|
||||
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
|
||||
.ps \n[PS]
|
||||
.QP
|
||||
This first figure shows the request durations to retrieve data based on a basic index with a database containing up to 250k entries.
|
||||
.QE
|
||||
.EQ
|
||||
delim $$
|
||||
.EN
|
||||
This figure shows a value being requested and since there is only a single value being requested in the test, it is immediately put in the cache and is never evicted.
|
||||
For that reason, the result is stable amongst all
|
||||
.I common
|
||||
database instances:
|
||||
.vp 2p
|
||||
$+-$ 170 ns.
|
||||
.EQ
|
||||
delim off
|
||||
.EN
|
||||
.ps -2
|
||||
.so graph_fifo_query_partition.grap
|
||||
.ps \n[PS]
|
||||
.QP
|
||||
This first figure shows the request durations to retrieve data based on a partition containing up to 10k entries.
|
||||
.QE
|
||||
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
|
||||
.ps \n[PS]
|
||||
.QP
|
||||
This first figure shows the request durations to retrieve data based on a tag containing up to 5k entries.
|
||||
.QE
|
||||
|
|
Loading…
Reference in New Issue