From cbfec0d3ac239e050597bdb080645ffb53bad66e Mon Sep 17 00:00:00 2001 From: eunhhu Date: Mon, 19 Oct 2026 14:08:53 +0100 Subject: 046: 029's principle 2 put to its breaking experiment on one Pi, the tools and the numbers: an owner (pure-run --store) with shim.so preloaded ships every change its store makes to its files (ops.h: create, write, truncate, allocate, rename, unlink, mkdir), cut at each fsync or fdatasync, over pure link (shipper.c, follower.c), and its sync returns once the follower has the cut (synchronous: one cut in flight, no log); identity: 100,000 messages (200,081 cuts; 34 compactions, an image written again) and 200,000 (400,149 cuts; 67 compactions, a second log segment), the stores compared byte for byte every 1,999 and 3,001 cuts and at the end: 0 differences, the follower's store opened as owner holding every message; takeover: 70 kill -9s (owner alone, the whole node, the node with cuts of 512 and 64 B records): all open, hold every message the owner said done, none not sent, the entries in order (and equal to the owner's own store each time); prefixes: 867 op boundaries of a 100,000-message stream (568 within cuts, 266 around installs) opened as stores: all pass; the price: 204 to 400 us a message on tmpfs (155 us waiting for acks, two cuts a message), 903 bytes shipped a message, 42% of them zeros written ahead (a compaction's new file and the tree's tail) --- research/experiments/046-commit-replica/entries.aup | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 research/experiments/046-commit-replica/entries.aup (limited to 'research/experiments/046-commit-replica/entries.aup') diff --git a/research/experiments/046-commit-replica/entries.aup b/research/experiments/046-commit-replica/entries.aup new file mode 100644 index 0000000..6a95acc --- /dev/null +++ b/research/experiments/046-commit-replica/entries.aup @@ -0,0 +1,12 @@ +record Entry { + n = 0 +} +state entries: list of Entry +state count = 0 +input add = message { n: number } +on add { + entries.append(Entry { n: add.n }) + count = count + 1 +} +view total = count +view summed = sum(e.n for e in entries) -- cgit v1.2.3