Skip to content

开机守护每分钟采样内存,大幅变化时记录,退出时汇总 - #153

Open
jinghero wants to merge 1 commit into
ModAVD:mainfrom
jinghero:codex/issue-159-memory-sampling-20261113
Open

jinghero wants to merge 1 commit into
ModAVD:mainfrom
jinghero:codex/issue-159-memory-sampling-20261113

Conversation

@jinghero

Copy link
Copy Markdown
Collaborator

开机守护改为每 60 秒采样。提交量相对上一次写出的值,绝对变化超过 256 MiB 时提前记一行;稳定时每 10 分钟保底。读取失败后按分钟重试,恢复时补一行。采样独立于客体重启调优,整机计数仍只在写日志时读取。

退出汇总分别写出最后成功样本的时间和计数、采样最大提交量与工作集、成功次数与进程读取失败次数。OS 提交峰值来自最后一次成功读取的 PeakPagefileUsage,明确标注“精确退出峰值未知”。Windows 可能对仍被句柄保留的已退出进程返回成功及缩水后的计数,因此内存读取增加退出检查,继续保留 PID 与创建时间核对。问题包中的日志提示同步新频率,原有日志收集和轮转沿用。

验证通过:

  • Go 1.26.5 构建管理器与 CLI;go test ./...,最终调整后重跑 go test ./internal/emu ./internal/report ./internal/win -count=1;Windows、darwin/arm64、linux/amd64 的 go vet ./...。
  • 确定性测试覆盖阈值相等与双向变化、累计变化、十分钟边界、静默样本最大值、失败恢复、客体读取阻塞与退出。原生测试覆盖创建时间不符和保留句柄后的已退出进程;两项回归在修复前失败。7 处定向变异均被行为断言抓住。
  • gofmt、diff 检查、隐私与作者检查,以及 CI 中的 JavaScript 和 Python 脚本测试。
  • Windows 11 上用现有模拟器程序和独立 SDK 副本,新建无账号、无执行桥的 3 GiB 测试实例。软件渲染下完成初始化、启动、客体重启及调优恢复、两次一分钟采样和正常关机。QEMU 身份未变,只写一次退出汇总;关机结果为 graceful、synced=true,测试进程和端口已清理。

首次硬件渲染初始化时模拟器退出,日志末尾有 OpenGL 错误,所以实机验收使用软件渲染。未验证游戏、图形界面、整夜运行或真实十分钟等待;十分钟时序由确定性测试覆盖。没有编译模拟器,也不涉及 #156 的泄漏根因。

Refs ModAVD/ModAVD#159

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant