Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
F

fas-rs

> 编程语言
Open source

Frame aware scheduling for android.

1.1K stars0 likes1 views
WebsiteGitHub

About

Frame aware scheduling for android.

简介

假如肉眼看到的画面能直接反映在调度上,也就是说以把调度器放在观看者的角度来决定性能,是否就能实现完美的性能控制和最大化体验? FAS (Frame Aware Scheduling)就是这种调度概念,通过监视画面渲染来尽量控制性能以在保证渲染时间的同时实现最小化开销

  • 什么是fas-rs?

    • fas-rs是运行在用户态的FAS(Frame Aware Scheduling)实现,对比核心思路一致但是在内核态的MI FEAS有着近乎在任何设备通用的兼容性和灵活性方面的优势

插件系统

  • 为了最大化用户态的灵活性,fas-rs有自己的一套插件系统,开发说明详见插件的模板仓库

自定义(配置)

  • 配置路径: /sdcard/Android/fas-rs/games.toml

  • 参数(config)说明:

    • keep_std

      • 类型: bool
      • true: 永远在配置合并时保持标准配置的 profile,保留本地配置的应用列表,其它地方和 false 相同 *
      • false: 见配置合并的默认行为
    • scene_game_list

      • 类型: bool
      • true: 使用 scene 游戏列表 *
      • false: 不使用 scene 游戏列表
    • *: 默认配置

  • 游戏列表(game_list)说明:

    • "package" = target_fps

      • package: 字符串,应用包名
      • target_fps: 一个数组(如[30,60,120,144])或者单个整数,表示游戏会渲染到的目标帧率,fas-rs会在运行时动态匹配
  • 模式(powersave / balance / performance / fast)说明:

    • 模式切换:

      • 目前fas-rs还没有官方的切换模式的管理器,而是接入了scene的配置接口,如果你不用 scene 则默认使用balance的配置
      • 如果你有在 linux 上编程的一些了解,向/dev/fas_rs/mode节点写入 4 模式中的任意一个即可切换到对应模式,同时读取它也可以知道现在fas-rs所处的模式
    • 模式参数说明:

      • margin_fps:

        • 支持两种格式:
        1. 完整格式:margin_fps = { base = , = (可多项) }
        2. 简写:margin_fps = ,等效margin_fps = { base = }
        • 解释: 以 fps 为单位的额外允许掉帧量,除非用target_fps margin override强制指定margin_fps值,否则会根据公式(target_fps / 60 * base)缩放
      • core_temp_thresh:

        • 类型: 整数或者"disabled"
        • 整数: 让fas-rs触发温控的核心温度(单位0.001℃)
        • "disabled": 关闭fas-rs内置温控

games.toml配置标准例:

…

配置合并

  • fas-rs内置配置合并系统,来解决未来的配置功能变动问题。它的行为如下

    • 删除本地配置中,标准配置不存在的配置
    • 插入本地配置缺少,标准配置存在的配置
    • 保留标准配置和本地配置都存在的配置
  • 注意

    • 使用自动序列化和反序列化实现,无法保存注释等非序列化必须信息
    • 安装时的自动合并配置不会马上应用,不然可能会影响现版本运行,而是会在下一次重启时用合并后的新配置替换掉本地的
  • 手动合并

    • 模块每次安装都会自动调用一次

    • 手动例

      bash
      fas-rs merge /path/to/std/profile

编译

bash
# Ubuntu (NDK is required)
apt install gcc-multilib git-lfs

# Rust (Nightly version is required)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup default nightly
rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android i686-linux-android
rustup component add rust-src

# Cargo-ndk
cargo install cargo-ndk

# Clone
git clone https://github.com/shadow3aaa/fas-rs
cd fas-rs

# Compile
cargo xtask build -r

捐赠

的爱发电,你的捐赠可以增加维护开发此项目的动力。

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Rust

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言