summaryrefslogtreecommitdiff
path: root/deploy/living-village-multiworld.service
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-29 04:23:26 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-29 04:23:26 +0800
commitf681867692f575b078f46afaf07060faed457461 (patch)
tree4ab11638357891257703e55f5aa790868e902e3c /deploy/living-village-multiworld.service
parent2d9e4d845019b6c8793633258a45b91e0358e0e9 (diff)
downloadliving-village-f681867692f575b078f46afaf07060faed457461.tar.gz
p59: Sim 多世界并存后台压测(内存/GC 增长曲线证据单,只读)
目标:量化「多世界并存 × 天数」的内存/GC 增长,收口 P49 范围外项。 口径:新增 Headless `--profile-multiworld <worlds> <days> <npcs> <sampleEveryDays> <seedBase>`, N 个 Sim 世界同时存活,每轮 Parallel.For 各推进 sampleEveryDays 天并采样一行 (worlds/events/rumors/annals/memory_entries/gc_live_mb/working_set_rss_mb/elapsed_s, 行尾 flush);未改 Kernel/Sim 任何语义(Sim.initialWorldN / Sim.step 原样调用)。 标定:1 世界 × 2 天探针 = 34.2s(与 overnight-status 的 34.6s 一致),据此定 N=10 × 20 天。 运行:独立 systemd --user transient unit living-village-multiworld.service (scripts/profile-multiworld.sh,StandardOutput=append: + exec 2>&1,state.json 记 pid/unit/log/commit/参数/起止/exit)。主运行 wall=1024.4s(17.1min < 40min),exit=0。 结论(artifacts/perf-multiworld/20260928T195839Z/README.md): - 随世界数近似线性,未超线性:N=1 vs N=10(同日 D=20)annals/memory_entries 恰 10×、 rumors 9.67×、gc_live 8.81×(每世界 1.23MB,共享运行时开销摊薄)。 - RSS 有界无泄漏:N=10 39→峰值123(day8)→稳定104~112MB;每 2 天一轮墙钟恒 101~105s。 原因是历史集合有界(rumorRetentionDays=3 / rumorCapacity=16384 / maxAnnalEntries=128 / Mind.Memory 上限),约 day4 后进入稳态。 - 两轮世界0 digest 一致(2364CB74…)→ 并存+并行不改变单世界语义。 - 数字未越界 → 明确「不修」;只读本 slice 不修 Kernel/Sim。 回归:Desktop 304/304 + Kernel 119/119;--performance-baseline ×3 digest 953775FAEB2F… 不变,performance_determinism=PASS。未 push。
Diffstat (limited to 'deploy/living-village-multiworld.service')
-rw-r--r--deploy/living-village-multiworld.service40
1 files changed, 40 insertions, 0 deletions
diff --git a/deploy/living-village-multiworld.service b/deploy/living-village-multiworld.service
new file mode 100644
index 0000000..a16544d
--- /dev/null
+++ b/deploy/living-village-multiworld.service
@@ -0,0 +1,40 @@
+# P59 多世界并存压测 systemd --user 单元模板(N 世界 × D 天,逐采样行流式)。
+#
+# 独立于 writer cgroup 运行(transient unit),输出 append 到 acceptance.log、exec 2>&1。
+# 安装示例:
+# TS=$(date -u +%Y%m%dT%H%M%SZ)
+# systemd-run --user --unit=living-village-multiworld \
+# --property=Type=simple \
+# --property=WorkingDirectory=@REPO@ \
+# --setenv=PMW_REPO=@REPO@ \
+# --setenv=PMW_DIR=@REPO@/artifacts/perf-multiworld/$TS \
+# --setenv=PMW_COMMIT=@COMMIT@ \
+# --setenv=PMW_WORLDS=10 --setenv=PMW_DAYS=20 --setenv=PMW_NPCS=30 \
+# --setenv=PMW_SAMPLE_EVERY=2 --setenv=PMW_SEED_BASE=42 \
+# --setenv=PMW_LOG=@REPO@/artifacts/perf-multiworld/$TS/acceptance.log \
+# --property=StandardOutput=append:@REPO@/artifacts/perf-multiworld/$TS/acceptance.log \
+# --property=StandardError=append:@REPO@/artifacts/perf-multiworld/$TS/acceptance.log \
+# --property=Restart=no \
+# /usr/bin/bash @REPO@/scripts/profile-multiworld.sh
+[Unit]
+Description=Living Village multi-world coexistence memory/GC profile
+After=default.target
+
+[Service]
+Type=simple
+WorkingDirectory=@REPO@
+Environment=PMW_REPO=@REPO@
+Environment=PMW_DIR=@REPO@/artifacts/perf-multiworld/@TS@
+Environment=PMW_COMMIT=@COMMIT@
+Environment=PMW_WORLDS=10
+Environment=PMW_DAYS=20
+Environment=PMW_NPCS=30
+Environment=PMW_SAMPLE_EVERY=2
+Environment=PMW_SEED_BASE=42
+Environment=PMW_LOG=@REPO@/artifacts/perf-multiworld/@TS@/acceptance.log
+ExecStart=/usr/bin/bash @REPO@/scripts/profile-multiworld.sh
+StandardOutput=append:@REPO@/artifacts/perf-multiworld/@TS@/acceptance.log
+StandardError=append:@REPO@/artifacts/perf-multiworld/@TS@/acceptance.log
+Restart=no
+TimeoutStartSec=infinity
+TimeoutStopSec=30s