summaryrefslogtreecommitdiff
path: root/src/LivingVillage.Headless/BatchOutput.fs
diff options
context:
space:
mode:
Diffstat (limited to 'src/LivingVillage.Headless/BatchOutput.fs')
-rw-r--r--src/LivingVillage.Headless/BatchOutput.fs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/LivingVillage.Headless/BatchOutput.fs b/src/LivingVillage.Headless/BatchOutput.fs
index 971da97..aa79391 100644
--- a/src/LivingVillage.Headless/BatchOutput.fs
+++ b/src/LivingVillage.Headless/BatchOutput.fs
@@ -42,6 +42,23 @@ module BatchOutput =
"batch_summary worlds=%d passed=%d failed=%d old_passed=%d/%d ratio_min=%.3f ratio_max=%.3f gini_min=%.3f gini_max=%.3f elapsed_s=%.1f workers=%d wall_s=%.1f"
worlds passed failed oldPassed worlds ratioMin ratioMax giniMin giniMax elapsedSeconds workers elapsedSeconds
+ /// 多世界并存压测采样行:worlds/day 与各历史集合计数 + GC live set + OS RSS + 墙钟。
+ let multiworldLine
+ (worlds: int)
+ (day: int64)
+ (totalDays: int64)
+ (events: int64)
+ (rumors: int64)
+ (annals: int64)
+ (memoryEntries: int64)
+ (gcLiveBytes: int64)
+ (rssBytes: int64)
+ (elapsedSeconds: float) : string =
+ let mb (bytes: int64) = float bytes / (1024.0 * 1024.0)
+ sprintf
+ "multiworld_sample worlds=%d day=%d/%d events=%d rumors=%d annals=%d memory_entries=%d gc_live_mb=%.2f working_set_rss_mb=%.2f elapsed_s=%.1f"
+ worlds day totalDays events rumors annals memoryEntries (mb gcLiveBytes) (mb rssBytes) elapsedSeconds
+
/// --cost-probe 单段输出:ticks/s、墙钟、分配与 GC 全部来自真实测量。
let costLine
(days: int64)