aboutsummaryrefslogtreecommitdiffstats
path: root/research
diff options
context:
space:
mode:
Diffstat (limited to 'research')
-rw-r--r--research/experiments/014-sealed-sends/2026-09-27-sessions-linux-aarch64.jsonl9
-rw-r--r--research/experiments/014-sealed-sends/drain.py14
2 files changed, 17 insertions, 6 deletions
diff --git a/research/experiments/014-sealed-sends/2026-09-27-sessions-linux-aarch64.jsonl b/research/experiments/014-sealed-sends/2026-09-27-sessions-linux-aarch64.jsonl
new file mode 100644
index 0000000..55c4f0c
--- /dev/null
+++ b/research/experiments/014-sealed-sends/2026-09-27-sessions-linux-aarch64.jsonl
@@ -0,0 +1,9 @@
+{"round": 0, "variant": "plain", "sends": 20000, "sends_per_second": 462162, "receiver_requests": 85, "delivery_attempts": 80}
+{"round": 0, "variant": "sealed", "sends": 20000, "sends_per_second": 461190, "receiver_requests": 85, "delivery_attempts": 80}
+{"round": 0, "variant": "baseline", "sends": 20000, "sends_per_second": 207310, "receiver_requests": 90, "delivery_attempts": 80}
+{"round": 1, "variant": "sealed", "sends": 20000, "sends_per_second": 463529, "receiver_requests": 85, "delivery_attempts": 80}
+{"round": 1, "variant": "baseline", "sends": 20000, "sends_per_second": 233662, "receiver_requests": 89, "delivery_attempts": 80}
+{"round": 1, "variant": "plain", "sends": 20000, "sends_per_second": 468355, "receiver_requests": 85, "delivery_attempts": 80}
+{"round": 2, "variant": "baseline", "sends": 20000, "sends_per_second": 233342, "receiver_requests": 89, "delivery_attempts": 80}
+{"round": 2, "variant": "plain", "sends": 20000, "sends_per_second": 470174, "receiver_requests": 85, "delivery_attempts": 80}
+{"round": 2, "variant": "sealed", "sends": 20000, "sends_per_second": 463747, "receiver_requests": 85, "delivery_attempts": 80}
diff --git a/research/experiments/014-sealed-sends/drain.py b/research/experiments/014-sealed-sends/drain.py
index 1a2819e..b40e820 100644
--- a/research/experiments/014-sealed-sends/drain.py
+++ b/research/experiments/014-sealed-sends/drain.py
@@ -4,10 +4,11 @@
A sender app (tests/check.py's LINK_SENDER) takes --sends orders from eight
clients while its receiver is stopped (SIGSTOP), so the sends pile up in the
sender's store; the receiver is then continued and timed until it has
-applied them all. Runs plain and sealed (--seal to the receiver's --key) in
-alternating order per round, and a --baseline pure-serve (plain only) when
-given. Both servers on cores 0-2. Then the AEADs and X25519 on one core
-(openssl speed). Prints one JSON line per run.
+applied them all. Runs plain and sealed (--seal to the receiver's --key,
+the sender sealing with its own --key) in rotated order per round, and a
+--baseline pure-serve (plain, or sealed with --baseline-sealed) when given,
+with its pure-crypto.so beside it. Both servers on cores 0-2. Then the
+AEADs and X25519 on one core (openssl speed). Prints one JSON line per run.
"""
import argparse
import json
@@ -53,7 +54,7 @@ def run(work, binary, sends, sealed):
key = ['--key', work / 'key' / 'receiver.key'] if sealed else []
receiver, started = start([binary, '--module', work / 'receiver.pmod', '--store', work / 'b', *key])
os.kill(receiver.pid, signal.SIGSTOP)
- seal = ['--seal', f'ordered={started["public_key"]}'] if sealed else []
+ seal = ['--seal', f'ordered={started["public_key"]}', '--key', work / 'key' / 'sender.key'] if sealed else []
sender, sender_started = start([binary, '--module', work / 'sender.pmod', '--store', work / 'a',
'--send', f'ordered=http://127.0.0.1:{started["port"]}/inputs/order', *seal])
@@ -100,6 +101,7 @@ def main():
parser.add_argument('--aup', type=Path, default=ROOT.parent / 'aup' / 'build' / 'aup')
parser.add_argument('--binary', type=Path, default=ROOT / 'build' / 'pure-serve')
parser.add_argument('--baseline', type=Path, help='an earlier pure-serve, run plain')
+ parser.add_argument('--baseline-sealed', action='store_true', help='run the baseline sealed instead')
parser.add_argument('--sends', type=int, default=20000)
parser.add_argument('--rounds', type=int, default=3)
args = parser.parse_args()
@@ -111,7 +113,7 @@ def main():
for round_ in range(args.rounds):
variants = [('plain', args.binary, False), ('sealed', args.binary, True)]
if args.baseline:
- variants.append(('baseline', args.baseline.resolve(), False))
+ variants.append(('baseline', args.baseline.resolve(), args.baseline_sealed))
shift = round_ % len(variants)
for name, binary, sealed in variants[shift:] + variants[:shift]:
result = run(work, binary, args.sends, sealed)