DB engine comparison

This commit is contained in:
Quentin 2022-09-24 18:09:18 +02:00
parent c84dc6bd35
commit b4c1f58a3c
Signed by untrusted user: quentin
GPG key ID: E9602264D639FF68
10 changed files with 84 additions and 4 deletions

View file

@ -10,7 +10,7 @@ ggplot(s, aes(x=total_objects, y=batch_dur_sec)) +
y="Time (in sec) spent sending a batch (8192 objects)",
x="Total number of objects stored in the cluster",
caption="Get the code to reproduce this graph at https://git.deuxfleurs.fr/Deuxfleurs/mknet",
title="Storing 1M+ files on Garage! Impact of existing data on cluster interactiveness",
title="Storing 1M+ files in a bucket! Impact of existing data on cluster interactiveness",
subtitle="Daemon: Garage v0.8 beta 2 with LMDB as db_engine\nBenchmark: 128 batch. 8192 objects/batch. 32 threads/batch. 256 objects/thread. 16-byte/objects.\nEnvironment: mknet (Ryzen 5 1400, 16GB RAM, SSD). DC topo (3 nodes, 1Gb/s, 1ms latency).") +
theme_classic()
ggsave("./plot.png", width=200, height=120, units="mm")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 244 KiB

After

Width:  |  Height:  |  Size: 244 KiB

View file

@ -0,0 +1,15 @@
Mixed operations.
Operation: DELETE, 10%, Concurrency: 20, Ran 4m59s.
* Throughput: 266.79 obj/s
Operation: GET, 45%, Concurrency: 20, Ran 4m59s.
* Throughput: 0.29 MiB/s, 1200.51 obj/s
Operation: PUT, 15%, Concurrency: 20, Ran 4m59s.
* Throughput: 0.10 MiB/s, 400.20 obj/s
Operation: STAT, 30%, Concurrency: 20, Ran 4m59s.
* Throughput: 800.32 obj/s
Cluster Total: 0.39 MiB/s, 2667.83 obj/s over 5m0s.
Aggregated data saved to /tmp/mknet-store/warp.csv

View file

@ -0,0 +1,17 @@
library(tidyverse)
read_csv("summary.csv")-> s
ggplot(s, aes(x=db_engine,y=rate)) +
scale_y_continuous(expand=c(0,0), breaks = scales::pretty_breaks(n = 10))+
geom_bar(stat='identity',fill="#00BFC4", color="black") +
coord_flip() +
facet_wrap(~operation, scales = "free", dir="v") +
labs(
x="Metadata Engine",
y="Object/sec",
caption="Get the code to reproduce this graph at https://git.deuxfleurs.fr/Deuxfleurs/mknet",
title="Comparison of Garage's metadata engines with \"minio/warp\"",
subtitle="Daemon: Garage v0.8 no-fsync to avoid being impacted by block manager\nBenchmark: warp, mixed mode, 5min bench, 256B objects, initialized with 200 objects.\nEnvironment: mknet (Ryzen 5 1400, 16GB RAM, SSD). DC topo (3 nodes, 1Gb/s, 1ms latency).",
) +
theme_classic()
ggsave("./plot.png", width=200, height=120, units="mm")

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

View file

@ -0,0 +1,15 @@
Mixed operations.
Operation: DELETE, 10%, Concurrency: 20, Ran 3m49s.
* Throughput: 129.83 obj/s
Operation: GET, 45%, Concurrency: 20, Ran 3m49s.
* Throughput: 0.14 MiB/s, 584.32 obj/s
Operation: PUT, 15%, Concurrency: 20, Ran 3m49s.
* Throughput: 0.05 MiB/s, 194.81 obj/s
Operation: STAT, 30%, Concurrency: 20, Ran 3m49s.
* Throughput: 389.52 obj/s
Cluster Total: 0.19 MiB/s, 1298.49 obj/s over 3m49s.
Aggregated data saved to /tmp/mknet-store/warp.csv

View file

@ -0,0 +1,15 @@
Mixed operations.
Operation: DELETE, 10%, Concurrency: 20, Ran 4m55s.
* Throughput: 1.29 obj/s
Operation: GET, 45%, Concurrency: 20, Ran 4m55s.
* Throughput: 0.00 MiB/s, 5.75 obj/s
Operation: PUT, 15%, Concurrency: 20, Ran 4m55s.
* Throughput: 0.00 MiB/s, 1.93 obj/s
Operation: STAT, 30%, Concurrency: 20, Ran 4m56s.
* Throughput: 3.86 obj/s
Cluster Total: 0.00 MiB/s, 12.83 obj/s over 4m55s.
Aggregated data saved to /tmp/mknet-store/warp.csv

View file

@ -0,0 +1,13 @@
db_engine,operation,rate
lmdb,delete,266.79
lmdb,get,1200.51
lmdb,put,400
lmdb,stat,800
sled,delete,129.83
sled,get,584.32
sled,put,194.81
sled,stat,389.52
sqlite,delete,1.29
sqlite,get,5.75
sqlite,put,1.93
sqlite,stat,3.86
1 db_engine operation rate
2 lmdb delete 266.79
3 lmdb get 1200.51
4 lmdb put 400
5 lmdb stat 800
6 sled delete 129.83
7 sled get 584.32
8 sled put 194.81
9 sled stat 389.52
10 sqlite delete 1.29
11 sqlite get 5.75
12 sqlite put 1.93
13 sqlite stat 3.86

View file

@ -41,6 +41,7 @@ garage = grg_path({
warp = {
"warp-fast": "mixed --obj.size 5M --objects 200 --duration=5m",
"warp-small-obj": "mixed --obj.size 256 --objects 200 --duration=5m",
"warp-default": "mixed"
}

View file

@ -2,19 +2,23 @@
from fragments import garage, warp, shared, flavor
import sys
db_engines = [ 'sled', 'lmdb', 'sqlite' ]
conf_root = {}
for fl in sys.argv[1:]:
if fl in flavor.garage:
garage.version = flavor.garage[fl]
if fl in flavor.warp:
elif fl in flavor.warp:
warp.bench = flavor.warp[fl]
elif fl in db_engines:
conf_root['db_engine'] = fl
if shared.id() == 1:
garage.deploy_coord()
garage.deploy_coord(uroot=conf_root)
warp.on_garage()
garage.delete_key()
garage.destroy()
else:
garage.deploy_follow()
garage.deploy_follow(uroot=conf_root)
garage.sync_on_key_down()
garage.destroy()
shared.log("bye")