Files
MeowOS Dev 245bee2946 MeowOS for HiBy R3 Pro II — 公共发布版本(历史已重置)
• 全新单提交:清除含敏感信息的旧历史(sudo 口令、内网 IP、SSH 密钥路径、热点 SSID、设备 MAC)
• 本地开发文档/测试记录/构建脚本全部移入 gitignored 的 devdocs/ 与 scripts/build/(不入库)
• 保留:MeowOS 源码(launcher/watchdog/bootmenu/meow_svcd/SDK)、项目规范文档、mips-repo
增补组件:SDK 统一日志+通知 API、meow_svcd 服务管理器、mips-repo 软件仓库
2026-08-30 01:12:34 +08:00

3.8 KiB
Raw Permalink Blame History

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));settings power.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 负担。