# 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 负担。