• 全新单提交:清除含敏感信息的旧历史(sudo 口令、内网 IP、SSH 密钥路径、热点 SSID、设备 MAC) • 本地开发文档/测试记录/构建脚本全部移入 gitignored 的 devdocs/ 与 scripts/build/(不入库) • 保留:MeowOS 源码(launcher/watchdog/bootmenu/meow_svcd/SDK)、项目规范文档、mips-repo 增补组件:SDK 统一日志+通知 API、meow_svcd 服务管理器、mips-repo 软件仓库
3.8 KiB
3.8 KiB
MeowOS 统一系统性能调度器(PERF_SCHEDULER.md)
状态:设计蓝图(2026-08-29)。后续阶段实现(阶段 B/B2 之后,或与框架并进)。M2.16 的刷新率调度是它的第一个子模块,后续统一收进 meow_sched。
更新(M2.28 / A-1+A-2,2026-08-29):显示刷新率调度(60/30/15 档 + 自适应降档 + always_max) 已从 launcher 迁出、归口 SDK 渲染后端——
sdk/meow_ui_gfx.c的present()(meow_ui_flush()上屏)内嵌帧率门控 + governor,公共接口meow_ui_set_refresh_rate()/meow_ui_set_refresh_always_max()(已入meow_ui.h§7.1)。launcher 与 app 现统一走 SDK 的 present 帧率门控,不再各自内联一套。 后续(S1)仍按原计划把该子模块进一步收进meow_sched(meow_sched_fps()),SDK present 只作为 执行器(消费meow_sched下发的档位)。
0. 目标与一句话
在资源紧张(64MB RAM、单核 X1600E、无 GPU)下,统一治理"性能 vs 功耗 vs 流畅度":用中央调度器按策略(平衡/性能/续航)分配显示刷新率、CPU/频率、前后台应用优先级、温控——避免各模块零散自己降频/跳帧。
1. 管辖子域
| 子域 | 内容 | 现状/未来 |
|---|---|---|
| 显示刷新率 | 60/30/15 档 + 自适应降档 + always_max | M2.16 内联在 launcher;M2.28(A-1/A-2)已归口 SDK present(meow_ui_set_refresh_rate/always_max,meow_ui_gfx.c);以后仍计划收进 meow_sched(meow_sched_fps()) |
| CPU/频率 | 若 X1600E cpufreq 可控(/sys/devices/system/cpu/cpu0/cpufreq/),按策略设 governor/频率 | 待测(可能无 cpufreq,简化为核数/负载建议) |
| 前后台优先级 | 前台应用/会话 = 满额;后台服务/空闲 = 低优先、省电 | MeowOS 已有前台会话概念,纳入调度 |
| 温控 | /sys/class/thermal 读取,超阈值降档 | 待测(thermal_zone 可能仅 1 个) |
| 功耗策略 | 平衡/性能/续航 三种 policy(settings power.mode) |
设置项 + web |
2. 设计
- 中央调度:
meow_sched_tick()(主循环低频,如 250ms)读取策略 + 各子域信号(渲染负载/后台活跃/温度/电量),决定并下发:- 有效刷新率档位(60/30/15)
- 前台 vs 后台的调度权重/优先级(nice? 前台应用可
setpriority,后台/服务降 nice) - (若 cpufreq)频率档
- 温控降档(过热强制降)
- 策略
power.mode(enum):balanced(默认)/performance/battery:- performance:恒 60、前台满额、不降频、温控阈值放宽
- battery:允许降档、后台更省电、更早温控
- balanced:折中 + 自适应
- 自适应降档:统一在 meow_sched 里做(M2.16 的内联 governor 迁入),基于渲染负载+温度+电量综合。
- API:
meow_sched_*()(meow_sched_mode()/meow_sched_effective_fps()/meow_sched_hint_load(x)/meow_sched_set_foreground(pid));settingspower.mode。 - 通知/暴露:web 面板显示当前策略/负载/温度/刷新档;CLI
meowcli sched status。
3. 实现里程碑(后面)
- S1:把(现归口 SDK present 的)刷新率调度迁为 meow_sched 子模块(
meow_sched_fps(),SDK present 作执行器消费其档位),加power.mode三策略。 - S2:前后台优先级(前台应用 setpriority、后台/服务降 nice)+ 空闲省电。
- S3:温控/电量感知降档 + 暴露 web/CLI。
- (cpufreq 若可用再并入)
4. 原则
- 任何降档/提权都要无卡顿感知(降档只在重负载/过热时,常态满额)。
- 中央单一决策,各模块只上报信号、不各自为政(避免"各管各的跳帧/降频")。
- 低开销(低频调度、轻采样),不引入明显 CPU 负担。