forked from Deuxfleurs/mknet
LMDB s3 million objects
This commit is contained in:
parent
a744f72f15
commit
a869e3614b
5 changed files with 191 additions and 26 deletions
129
artifacts/2022-09-14-s3billion/garage-v0.8-beta2-lmdb.csv
Normal file
129
artifacts/2022-09-14-s3billion/garage-v0.8-beta2-lmdb.csv
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
total_objects,batch_dur_nanoseconds
|
||||||
|
0,2018191689
|
||||||
|
8192,1819596313
|
||||||
|
16384,2102802010
|
||||||
|
24576,2473935158
|
||||||
|
32768,4510296173
|
||||||
|
40960,6613958698
|
||||||
|
49152,7977651423
|
||||||
|
57344,13671435594
|
||||||
|
65536,8060203586
|
||||||
|
73728,3795495684
|
||||||
|
81920,5794535775
|
||||||
|
90112,5543820710
|
||||||
|
98304,4519985809
|
||||||
|
106496,5110068206
|
||||||
|
114688,6708672963
|
||||||
|
122880,7857479433
|
||||||
|
131072,20642163540
|
||||||
|
139264,5635269044
|
||||||
|
147456,9351347336
|
||||||
|
155648,5666222073
|
||||||
|
163840,6501995906
|
||||||
|
172032,5293598878
|
||||||
|
180224,9350079270
|
||||||
|
188416,13303962641
|
||||||
|
196608,17428285824
|
||||||
|
204800,11733919058
|
||||||
|
212992,8372494836
|
||||||
|
221184,26574754854
|
||||||
|
229376,6314078661
|
||||||
|
237568,9683594309
|
||||||
|
245760,21850576414
|
||||||
|
253952,8991130243
|
||||||
|
262144,6567887673
|
||||||
|
270336,9454781018
|
||||||
|
278528,25552173846
|
||||||
|
286720,9580711949
|
||||||
|
294912,10257632597
|
||||||
|
303104,7478191638
|
||||||
|
311296,10501501215
|
||||||
|
319488,3816776322
|
||||||
|
327680,26795462810
|
||||||
|
335872,9396360089
|
||||||
|
344064,11208895014
|
||||||
|
352256,21126662513
|
||||||
|
360448,14198029001
|
||||||
|
368640,5093580346
|
||||||
|
376832,21004203835
|
||||||
|
385024,14433396301
|
||||||
|
393216,8933953570
|
||||||
|
401408,5461923067
|
||||||
|
409600,30844223516
|
||||||
|
417792,8315342751
|
||||||
|
425984,6166609079
|
||||||
|
434176,29359253375
|
||||||
|
442368,7642009005
|
||||||
|
450560,7036982475
|
||||||
|
458752,27168386971
|
||||||
|
466944,10015226557
|
||||||
|
475136,9245612551
|
||||||
|
483328,24224252348
|
||||||
|
491520,13827842768
|
||||||
|
499712,9702435577
|
||||||
|
507904,26083366912
|
||||||
|
516096,7829114232
|
||||||
|
524288,10792095771
|
||||||
|
532480,28058503484
|
||||||
|
540672,9984663485
|
||||||
|
548864,10714515140
|
||||||
|
557056,28472749292
|
||||||
|
565248,10832278691
|
||||||
|
573440,7594452219
|
||||||
|
581632,23858923965
|
||||||
|
589824,38909249537
|
||||||
|
598016,15112735865
|
||||||
|
606208,9644628857
|
||||||
|
614400,28367134578
|
||||||
|
622592,35180699079
|
||||||
|
630784,14207640136
|
||||||
|
638976,13236547125
|
||||||
|
647168,37982462879
|
||||||
|
655360,8448278050
|
||||||
|
663552,11632520113
|
||||||
|
671744,22661429490
|
||||||
|
679936,29261192164
|
||||||
|
688128,11982484321
|
||||||
|
696320,30381827880
|
||||||
|
704512,23530964587
|
||||||
|
712704,8219614193
|
||||||
|
720896,34002514929
|
||||||
|
729088,21279203762
|
||||||
|
737280,6880671212
|
||||||
|
745472,10884265763
|
||||||
|
753664,41999879903
|
||||||
|
761856,13465319479
|
||||||
|
770048,10792229369
|
||||||
|
778240,29004881357
|
||||||
|
786432,24372150617
|
||||||
|
794624,13327280319
|
||||||
|
802816,18478244110
|
||||||
|
811008,48319469581
|
||||||
|
819200,14174987827
|
||||||
|
827392,14368184404
|
||||||
|
835584,56647745264
|
||||||
|
843776,9880099642
|
||||||
|
851968,12808097118
|
||||||
|
860160,28380242726
|
||||||
|
868352,44970657202
|
||||||
|
876544,18733551704
|
||||||
|
884736,9340561806
|
||||||
|
892928,25246663514
|
||||||
|
901120,46462124425
|
||||||
|
909312,12856639771
|
||||||
|
917504,9028224897
|
||||||
|
925696,38580954489
|
||||||
|
933888,48184562190
|
||||||
|
942080,11204051215
|
||||||
|
950272,19754687230
|
||||||
|
958464,36364975788
|
||||||
|
966656,40759996520
|
||||||
|
974848,10562565477
|
||||||
|
983040,13905331718
|
||||||
|
991232,54140254529
|
||||||
|
999424,46643736817
|
||||||
|
1007616,8362351299
|
||||||
|
1015808,13514305332
|
||||||
|
1024000,39389278472
|
||||||
|
1032192,40328458712
|
||||||
|
1040384,15958365846
|
|
14
artifacts/2022-09-14-s3billion/plot.R
Normal file
14
artifacts/2022-09-14-s3billion/plot.R
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
library(tidyverse)
|
||||||
|
read_csv("garage-v0.8-beta2-lmdb.csv") %>% mutate(batch_dur_sec = batch_dur_nanoseconds / 1000 / 1000 / 1000 ) -> s
|
||||||
|
|
||||||
|
ggplot(s, aes(x=total_objects, y=batch_dur_sec)) +
|
||||||
|
geom_point() +
|
||||||
|
geom_smooth(method = "gam", se = FALSE) +
|
||||||
|
labs(
|
||||||
|
y="Time 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",
|
||||||
|
subtitle="Daemon: Garage v0.8 beta 2 with LMDB as db_engine\nBenchmark: 128 batch. 192 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")
|
BIN
artifacts/2022-09-14-s3billion/plot.png
Normal file
BIN
artifacts/2022-09-14-s3billion/plot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 221 KiB |
|
@ -38,11 +38,11 @@ if 'HOST' in env:
|
||||||
config = storage_path / "garage.toml"
|
config = storage_path / "garage.toml"
|
||||||
env['GARAGE_CONFIG_FILE'] = str(config)
|
env['GARAGE_CONFIG_FILE'] = str(config)
|
||||||
|
|
||||||
def deploy_coord(gw=None):
|
def deploy_coord(gw=None, uroot={}, us3_api={}, us3_web={}, uadmin={}):
|
||||||
destroy()
|
destroy()
|
||||||
shared.log("start daemon")
|
shared.log("start daemon")
|
||||||
shared.exec(f"{version['path']} --version")
|
shared.exec(f"{version['path']} --version")
|
||||||
daemon()
|
daemon(uroot,us3_api,us3_web,uadmin)
|
||||||
shared.log("discover nodes")
|
shared.log("discover nodes")
|
||||||
connect()
|
connect()
|
||||||
shared.log("build layout")
|
shared.log("build layout")
|
||||||
|
@ -51,43 +51,62 @@ def deploy_coord(gw=None):
|
||||||
create_key()
|
create_key()
|
||||||
shared.log("ready")
|
shared.log("ready")
|
||||||
|
|
||||||
def deploy_follow():
|
def deploy_follow(uroot={}, us3_api={}, us3_web={}, uadmin={}):
|
||||||
destroy()
|
destroy()
|
||||||
shared.log("start daemon")
|
shared.log("start daemon")
|
||||||
daemon()
|
daemon(uroot,us3_api,us3_web,uadmin)
|
||||||
shared.log("wait for coord")
|
shared.log("wait for coord")
|
||||||
sync_on_key_up()
|
sync_on_key_up()
|
||||||
shared.log("ready")
|
shared.log("ready")
|
||||||
|
|
||||||
def daemon():
|
def to_toml(d): return "\n".join([ f"{k} = \"{v}\"" for k, v in d.items() ])
|
||||||
|
def daemon(uroot={}, us3_api={}, us3_web={}, uadmin={}):
|
||||||
|
root = {
|
||||||
|
"metadata_dir": f"{storage_path}/meta",
|
||||||
|
"data_dir": f"{storage_path}/data",
|
||||||
|
"replication_mode": "3",
|
||||||
|
"rpc_bind_addr": "[::]:3901",
|
||||||
|
"rpc_public_addr": f"[{env['IP']}]:3901",
|
||||||
|
"rpc_secret": f"{rpc_secret}",
|
||||||
|
}
|
||||||
|
root.update(uroot)
|
||||||
|
|
||||||
|
s3_api = {
|
||||||
|
"s3_region": "garage",
|
||||||
|
"api_bind_addr": "[::]:3900",
|
||||||
|
"root_domain": ".s3.garage",
|
||||||
|
}
|
||||||
|
s3_api.update(us3_api)
|
||||||
|
|
||||||
|
s3_web = {
|
||||||
|
"bind_addr": "[::]:3902",
|
||||||
|
"root_domain": ".web.garage",
|
||||||
|
"index": "index.html",
|
||||||
|
}
|
||||||
|
s3_web.update(us3_web)
|
||||||
|
|
||||||
|
sect_admin = {
|
||||||
|
"api_bind_addr": "0.0.0.0:3903",
|
||||||
|
"metrics_token": f"{metrics}",
|
||||||
|
"admin_token": f"{admin}",
|
||||||
|
}
|
||||||
|
sect_admin.update(uadmin)
|
||||||
|
|
||||||
|
|
||||||
shared.exec(f"mkdir -p {storage_path}")
|
shared.exec(f"mkdir -p {storage_path}")
|
||||||
with open(config, 'w+') as f:
|
with open(config, 'w+') as f:
|
||||||
f.write(f"""
|
f.write(f"""
|
||||||
metadata_dir = "{storage_path}/meta"
|
{to_toml(root)}
|
||||||
data_dir = "{storage_path}/data"
|
bootstrap_peers = []
|
||||||
|
|
||||||
replication_mode = "3"
|
|
||||||
|
|
||||||
rpc_bind_addr = "[::]:3901"
|
|
||||||
rpc_public_addr = "[{env['IP']}]:3901"
|
|
||||||
rpc_secret = "{rpc_secret}"
|
|
||||||
|
|
||||||
bootstrap_peers=[]
|
|
||||||
|
|
||||||
[s3_api]
|
[s3_api]
|
||||||
s3_region = "garage"
|
{to_toml(s3_api)}
|
||||||
api_bind_addr = "[::]:3900"
|
|
||||||
root_domain = ".s3.garage"
|
|
||||||
|
|
||||||
[s3_web]
|
[s3_web]
|
||||||
bind_addr = "[::]:3902"
|
{to_toml(s3_web)}
|
||||||
root_domain = ".web.garage"
|
|
||||||
index = "index.html"
|
|
||||||
|
|
||||||
[admin]
|
[admin]
|
||||||
api_bind_addr = "0.0.0.0:3903"
|
{to_toml(sect_admin)}
|
||||||
metrics_token = "{metrics}"
|
|
||||||
admin_token = "{admin}"
|
|
||||||
""")
|
""")
|
||||||
|
|
||||||
shared.exec(f"{version['path']} server 2>> {storage_path}/logs.stderr 1>> {storage_path}/logs.stdout & echo $! > {storage_path}/daemon.pid")
|
shared.exec(f"{version['path']} server 2>> {storage_path}/logs.stderr 1>> {storage_path}/logs.stdout & echo $! > {storage_path}/daemon.pid")
|
||||||
|
|
|
@ -8,14 +8,17 @@ for fl in sys.argv[1:]:
|
||||||
|
|
||||||
#os.environ['BATCH_COUNT'] = "2"
|
#os.environ['BATCH_COUNT'] = "2"
|
||||||
shared.exec("ulimit -n 65535")
|
shared.exec("ulimit -n 65535")
|
||||||
|
conf_root = {
|
||||||
|
"db_engine": "lmdb",
|
||||||
|
}
|
||||||
|
|
||||||
if shared.id() == 1:
|
if shared.id() == 1:
|
||||||
garage.deploy_coord()
|
garage.deploy_coord(uroot=conf_root)
|
||||||
s3billion.on_garage()
|
s3billion.on_garage()
|
||||||
garage.delete_key()
|
garage.delete_key()
|
||||||
garage.destroy()
|
garage.destroy()
|
||||||
else:
|
else:
|
||||||
garage.deploy_follow()
|
garage.deploy_follow(uroot=conf_root)
|
||||||
garage.sync_on_key_down()
|
garage.sync_on_key_down()
|
||||||
garage.destroy()
|
garage.destroy()
|
||||||
shared.log("bye")
|
shared.log("bye")
|
||||||
|
|
Loading…
Reference in a new issue