Files
MeowOS-For-R3P2/PERF_SCHEDULER.md
T
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

51 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 负担。