You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bench 1: Evaluate the impact of GCed pack store on replay speed. Could be done by comparing a gc-less replay starting from a non-gd'ed store versus a gc-less replay starting from a gd'ed store.
Bench 2: Evaluate the impact of GC-worker on main store. Could be done by comparing a gc-less replay versus a replay that constantly has GCs running but that never swaps.
Bench 1 will tell us if Add lower layer is worth it (ignoring the fact that the upper/lower could live on different disks)
Bench 2 will tell us if Use a sequential traverse that visits pages only once is worth it
I believe that Filter the LRU instead of completely clearing it is what was tried here: #1993 but it wasn’t necessarily an improvement over just clearing the LRU.
@metanivek and I brainstormed areas of improvement for GC and the new IO
Benchmark impact of GC on main process performances
Bench 1: Evaluate the impact of GCed pack store on replay speed. Could be done by comparing a gc-less replay starting from a non-gd'ed store versus a gc-less replay starting from a gd'ed store.
Bench 2: Evaluate the impact of GC-worker on main store. Could be done by comparing a gc-less replay versus a replay that constantly has GCs running but that never swaps.
Bench 1 will tell us if
Add lower layer
is worth it (ignoring the fact that the upper/lower could live on different disks)Bench 2 will tell us if
Use a sequential traverse that visits pages only once
is worth itNew stats for stats trace
Benchmark the impact of fsync on other processes depending on filesystem
Some filesystems may block all operations from all processes during an fsync
Review uses of finalise
Need to close FDs on error
#1957
Improve crash consistency
#2082
Catch decoding errors to reraise/return clean exceptions/errors
Some irmin-pack function are expected to not raise errors, but when using repr's decode bin we don't catch it's exception.
Let's check the whole file stack + GC code for such errors.
See: https://github.com/mirage/irmin/blob/main/src/irmin-pack/unix/traverse_pack_file.ml#L209
Log to disk all the important activities on a pack store
We could add a parameter to irmin-pack's repo that could default to
journaling=false
. We setjournaling=true
in Tezos.Maybe using logs.
#1856
Change GC algorithm perform graph traversal from high to low offsets
#2085
Change GC algorithm to visit disk pages at most once and disable page-cache for it
See initial work: https://github.com/Ngoguey42/segment_hangzhou/blob/34e300b94e1dbf01ab3f04e7667bbef604ae21e4//traverse.ml
Avoid suffix copies in GC
How to not block finalize with unlink
#2091
Remove dead files on store opening
Filter the LRU instead of completely clearing it.
First attempt wasn't conclusive: #1993
Add back a non-forking GC
#2000
Add lower layer
For archive nodes.
Remove Lwt from the low-level (
start
/finalise
) GC codekeep Lwt in the high level API
#2064
Remove exceptions from the low-level (
start
/finalise
) GC codekeep exception in the high level API
Done for GC worker: #2065
Rename
gc.ml
togc_worker.ml
and move GC code out ofext.ml
to a newgc.ml
#2063
Remove disk-specific functions from
irmin-pack/s.ml
#2081
#2084
Dead header size handling logic from apppend_only to dispatcher
Evaluate where code documentation misses
E.g. #1960
First batch: #2051
Remove
mapping_consumers
.#2062
Improve error handling in new code
assert false
to prune unreachable branchesregister_dict
function.Errs.catch
.Make offsets abstract or private
#1954
Make auto-flushes type safe
#2051 (comment)
#2088
The text was updated successfully, but these errors were encountered: