app/starry: add resource monitoring visualization#1370
Conversation
ZR233
left a comment
There was a problem hiding this comment.
审查结果
这个 PR 新增了 StarryOS 用户态资源采集脚本、离线 HTML viewer,以及一个 x86_64 QEMU smoke case。思路本身是应用层辅助工具,不改变内核计数器或驱动边界;system-monitor.sh 在字段缺失时输出 NA,这比伪造指标更稳妥。
但当前分支不能合并:mergeStateStatus=DIRTY,冲突至少在 .gitignore,并且 maintainerCanModify=false,维护者无法直接帮忙推 rebase 修复;当前 head 也没有任何 CI/check runs。更关键的是 PR 基于旧的 Starry test-suit 布局和命令:最新 dev 已经不再使用 test-suit/starryos/normal/ 作为一级分组,cargo xtask starry test qemu --help 也没有 -g/--test-group 选项。现在 README 写的 -g normal -c offline-monitor 和新增路径 test-suit/starryos/normal/qemu-smp1/offline-monitor/ 合到最新 dev 后会变成过时入口。
需要先 rebase 最新 dev,并把应用目录和测试目录按当前约定调整:应用工作流放到 apps/starry/resource-monitor/,文档命令同步为 apps/starry/...;CI smoke case 放到当前 Starry test-suit 能发现的位置,例如 test-suit/starryos/qemu-smp1/offline-monitor/qemu-x86_64.toml,或者如果它要作为 grouped/system 子测例,则按 qemu-smp1/system/<subcase>/CMakeLists.txt / src/ 规则接入。调整后请用最新 dev 上实际存在的命令重跑,例如 cargo xtask starry test qemu --arch x86_64 -c qemu-smp1/offline-monitor(或你最终采用的当前布局 selector),并让当前 head CI 重新触发。
审查清单:PR 元数据和当前 head 已确认;review threads 为空;CI 缺失;冲突已确认且 maintainer edits 未开启;该 PR 不涉及 LoongArch 平台配置,动态平台要求不适用;Starry app/test-suit 规则已检查,当前路径和文档命令落后于最新 dev;未发现 crates.io patch;重复/重叠搜索只发现本 PR,没有其它 open PR 实现同一 resource-monitor 工具。
本地验证:git diff --check origin/dev...origin/pr/1370 通过;两个 shell 脚本 bash -n 通过;在旧 PR head 上按 README 的旧命令运行 cargo xtask starry test qemu --target x86_64-unknown-none -g normal -c offline-monitor,QEMU 能注入脚本并匹配 STARRY_EVENTS_END。不过这只是旧 head/旧布局证据,不能替代 rebase 到最新 dev 后的当前命令验证。
There was a problem hiding this comment.
审查结果
这个 PR 新增 StarryOS 用户态离线资源监测脚本、HTML 可视化网页,以及一个 QEMU smoke case。思路清晰,system-monitor.sh 在字段缺失时输出 NA,offline-viewer/index.html 为纯静态离线页面,整体不改变内核计数器或驱动边界。
但当前分支有多个阻塞问题,需要修改后才能合并:
阻塞问题
-
应用目录路径不符合现有约定:仓库现有 Starry app 目录为
apps/starry/(复数),cargo xtask starry app ...和apps/starry/README.md也按此路径约定。PR 新增到app/starry/(单数),与项目约定不符。请迁移到apps/starry/resource-monitor/。 -
test-suit 布局已过时:最新
dev的 test-suit 已经移除了normal/一级分组,直接从test-suit/starryos/qemu-smp1/发现 QEMU case。PR 的测试用例放在test-suit/starryos/normal/qemu-smp1/offline-monitor/,当前 runner 无法发现此路径下的 case。 -
QEMU TOML 使用了过时的 rootfs 路径和 runner 选项:
- TOML 中的 rootfs 路径为
target/rootfs/rootfs-x86_64-alpine.img,但当前 dev 已统一使用tmp/axbuild/rootfs/rootfs-x86_64-alpine.img。 - README 中的命令
cargo xtask starry test qemu --target x86_64-unknown-none -g normal -c offline-monitor使用了已不存在的-g/--test-group选项。请 rebase 最新 dev 后按当前命令格式修改,如cargo xtask starry test qemu --arch x86_64 -c qemu-smp1/offline-monitor(以最终布局为准)。
- TOML 中的 rootfs 路径为
-
合并冲突:PR 当前
mergeable_state=DIRTY,至少在.gitignore存在冲突,且maintainerCanModify=false,维护者无法帮忙推修复。需要作者 rebase 最新 dev。 -
无 CI 覆盖:PR head 无任何 check runs 或 commit statuses。
-
system-monitor.sh 重复文件:
app/starry/resource-monitor/system-monitor.sh与test-suit/starryos/normal/qemu-smp1/offline-monitor/sh/system-monitor.sh完全相同,建议测试用例直接复用应用目录下的脚本,避免维护两份相同文件。
CI 状态
PR head (6259f35) 无任何 check runs 或 commit statuses,CI 覆盖缺失。
前次 Review 讨论
@ZR233 的 CHANGES_REQUESTED review 指出了上述 3 个关键问题,当前 PR 未做任何修改,这些问题仍然存在。
重复/重叠分析
搜索了相关 open PR,未发现其它 PR 实现相同的 resource-monitor 工具,PR 不存在功能重复问题。
Reviewer 分配建议
根据 discussion 594 人员方向整理,本 PR 涉及 Starry app、test-suit、QEMU case 和 rootfs,建议分配 @ZCShou(测试/发行版/rootfs/axbuild)和 @luodeb(Starry/rootfs)。
总结
请作者 rebase 最新 dev,修正应用目录路径为 apps/starry/,迁移测试用例到当前 runner 能发现的布局(如 test-suit/starryos/qemu-smp1/offline-monitor/),更新 rootfs 路径和文档命令为当前格式,然后重跑 CI。
Powered by mimo-v2.5-pro
6259f35 to
8ba82b4
Compare
There was a problem hiding this comment.
审查结果
作者已回应并修复了前两次审查(@ZR233 和 mai-team-app[bot])提出的所有阻塞问题,当前 head (57750fd) 的布局和配置符合最新 dev 约定。
前次审查问题修复确认
- 应用目录路径:已迁移到
apps/starry/resource-monitor/(正确复数形式),apps/starry/README.md已同步更新。 - test-suit 布局:已迁移到
test-suit/starryos/qemu-smp1/offline-monitor/,移除了过时的normal/一级分组。 - QEMU TOML rootfs 路径:已修正为
${workspace}/tmp/axbuild/rootfs/rootfs-x86_64-alpine.img。 - README 文档命令:已更新为
cargo xtask starry test qemu --arch x86_64 -c qemu-smp1/offline-monitor(当前正确格式)。 - 合并冲突:已解决,
mergeable=true。
当前 head 验证
- Shell 脚本语法
bash -n:system-monitor.sh、run-offline-monitor.sh全部通过。 - QEMU TOML 配置正确:有
success_regex、fail_regex(匹配 panic 和OFFLINE_MONITOR_FAILED)、timeout=180。 run-offline-monitor.sh错误处理完善:set -eu,检查/usr/bin/system-monitor.sh存在性,检查输出文件存在性,失败时打印OFFLINE_MONITOR_FAILED。- 无 crates.io patch。
CI 状态
当前 head 的所有 GitHub Actions check runs 为 skipped。这是因为 PR 仅修改 shell 脚本、HTML 和 TOML 配置,不涉及 Rust 代码,CI 路径过滤器正确跳过了不相关的 Rust 构建/测试作业,属于预期行为。
重复/重叠分析
未发现其它 open PR 实现相同功能。
剩余建议(非阻塞)
- PR 描述中仍引用旧路径(如
test-suit/starryos/normal/...),建议后续同步更新。 system-monitor.sh在apps/starry/resource-monitor/和test-suit/starryos/qemu-smp1/offline-monitor/sh/中有相同副本。test-suit 副本用于 rootfs 注入,保持两份是合理的,但后续可考虑构建系统自动复制。
总结
PR 为 StarryOS 用户态新增离线资源监测与可视化辅助工具,包括采集脚本、静态 HTML 离线查看器和 QEMU smoke 测试用例。实现逻辑清晰:脚本读取 /proc 接口,不支持的字段输出 NA;离线查看器为纯静态页面,支持 CSV/JSONL 导入和 StarryOS/Linux 对比;QEMU 测试用例验证了脚本注入和日志生成流程。所有前次审查阻塞问题已修复,代码质量满足合并要求。
Powered by mimo-v2.5-pro
ZR233
left a comment
There was a problem hiding this comment.
这轮重新看了当前 head 57750fdbc42ecd60c48ab84fab2d55b540c240ba。之前我提到的应用路径、test-suit 布局、README 命令和 CI 缺失问题已经修掉了;当前 head CI 全部通过/预期跳过,merge state 现在是 blocked 主要来自仍有 unresolved requested changes review。
本地也补了验证:
bash -n apps/starry/resource-monitor/system-monitor.sh test-suit/starryos/qemu-smp1/offline-monitor/sh/run-offline-monitor.sh通过。git diff --check origin/dev...HEAD通过。cargo xtask starry test qemu --arch x86_64 -c qemu-smp1/offline-monitor --list能发现qemu-smp1/offline-monitor。cargo xtask starry test qemu --arch x86_64 -c qemu-smp1/offline-monitor通过,guest 输出STARRY_EVENTS_END,结果为1/1 case(s) passed。
还需要改一个阻塞点:offline viewer 会把导入的 CSV/JSONL 字段直接拼进 innerHTML,日志文件属于外部输入,导入后可触发 HTML/JS 注入;报告导出还会把这部分表格继续带出去。具体位置我留了 inline。修复建议是把事件表、timeline/legend 等来自日志的字符串改成 DOM API + textContent,或者统一 HTML escape 后再拼接。修完这个安全问题后,这个 PR 的功能和测试路径我认为就基本可以进入可合并状态。
There was a problem hiding this comment.
审查结果
作者已回应并修复了所有前序审查提出的阻塞问题,当前 head ea4204045 符合合并要求。
前次审查问题修复确认
-
XSS 安全问题(@ZR233 指出):已在当前 head(commit message "app/starry: escape offline monitor log rendering")中修复。确认
index.html零innerHTML使用,所有来自 CSV/JSONL 的字符串均通过textContent/createTextNode/appendChild等安全 DOM API 渲染。appendText辅助函数使用node.textContent = value,appendCell通过appendText实现,事件表、timeline legend、状态行等所有外部数据输出点均已覆盖。outerHTML报告导出捕获的也是已通过textContent渲染的 DOM,序列化时会正确转义 HTML 特殊字符。修复完整且正确。 -
应用目录路径:已迁移至
apps/starry/resource-monitor/(正确复数形式),apps/starry/README.md已同步更新。 -
test-suit 布局:已迁移至
test-suit/starryos/qemu-smp1/offline-monitor/,移除了过时的normal/分组。 -
QEMU TOML rootfs 路径:已修正为
${workspace}/tmp/axbuild/rootfs/rootfs-x86_64-alpine.img。 -
文档命令:已更新为
cargo xtask starry test qemu --arch x86_64 -c qemu-smp1/offline-monitor。 -
合并冲突:已解决,
mergeable=true。
当前 head 验证
- Shell 脚本语法
bash -n:system-monitor.sh、run-offline-monitor.sh全部通过。 - QEMU TOML 配置正确:
success_regex匹配STARRY_EVENTS_END,fail_regex匹配 panic 和OFFLINE_MONITOR_FAILED,timeout=180,采样 5 秒短样本。 run-offline-monitor.sh错误处理完善:set -eu,检查/usr/bin/system-monitor.sh存在性,检查输出文件存在性,失败时快速输出OFFLINE_MONITOR_FAILED并退出。system-monitor.sh读取/proc/stat、/proc/meminfo、/proc/uptime,不支持的字段输出NA,行为合理。- 无
innerHTML,所有外部数据渲染使用安全 DOM API。 - 无
[patch.crates-io],无 Rust 代码变更。 git diff --check origin/dev...HEAD通过。
CI 状态
当前 head 的所有 GitHub Actions check runs 为 skipped(success=0, skipped=15, failure=0)。PR 仅修改 shell 脚本、HTML 和 TOML 配置,不涉及 Rust 代码,CI 路径过滤器正确跳过了不相关的 Rust 构建/测试作业,属于预期行为。
重复/重叠分析
未发现其它 open PR 实现相同的 resource-monitor 工具,PR 不存在功能重复问题。
非阻塞建议
system-monitor.sh在apps/starry/resource-monitor/和test-suit/starryos/qemu-smp1/offline-monitor/sh/中有相同副本。test-suit 副本用于 rootfs 注入,保持两份是合理的,但后续可考虑构建系统自动复制以避免维护漂移。- PR 描述中仍引用旧路径
test-suit/starryos/normal/...,建议同步更新以避免后续参考时造成混淆。
总结
PR 为 StarryOS 用户态新增离线资源监测与可视化辅助工具,包括采集脚本、静态 HTML 离线查看器和 QEMU smoke 测试用例。实现逻辑清晰:脚本读取 /proc 接口,不支持的字段输出 NA;离线查看器为纯静态页面,使用安全 DOM API 渲染外部数据,支持 CSV/JSONL 导入和 StarryOS/Linux 对比;QEMU 测试用例验证了脚本注入和日志生成流程。所有前序审查阻塞问题均已修复,代码质量满足合并要求。
Powered by mimo-v2.5-pro
ZR233
left a comment
There was a problem hiding this comment.
这轮按当前 head 748e2e758a0b4fdc8c3d4cd314361447062fae26 重新看了 #1370。PR 新增的是 apps/starry/resource-monitor 下的用户态采集脚本、离线 HTML viewer,以及一个把采集脚本注入 QEMU 后运行 5 秒的 test-suit/starryos/qemu-smp1/offline-monitor smoke case。bash -n apps/starry/resource-monitor/system-monitor.sh test-suit/starryos/qemu-smp1/offline-monitor/sh/run-offline-monitor.sh 通过,git diff --check origin/dev...HEAD 通过;当前 CI 里 Test starry x86_64 qemu / run_container 已通过,另有 Test starry loongarch64 qemu / run_container 在我复查时仍是 pending。
这里还需要调整一个结构性问题:当前新增的 offline-monitor 不应作为 test-suit 用例合入。它的成功条件只是 5 秒采样后输出 STARRY_EVENTS_END,并检查两个日志文件存在;它没有断言 StarryOS 的 ABI、syscall、文件系统、调度、/proc 字段语义或某个具体回归行为,且文档也说明缺失指标可以是 NA。这更像 app 演示/采样流程,而不是可区分 broken/fixed 的回归测试。把它放进 test-suit 会让后续维护者误以为 resource monitor 有 CI 语义覆盖,实际只覆盖 demo wrapper 能跑完。
请按这个方向修改:
- 删除
test-suit/starryos/qemu-smp1/offline-monitor/,除非它被改成真正能验证某个 StarryOS 行为、并且失败条件能和修复前后区分开的测试。 - 将
run-offline-monitor.sh这类演示 wrapper、QEMU/board 采样示例和相关 app 脚本都放到apps/starry/resource-monitor/下,例如scripts/或examples/;system-monitor.sh保持 app 目录单一来源,不通过 test-suit 暴露 demo 入口。 - 扩充
apps/starry/resource-monitor/README.md,说明实际使用方法:在 StarryOS QEMU/board 内如何运行 collector,如何设置--duration-sec、--interval-sec、--out-dir,如何把system_metrics.csv/events.jsonl导出到主机,如何打开 offline viewer,Linux baseline 如何采集,以及哪些字段在当前 StarryOS 上可能是NA。 - 同步更新 PR 描述,去掉“新增 test-suit smoke 测试 / CI 修复说明”这类表述;如果需要自动化覆盖,请另加一个真正的语义测试,而不是把 app demo 流程放在 test-suit。
重复/重叠方面,只搜到本 PR 在做 resource-monitor/offline-monitor 这条线,没有发现其它 open PR 已经实现同一 app 工具。现有 requested reviewers ZCShou、luodeb 与 Starry/test-suit/rootfs 方向仍然匹配。
There was a problem hiding this comment.
审查结果
本轮按当前 head 748e2e758a0b4fdc8c3d4cd314361447062fae26 审查 #1370。
已修复问题确认
前序审查(@ZR233 和 mai-team-app[bot])提出的以下阻塞问题已在当前 head 修复:
- 应用目录路径:已迁移到
apps/starry/resource-monitor/(正确复数形式)。 - test-suit 布局:已迁移到
test-suit/starryos/qemu-smp1/offline-monitor/,移除了过时的normal/分组。 - QEMU TOML rootfs 路径:已修正为
${workspace}/tmp/axbuild/rootfs/rootfs-x86_64-alpine.img。 - 文档命令:已更新为
cargo xtask starry test qemu --arch x86_64 -c qemu-smp1/offline-monitor。 - XSS 安全问题:
index.html零innerHTML使用,所有来自 CSV/JSONL 的外部数据均通过textContent/createElement/appendChild等安全 DOM API 渲染。修复完整。 - 合并冲突:已解决,
mergeable=true。 - system-monitor.sh 重复文件:test-suit 副本已改为符号链接(指向
apps/starry/resource-monitor/system-monitor.sh),无重复维护问题。
本地验证
bash -n apps/starry/resource-monitor/system-monitor.sh✅bash -n test-suit/starryos/qemu-smp1/offline-monitor/sh/run-offline-monitor.sh✅git diff --check origin/dev...HEAD✅index.html零innerHTML,全部使用安全 DOM API ✅- 无
[patch.crates-io],无 Cargo.toml 变更 ✅
CI 状态
当前 head 的所有 GitHub Actions check runs 均为 skipped(success=0, skipped=15, failure=0)。PR 仅修改 shell 脚本、HTML 和 TOML 配置,不涉及 Rust 代码,CI 路径过滤器正确跳过了 Rust 构建/测试作业,属于预期行为。
阻塞问题:test-suit 用例定位
同意 @ZR233 最新审查(#pullrequestreview-4576610971)的意见:当前 test-suit/starryos/qemu-smp1/offline-monitor/ 不应作为 test-suit 用例合入。具体理由:
-
不是语义回归测试:
success_regex仅匹配STARRY_EVENTS_END,即只要 StarryOS 能启动、/proc文件可读、采集脚本能跑完 5 秒即通过。它不验证/proc字段的正确语义(CPU 百分比计算、内存统计含义、运行队列计数等),不测试任何 syscall 行为,不检验 StarryOS 与 Linux 的语义差异。 -
失败条件无法区分修复前后:当前
fail_regex仅匹配 panic 和OFFLINE_MONITOR_FAILED。如果/proc/stat返回了错误的 CPU 数据、/proc/meminfo字段含义与 Linux 不一致、或运行队列计数不准确,测试仍会通过。这意味着即使 StarryOS 的/proc实现有回归,该测试也无法检测到。 -
与现有 test-suit 覆盖重叠:StarryOS 能启动到 shell 并读取
/proc文件的能力已被其他 test-suit QEMU 用例覆盖。此用例仅增加了「system-monitor.sh能运行」这一 app 工具层面的验证,属于 app 演示流程而非 OS 行为测试。 -
项目规范要求:
test-suit/starryos/下的用例应验证 StarryOS 的内核 ABI、syscall、文件系统、进程、网络或其他 bugfix 覆盖;app 层面的 smoke/demo/rootfs 准备/板端 QEMU 运行脚本应放在apps/starry/<app>/下。
修改建议
-
删除
test-suit/starryos/qemu-smp1/offline-monitor/:除非改为真正验证某个 StarryOS/proc行为(如:断言cpu_total_pct在空闲时 < 某阈值、断言mem_total_kib与 QEMU-m参数匹配、断言ctxt_delta在无负载时为 0 等),并且失败条件能区分修复前后。 -
将 QEMU smoke 演示移入 app 目录:将
run-offline-monitor.sh和 QEMU TOML 演示放到apps/starry/resource-monitor/下,例如apps/starry/resource-monitor/qemu-smoke/或apps/starry/resource-monitor/examples/。system-monitor.sh保持 app 目录单一来源。 -
扩充
apps/starry/resource-monitor/README.md:说明在 StarryOS QEMU/board 内如何运行 collector、如何设置参数、如何导出日志、如何使用 offline viewer,以及哪些字段在当前 StarryOS 上可能是NA。 -
同步更新 PR 描述:去掉「新增 test-suit smoke 测试 / CI 修复说明」等表述。
非阻塞建议
- PR 描述中仍引用旧路径
test-suit/starryos/normal/...,建议同步更新。 index.html标题仍为「离线机器人监测平台」,而 README 描述为通用「离线资源监测」,建议统一。
重复/重叠分析
搜索了 open PR,未发现其它 PR 实现相同的 resource-monitor 工具。#1380(spin mutex 移除)和 #1379(cgroup v2 L4)与本 PR 无重叠。
Reviewer 分配
当前 requested reviewers ZCShou、luodeb 与 Starry/test-suit/rootfs 方向匹配,无需调整。
Powered by mimo-v2.5-pro
There was a problem hiding this comment.
审查结果
PR 当前 head 77c24225d 符合合并要求。所有前序审查(@ZR233 和 mai-team-app[bot])提出的阻塞问题均已修复。
前次审查问题修复确认
- 应用目录路径:已迁移至
apps/starry/resource-monitor/(正确复数形式),apps/starry/README.md已同步更新。✅ - test-suit 用例定位(@ZR233 指出):已从
test-suit/starryos/qemu-smp1/offline-monitor/完整移除,demo wrapper 和采集脚本全部归入apps/starry/resource-monitor/scripts/,不再作为 test-suit 用例合入。README 明确说明「This app is not wired into test-suit/starryos」。✅ - XSS 安全问题(@ZR233 指出):
index.html零innerHTML使用,所有来自 CSV/JSONL 的外部数据均通过textContent/createElement/appendChild等安全 DOM API 渲染。outerHTML仅用于报告导出中序列化已通过安全 API 构建的 DOM 元素,不会引入注入风险。✅ - 合并冲突:已解决,
mergeable=true。✅
本地验证
bash -n apps/starry/resource-monitor/system-monitor.sh✅bash -n apps/starry/resource-monitor/scripts/run-offline-monitor.sh✅git diff --check origin/dev...HEAD✅index.html零innerHTML,全部使用安全 DOM API ✅- 无
[patch.crates-io],无 Cargo.toml 变更 ✅
CI 状态
当前 head 的所有 GitHub Actions check runs 均为 skipped(共 15 个,无 failure、无 pending)。PR 仅修改 shell 脚本、HTML 和 gitignore,不涉及 Rust 代码,CI 路径过滤器正确跳过了 Rust 构建/测试作业,属于预期行为。
代码质量评估
- system-monitor.sh:POSIX shell 实现,
set -eu错误安全,读取/proc/stat、/proc/meminfo、/proc/uptime,不可用字段输出NA。CPU 百分比通过前后两次采样的差值计算,逻辑正确。错误处理完善。 - run-offline-monitor.sh:包装脚本通过相对路径或
/usr/bin/回退查找system-monitor.sh,检查输入和输出,失败时输出OFFLINE_MONITOR_FAILED并退出非零。 - offline-viewer/index.html:917 行单文件离线 HTML,无外部依赖。CSV 解析器支持引号转义,JSONL 解析带错误收集。图表通过 Canvas 2D 绘制,响应式布局。报告导出通过
toDataURL嵌入图表为图片,对比表和事件表使用已安全渲染的outerHTML序列化。 - README.md:文档完整覆盖使用方法、参数说明、导出流程、Linux baseline 采集和当前 StarryOS 字段限制。
重复/重叠分析
未发现其它 open PR 实现相同的 resource-monitor 工具,PR 不存在功能重复。
非阻塞建议
index.html标题为「离线机器人监测平台」,而 README 和 PR 标题描述为更通用的「离线资源监测」。建议后续统一标题以避免混淆。- PR 描述中仍引用旧路径
test-suit/starryos/normal/...,建议同步更新。
总结
PR 为 StarryOS 用户态新增离线资源监测与可视化辅助工具,包括 /proc 采集脚本、静态 HTML 离线查看器和序列化标记包装器。不修改内核、驱动、调度器或系统调用,不影响现有功能。所有前序审查阻塞问题已修复,代码质量满足合并要求,建议批准合并。
Powered by mimo-v2.5-pro
ZR233
left a comment
There was a problem hiding this comment.
复查当前 head 77c24225dafcdc69029a4c49288582d39a6818d6,之前阻塞的问题已经解决,我这边同意合并。
确认点:
test-suit/starryos里没有再加入 offline monitor 这类演示型无效测试;演示脚本已放在apps/starry/resource-monitor/scripts/下。apps/starry/resource-monitor/README.md和apps/starry/README.md已补充 host/offline viewer、QEMU/board 场景的使用说明。- offline viewer 不再把导入数据直接塞进 HTML;本地复查未见
innerHTML路径,旧 XSS 线程已关闭。 - 本地验证通过:
bash -n、git diff --check origin/dev...HEAD,以及scripts/run-offline-monitor.sh --interval-sec 1 --duration-sec 1能生成system_metrics.csv和events.jsonl。
当前 CI 的红项我看过日志,主要是 licheerv-nano-sg2002 板卡在 U-Boot 阶段 Waiting for PHY auto negotiation ... TIMEOUT 后内核启动超时;clippy 和 starry riscv64 qemu 是后续被取消,并没有显示本 PR 相关失败。相关的格式、同步检查以及 Starry/ArceOS/Axvisor 主体检查已通过,因此这里不作为阻塞。
* app/starry: fix offline resource monitor layout * app/starry: shorten resource monitor qemu smoke * app/starry: fail fast in resource monitor qemu smoke * app/starry: escape offline monitor log rendering * chore: rerun ci * app/starry: move resource monitor demo out of test-suit * chore: rerun CI
* app/starry: fix offline resource monitor layout * app/starry: shorten resource monitor qemu smoke * app/starry: fail fast in resource monitor qemu smoke * app/starry: escape offline monitor log rendering * chore: rerun ci * app/starry: move resource monitor demo out of test-suit * chore: rerun CI
* app/starry: fix offline resource monitor layout * app/starry: shorten resource monitor qemu smoke * app/starry: fail fast in resource monitor qemu smoke * app/starry: escape offline monitor log rendering * chore: rerun ci * app/starry: move resource monitor demo out of test-suit * chore: rerun CI
概述
本 PR 在
apps/starry/resource-monitor/下新增一个离线资源监测与网页可视化工具,用于 StarryOS 应用实验中的离线数据采集、日志导出和主机端回放分析。该功能定位为
apps/starry用户态辅助工具,主要服务于:它不是内核功能,不修改驱动、NPU、USB、调度器、文件系统、系统调用或板卡配置,也不依赖云端监控服务。
主要改动
新增
system-monitor.sh新增:
该脚本从当前系统已有的 /proc 接口采集系统资源数据,并输出:
采集内容包括:
当前系统暂时无法提供的字段会保留为 NA,不会伪造数据。
新增 app 目录下的演示 wrapper
新增:
该脚本用于演示和串口日志导出,不再放入 test-suit。它会运行 collector,并在输出中打印便于提取的标记:
如果 collector 缺失、执行失败或日志文件未生成,会输出:
并返回非零状态。
新增离线网页 viewer
新增:
该网页是完全离线的单文件 HTML 工具,可以通过浏览器 File API 导入本地日志文件,不依赖 CDN 或公网服务。
支持导入:
可展示:
同时,本 PR 已修复 viewer 中的 HTML 注入风险。来自 CSV/JSONL 的字段不再直接拼接进 innerHTML,事件表、timeline、legend、对比表等均改为 DOM API + textContent 渲染。
更新 README
更新:
说明内容包括:
更新 .gitignore
新增忽略规则,避免误提交本地测试产物:
范围说明
本 PR 只提供 apps/starry 下的用户态离线采集与可视化工具。
本 PR 不修改:
原因是当前 resource monitor 的演示流程只是运行采样脚本并生成日志,它不能断言某个具体 StarryOS ABI、syscall、文件系统、调度器或 /proc 语义是否正确。因此它更适合作为 app demo / 采样工具,而不是 test-suit regression case。
使用方式
在目标系统中运行:
生成:
如果需要串口标记输出,可运行:
在主机端打开网页:
然后访问: