Grap macro.

toying-with-ramdb
Philippe PITTOLI 2024-05-28 17:59:42 +02:00
parent 7b86fc1b29
commit 00a5531b73
6 changed files with 95 additions and 216 deletions

View File

@ -24,46 +24,15 @@ copy "../data/fifo_partitions.d" thru X
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
# Since the first access to the data is massively slower than the
# following retrivials, the mustache doesn't provide a better
# understanding of the data.
#ty = $3
line_no_mustache(cbfifo1, obfifo1, $3, red)
line_no_mustache(cbfifo5, obfifo5, $6, green)
line_no_mustache(cbfifo10, obfifo10, $9, black)
line_no_mustache(cbfifo20, obfifo20, $12, pink)
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

View File

@ -23,46 +23,15 @@ copy "../data/fifo_tags.d" thru X
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
# Since the first access to the data is massively slower than the
# following retrivials, the mustache doesn't provide a better
# understanding of the data.
#ty = $3
line_no_mustache(cbfifo1, obfifo1, $3, red)
line_no_mustache(cbfifo5, obfifo5, $6, green)
line_no_mustache(cbfifo10, obfifo10, $9, black)
line_no_mustache(cbfifo20, obfifo20, $12, pink)
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

View File

@ -1,8 +1,7 @@
.G1
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
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
@ -13,64 +12,29 @@ cbram = cbuncache = cbfifo = cbcache = cbsemi = 0
legendxleft = 1000
legendxright = 6500
legendyup = 330
legendydown = 230
legendyup = 0.01
legendydown = 0.0001
boite(legendxleft,legendxright,legendyup,legendydown)
legend(legendxleft,legendxright,legendyup,legendydown)
#boite(legendxleft,legendxright,legendyup,legendydown)
#legend(legendxleft,legendxright,legendyup,legendydown)
copy "../data/partitions.d" thru X
cx = $1*2
y_scale = 1000000
# 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
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)
#ty = $3
#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)
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

@ -23,53 +23,18 @@ copy "../data/tags.d" thru X
y_scale = 1000000
# 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
#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)
#ty = $3
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)
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

@ -10,6 +10,18 @@ define boite {
line from xright,yup to xright,ydown
}
define legend_line {
cy = $1
lstartx = $2
lendx = $3
tstartx = $4
.gcolor $5
line from lstartx,cy to lendx,cy
.gcolor
$6 ljust at tstartx,cy
}
define legend {
xleft = $1
xright = $2
@ -28,28 +40,15 @@ define legend {
tstartx = lendx + diffx/20
.ps -2
.gcolor red
line from lstartx,cy to lendx,cy
.gcolor
"RAM only" ljust at tstartx,cy
legend_line(cy,lstartx,lendx,tstartx,red,"RAM only")
cy = cy - hdiff
line from lstartx,cy to lendx,cy
"Cached db and index" ljust at tstartx,cy
legend_line(cy,lstartx,lendx,tstartx,black,"Cached db and index")
cy = cy - hdiff
.gcolor pink
line from lstartx,cy to lendx,cy
.gcolor
"FIFO db and cached index" ljust at tstartx,cy
legend_line(cy,lstartx,lendx,tstartx,pink,"FIFO db and cached index")
cy = cy - hdiff
.gcolor blue
line from lstartx,cy to lendx,cy
.gcolor
"Uncached db, cached index" ljust at tstartx,cy
legend_line(cy,lstartx,lendx,tstartx,blue,"Uncached db, cached index")
cy = cy - hdiff
.gcolor green
line from lstartx,cy to lendx,cy
.gcolor
"Uncached db and index" ljust at tstartx,cy
legend_line(cy,lstartx,lendx,tstartx,green,"Uncached db and index")
.ps +2
}
@ -71,23 +70,13 @@ define legend_common {
tstartx = lendx + diffx/20
.ps -2
.gcolor red
line from lstartx,cy to lendx,cy
.gcolor
"1k" ljust at tstartx,cy
legend_line(cy,lstartx,lendx,tstartx,red,"1k")
cy = cy - hdiff
.gcolor green
line from lstartx,cy to lendx,cy
.gcolor
"5k" ljust at tstartx,cy
legend_line(cy,lstartx,lendx,tstartx,green,"5k")
cy = cy - hdiff
line from lstartx,cy to lendx,cy
"10k" ljust at tstartx,cy
legend_line(cy,lstartx,lendx,tstartx,black,"10k")
cy = cy - hdiff
.gcolor pink
line from lstartx,cy to lendx,cy
.gcolor
"20k" ljust at tstartx,cy
legend_line(cy,lstartx,lendx,tstartx,pink,"20k")
.ps +2
}
@ -110,14 +99,36 @@ define legend_fifo_addition {
.ps -2
cy = cy - hdiff
.gcolor orange
line from lstartx,cy to lendx,cy
.gcolor
"basic FIFO" ljust at tstartx,cy
legend_line(cy,lstartx,lendx,tstartx,orange,"Basic FIFO")
cy = cy - hdiff
.gcolor green
line from lstartx,cy to lendx,cy
.gcolor
"Efficient FIFO" ljust at tstartx,cy
legend_line(cy,lstartx,lendx,tstartx,green,"Efficient FIFO")
.ps +2
}
# WARNING: this macro uses "cx" (current x), y_scale and "ox" (old x).
define line_no_mustache {
# $1 = cbram
# $2 = obram
# $3 = column
# $4 = color
$1 = $3/y_scale
.gcolor $4
if ($2 > 0) then {line from cx,$1 to ox,$2}
bullet at cx,$1
.gcolor
$2 = $1
}
# WARNING: this macro uses "cx" (current x), y_scale and "ox" (old x).
define line_with_mustache {
# $1 = cbram
# $2 = obram
# $3 = column
# $4 = color
# $5 = column mustache 1
# $6 = column mustache 2
line_no_mustache($1,$2,$3,$4)
line from cx,$5/y_scale to cx,$6/y_scale
}

View File

@ -943,7 +943,7 @@ The experiment starts with a database containing 1,000 cars and goes up to 250,0
.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.
This 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.
@ -1059,7 +1059,7 @@ The following figures show the performance of the common database depending on t
.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.
This figure shows the request durations to retrieve data based on a basic index with a database containing up to 250k entries.
.QE
.EQ
delim $$
@ -1077,7 +1077,7 @@ delim off
.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.
This 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.
@ -1085,5 +1085,6 @@ When the cache size is not sufficient, the requests are hundred times slower, wh
.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.
This figure shows the request durations to retrieve data based on a tag containing up to 5k entries.
.QE
As for partitions, the response time depends on the number of entries to retrieve and the duration increases linearly with the number of elements.