From c458f9541bfb1fb617fe0d3921a191de069bfa2e Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Thu, 17 Sep 2026 16:07:05 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B8=85=E7=90=86=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E8=A1=8C=E5=B7=A5=E5=85=B7=E6=B3=A8=E9=87=8A=E7=9A=84=E7=A7=81?= =?UTF-8?q?=E6=9C=89=E7=AE=80=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_cli/src/bench/leak_detect.rs | 12 ++++++------ crates/oxide_cli/src/bench/mod.rs | 2 +- crates/oxide_cli/src/bench/output.rs | 2 +- crates/oxide_cli/src/main.rs | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/crates/oxide_cli/src/bench/leak_detect.rs b/crates/oxide_cli/src/bench/leak_detect.rs index 55e0af9c..fbe3e642 100644 --- a/crates/oxide_cli/src/bench/leak_detect.rs +++ b/crates/oxide_cli/src/bench/leak_detect.rs @@ -196,13 +196,13 @@ pub fn run_leak_detect(config: &BenchConfig, kernel: &Arc, pool: &Ar ExitCode::SUCCESS } -/// S1 校准用例:共享 kernel 下循环 3000 次「新建 VM → 跑微源 → drop」, +/// vm_creation 校准用例:共享 kernel 下循环 3000 次「新建 VM → 跑微源 → drop」, /// 每 100 次采一次 VmRSS,度量 VM 创建/销毁路径(含 session 收尾统一 /// 释放)的内存增量,期望走平。 /// /// # 注意事项 -/// 不走 VM 池:池的锁/condvar 噪音与本测面无关;出斜率先查 harness -/// 污染(allocator 归还 OS 延迟),再疑收尾释放不全。 +/// 不走 VM 池:池的锁/condvar 噪音与本用例观测面无关;出斜率先查 harness 污染 +/// (基准脚手架自身引入的测量噪声,如 allocator 归还 OS 延迟),再疑收尾释放不全。 pub fn run_mem_vm_creation_leak(kernel: &Arc) -> ExitCode { const ITERATIONS: usize = 3000; const SAMPLE_EVERY: usize = 100; @@ -302,7 +302,7 @@ pub fn run_mem_builtin_world_build(kernel: &Arc) -> ExitCode { ExitCode::SUCCESS } -/// S2 校准用例:单 VM 每轮「新键写脏 object/array/string 三家族原型 → +/// dirty_rebuild 校准用例:单 VM 每轮「新键写脏 object/array/string 三家族原型 → /// full_reset」,共 3000 轮,每 10 轮采一次 VmRSS,输出选择性重建释放 /// 路径的每轮内存增量(斜率 + 窗口总增量)。 /// @@ -458,7 +458,7 @@ pub fn run_mem_closure_dead_leak(kernel: &Arc) -> ExitCode { /// # 注意事项 /// 不走 VM 池:drop clean 路径与池内归还走同一 `full_reset`,池锁/condvar /// 噪音与本测面无关。重源瞬时对象全 epoch 分配、不逃逸 global;锚 == 0 为 -/// 确定性主门槛(in-engine,免分配器噪音),RSS 为次锚(进程级,仅判 +/// 确定性主门槛(in-engine,免分配器噪音),RSS 序列为次锚(进程级辅助指标, /// 峰后无新增量——归还 chunk 可能滞留分配器自由链不回 OS,不要求回落 /// 峰前)。 pub fn run_mem_pool_high_water(kernel: &Arc) -> ExitCode { @@ -604,7 +604,7 @@ pub fn run_mem_object_churn_peak(kernel: &Arc) -> ExitCode { /// 生产字面量短串面)→ 11 采样点 [10k,15k,20k,30k,40k,60k,80k,100k, /// 131072,160k,200k] 采 VmRSS。增长相斜率只记录不判定(append-only /// 增长,正斜率即预期签名,"斜率>0 即 fail" 契约不适用,独立打印逻辑, -/// 不进 `report_series`);重建相验"无存活 VM"边界重建:键数超阈值 → +/// 不进 `report_series`);重建相(drop 旧 kernel 重建新 kernel)验"无存活 VM"边界重建:键数超阈值 → /// `should_rebuild_perm` 返回 `Some(建议上限)`(阈值取 2 的幂后加倍)→ /// drop 旧 kernel → 新 kernel 严格主锚 `entry_count` 恰 0 + 旋钮 `None`。 /// diff --git a/crates/oxide_cli/src/bench/mod.rs b/crates/oxide_cli/src/bench/mod.rs index 71d41f6b..d85779e6 100644 --- a/crates/oxide_cli/src/bench/mod.rs +++ b/crates/oxide_cli/src/bench/mod.rs @@ -36,7 +36,7 @@ pub fn run_benchmarks(config: BenchConfig, kernel: Arc, pool: Arc js_stress::run_js_stress_bench(&config, &kernel, &pool), "rust" => rust_bench::run_rust_bench(config.filter.as_deref()), - // leak 模式内按 case 过滤参数分派校准用例;缺省保持原泄漏检测行为。 + // leak 模式按 case 过滤参数分派校准用例;无匹配 case 时跑默认的固定脚本内存回归(run_leak_detect)。 "leak" => match config.filter.as_deref() { Some("vm_creation") => leak_detect::run_mem_vm_creation_leak(&kernel), Some("builtin_world_build") => leak_detect::run_mem_builtin_world_build(&kernel), diff --git a/crates/oxide_cli/src/bench/output.rs b/crates/oxide_cli/src/bench/output.rs index 5887e9e6..e13ba1cf 100644 --- a/crates/oxide_cli/src/bench/output.rs +++ b/crates/oxide_cli/src/bench/output.rs @@ -16,7 +16,7 @@ const MEMORY_BENCH_NOTES: &str = "\n内存基准用例(mem_*):\n mem_set_retain 原生盒边持有:Set 持 20000 个对象(各带 payload 字符串) mem_string_rope 拼接 rope 链留存:重复二元拼接形成深 Cons 链(账目按逻辑长度计,数值高于实际足迹) 口径:Peak B/Ret B 为 session 堆账目(对象头 + 堆数据 + 存活串/BigInt);epoch arena -的临时驻留无字节账目(既有口径,数量见 JSON 的 epoch_objects)。Peak B 为顶层指令 +的临时驻留不计入字节账目(数量见 JSON 的 epoch_objects)。Peak B 为顶层指令 边界采样的 session arena 高水位;单指令内瞬态与 epoch 高水位不计。Ret B 为 workload 后 晋升 + 完整 GC 的真存活集,至多含一份引擎内部副本:逃逸屏障留 epoch 原件且顶层 寄存器根不回写时,测量时晋升会把原件再克隆一份(object_graph 见留存锚测试)。 diff --git a/crates/oxide_cli/src/main.rs b/crates/oxide_cli/src/main.rs index ea8ff854..57553859 100644 --- a/crates/oxide_cli/src/main.rs +++ b/crates/oxide_cli/src/main.rs @@ -395,7 +395,7 @@ fn repl() -> ExitCode { input_buf.clear(); if result == ExitCode::FAILURE { - // eval_repl already printed error; keep buffer cleared. + // eval_repl 已打印错误,此处仅保持缓冲区已清空,避免重复输出。 } } Err(ReadlineError::Interrupted) => {