From 948f995ef4628a9cfbe1217ffde0cec4c86d5411 Mon Sep 17 00:00:00 2001 From: Philippe PITTOLI Date: Tue, 28 May 2024 20:37:59 +0200 Subject: [PATCH] Logarithmic scale!! --- paper/graph_query_index.grap | 78 ------------------- paper/graph_query_partition.grap | 40 ---------- paper/graph_query_tag.grap | 40 ---------- .../addition_fifo.grap} | 0 .../fifo_query_index.grap} | 0 .../fifo_query_partition.grap} | 0 .../fifo_query_tag.grap} | 0 paper/graphs/query_index.grap | 64 +++++++++++++++ paper/graphs/query_partition.grap | 74 ++++++++++++++++++ paper/graphs/query_tag.grap | 75 ++++++++++++++++++ paper/paper.ms | 14 ++-- 11 files changed, 220 insertions(+), 165 deletions(-) delete mode 100644 paper/graph_query_index.grap delete mode 100644 paper/graph_query_partition.grap delete mode 100644 paper/graph_query_tag.grap rename paper/{graph_addition_fifo.grap => graphs/addition_fifo.grap} (100%) rename paper/{graph_fifo_query_index.grap => graphs/fifo_query_index.grap} (100%) rename paper/{graph_fifo_query_partition.grap => graphs/fifo_query_partition.grap} (100%) rename paper/{graph_fifo_query_tag.grap => graphs/fifo_query_tag.grap} (100%) create mode 100644 paper/graphs/query_index.grap create mode 100644 paper/graphs/query_partition.grap create mode 100644 paper/graphs/query_tag.grap diff --git a/paper/graph_query_index.grap b/paper/graph_query_index.grap deleted file mode 100644 index ee19d40..0000000 --- a/paper/graph_query_index.grap +++ /dev/null @@ -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 diff --git a/paper/graph_query_partition.grap b/paper/graph_query_partition.grap deleted file mode 100644 index 8e8ad59..0000000 --- a/paper/graph_query_partition.grap +++ /dev/null @@ -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 diff --git a/paper/graph_query_tag.grap b/paper/graph_query_tag.grap deleted file mode 100644 index 77b8d03..0000000 --- a/paper/graph_query_tag.grap +++ /dev/null @@ -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 diff --git a/paper/graph_addition_fifo.grap b/paper/graphs/addition_fifo.grap similarity index 100% rename from paper/graph_addition_fifo.grap rename to paper/graphs/addition_fifo.grap diff --git a/paper/graph_fifo_query_index.grap b/paper/graphs/fifo_query_index.grap similarity index 100% rename from paper/graph_fifo_query_index.grap rename to paper/graphs/fifo_query_index.grap diff --git a/paper/graph_fifo_query_partition.grap b/paper/graphs/fifo_query_partition.grap similarity index 100% rename from paper/graph_fifo_query_partition.grap rename to paper/graphs/fifo_query_partition.grap diff --git a/paper/graph_fifo_query_tag.grap b/paper/graphs/fifo_query_tag.grap similarity index 100% rename from paper/graph_fifo_query_tag.grap rename to paper/graphs/fifo_query_tag.grap diff --git a/paper/graphs/query_index.grap b/paper/graphs/query_index.grap new file mode 100644 index 0000000..4de8b29 --- /dev/null +++ b/paper/graphs/query_index.grap @@ -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 diff --git a/paper/graphs/query_partition.grap b/paper/graphs/query_partition.grap new file mode 100644 index 0000000..815cdc1 --- /dev/null +++ b/paper/graphs/query_partition.grap @@ -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 diff --git a/paper/graphs/query_tag.grap b/paper/graphs/query_tag.grap new file mode 100644 index 0000000..d34470e --- /dev/null +++ b/paper/graphs/query_tag.grap @@ -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 diff --git a/paper/paper.ms b/paper/paper.ms index 3825bf1..896ce51 100644 --- a/paper/paper.ms +++ b/paper/paper.ms @@ -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.