Android/Linux EAS优化-schedtune

2023-11-05

Linux cgroups机制中的cpu/cpuset/schedtune子系统 跟linux/android进程调度策略有关,记录下各项功能参数的用法。

SchedTune

SchedTune是一项与CPU调频相关的性能提升技术,它实现为一个cgroup控制器。

这个控制器提供了一个名称为schedtune.boost的配置参数,运行时系统可以使用它来更改该组中的进程的调度方式。

每当调整这个参数的时候,它会使受影响的进程看起来比实际更重(或更轻)。如果一个组被提升了25%,那么调度程序将期望它使用的CPU时间比它实际上要多25%,并且CPU频率调控器将相应地对处理器提速。因此,以这种方式“提升”进程不会影响其调度优先级,但会影响其最终运行的CPU的速度。

SchedTune扩展仅适用于负载较轻的系统。当系统饱和时,SchedTune应当自动禁用。

Pixel XL上/vendor/etc/init/init.rc文件中的相关配置如下:

# set default schedTune value for foreground/top-app (only affects EAS)
write /dev/stune/foreground/schedtune.prefer_idle 1
write /dev/stune/top-app/schedtune.boost 10
write /dev/stune/top-app/schedtune.prefer_idle 1
write /dev/stune/rt/schedtune.boost 30
write /dev/stune/rt/schedtune.prefer_idle 1

可以看到,这里为rt 和 top-app两个进程组设置了处理器提速。

schedtune提供了一套用户接口的工具,用于功耗-性能调节。schedtune是cgroup的一个子系统。所以在cgroup的mount节点下,stune分别为每个group,都提供了2个调节开关:

  • schedtune.boost
    boost的值用int型表示,范围为[0, 100]。
    boost默认值为0,代表CFS调度器会工作在能耗最低的状态。这也意味着schedutil使task跑在最低的OPP。
    boost值100,则表示调度器为工作在性能最高的状态,同时OPP也处在最大。
    0-100的范围可以根据其他场景来进行适当调节。比如,优化交互的响应、电池电量变化等。
  • schedtune.prefer_idle
    这是一个控制调度器节省功耗优先,还是性能优先的flag。
    默认值0,会让CFS调度器根据energy-aware wakeup策略来分配在group中的task。(功耗优先)
    当值设为1,会让CFS调度器分配task时,有最小的wakeup延迟。(性能优先)
    android平台下使用这个flag用来表示正在和用户交互的应用。
    设为1的节点:
    dev/stune/foreground/schedtune.prefer_idle
    dev/stune/top-app/schedtune.prefer_idle
    设为0节点:
    dev/stune/background/schedtune.prefer_idle
    dev/stune/rt/schedtune.prefer_idle

  schedtune.prefer_idle是一个标志位,它向调度器指示用户空间希望调度器更关注功耗或者更关注性能。当这个值设为1,表示希望调度器尽可能减少改组中进程唤醒延迟(倾向于性能)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android/Linux EAS优化-schedtune 的相关文章

  • Nginx:配置worker进程的所属用户

    Nginx的配置文件 etc nginx nginx conf中定义了启动worker时的所属用户 全局块 user www data worker进程的所属用户 nginx默认设置为www data 但如果该用户配置的不正确 可能造成业务
  • Linux内核模块管理

    模块的全称是动态可加载内核模块 它是具有独立功能的程序 可以被单独编译 但不能独立运行 模块是为内核或其他模块提供功能的代码集合 这些模块可以是 Linux 源码中自带的 也可以是由硬件厂商开发的 可以想象成驱动 安装模块一般有两种方法 第
  • Linux内核-中断知识汇总(重温)

    1 概述 中断控制是计算机发展中一种重要的技术 最初它是为克服对I O接口控制采用程序查询所带来的处理器低效率而产生的 中断控制的主要优点是只有在I O需要服务时才能得到处理器的响应 而不需要处理器不断地进行查询 由此 最初的中断全部是对外
  • linux服务器 top 查看 内存占用详情

    前言 前几天登录云服务器突然发现没几个服务内存竟然快占满了 于是赶快top查看 发现直接top查看的话 也不太好分析是哪个应用占用的内存比较大 于是谷歌了一番记录了以下几种查内存占用情况的方法 查看内存占用情况的几种方法 free命令 命令
  • Shell编程总结

    Shell编程总结 1 变量被定义时为空 即参加算术运算时可以直接与数值相加 被看做初值为0 2 使用变量时 需要在变量前加 即 a 3 中括号相当于test 在if语句中 if test f 1 与 if f 1 作用相同 但是需要注意中
  • linux常用命令总结

    linux常用命令总结 1 在根目录下查找xxx文件 2 列出程序启动时搜索库路径的过程 3 查看程序或so的依赖 1 查看Test程序依赖的so文件 2 也可以查看so依赖的文件 4 SSH相关 5 查看当前登录的用户 6 查看重启 登录
  • Linux清除原有ssh密钥方法

    Linux清除原有ssh密钥方法 1 问题现象 以前在mac的终端下面使用ssh user localhost输入密码就可以连接到远程的SSH服务器 今天连接的时候老是提示如下错误 KENFORFORLIN kenforstar sudo
  • openEuler 20.03 LTS SP2以及SP3安装完gnome后,gdm登陆进入不了桌面问题

    一 问题原因 是由于CVE 2020 17489相关补丁引入的 暂不清楚是何原因造成 但除去该相关补丁之后 该问题消失 在网上查了下 CVE 2020 17489的问题是gnome shell的某些配置中会发现 注销账户时 登陆对话框中的密
  • SIGPIPE的设计意图

    SIGPIPE的设计意图 SIGPIPE 是为以下这种情况设计的 grep pattern lt reallyhugefile head grep可能会输出成千上万行文本 但 head 只会读取前10行然后就退出 一旦head退出 grep
  • Linux异步IO实现方案总结

    一 glibc aio 1 名称 由于是glibc提供的aio函数库 所以称为glibc aio glibc是GNU发布的libc库 即c运行库 另外网上还有其他叫法posix aio 都是指glibc提供的这套aio实现方案 2 主要接口
  • u-boot常用命令

    u boot常用命令 查看u boot所支持的命令 查询命令 u boot版本 环境变量 板子相关信息 环境变量操作 内存操作 网络操作 EMMC和 SD卡操作 FAT 格式文件系统操作 EXT格式文件系统操作 ubi格式文件系统操作 bo
  • 客户合并修改需求 @熊哥

    1 客户信息确认列表 如果是 车主信息确认列表 和 车主信息查询列表 调用的标准客户修改功能 保存客户档案时 不校验客户信息重复规则 2 客户信息确认列表 客户信息确认列表 修改为 车主信息确认列表 客户信息合并 修改为 车主信息合并列表
  • 线程学习--pthread--锁链及条件变量

    pthread cond wait函数的使用 一般跟lock一起用 pthread mutex lock mutex pthread cond wait cond mutex 等待条件变量满足 把获得的锁释放掉 注意 1 2两步是一个原子操
  • Shell:查看进程与对应的线程

    1 通过 ps efL grep 进程ID或名字 UID PID PPID LWP C NLWP STIME TTY TIME CMD user 228298 201990 228298 0 2 00 14 pts 0 00 00 00 t
  • Linux中普通用户和ROOT用户对Java JDK的配置

    Linux中对对各种工具文件不需要想Windows中似的 还要先一步一步的安装 有的还需要配置环境变量 比如Windows对Java的安装过程 在Linux中 使用指令 tar zxvf 文件名 注意空格 解压完 tar gz 文件 或使用
  • Ubuntu(20.04):设置DNS

    编辑文件 etc systemd resolved conf 设置DNS 8 8 8 8 114 114 114 114 保存退出后 以sudo身份运行 systemctl restart systemd resolved systemct
  • Ubuntu下安装和注册beyond compare 4

    下载 安装 下载安装包网址 Ubuntu上选择Debian安装包 https www scootersoftware com download php sudo dpkg i bcompare 4 4 6 27483 amd64 deb 注
  • linux 复位usb设备 模拟热插拔脚本

    获取USB设备数量 DEVICE NUM lspci grep USB awk F print 1 wc l 获取设备号 DEVICE lspci grep USB awk F print 0000 1 sed n i p 设备解绑 ech
  • Expo eas:如果我之前运行预构建,Android 构建会失败

    我用的是Expo 46 我想更改我的一些配置AndroidManifest所以我运行一个npx expo prebuild生成一个 android 文件夹 没有错误 但后来我的eas build不再工作了 如果我不运行prebuild 我收
  • 应用程序在 Expo-Go 中运行良好,但在 EAS-Build 后无法运行

    我有一个简单的应用程序 它使用 React navigation v6 它不使用任何其他重型第三方库 它的所有用途是反应导航 v6 它工作得很好Expo Go在开发过程中 但是当我使用以下命令构建开发 apk 时EAS构建它总是卡在加载屏幕

随机推荐

  • 求 1-10 的奇数之积,偶数之和。

    i 1 even sum 0 偶数 odd sum 0 奇数 while i lt 10 循环10次 if i 2 0 even sum even sum i else odd sum odd sum i i 1 print 1 10偶数之
  • React-从0到1搭建一个React项目(一)

    文章目录 架构介绍 第三方组件库 项目准备 环境准备 使用create react app初始化项目 创建项目目录结构 安装第三方库 利用工作之余的时间学习了react 今年一回来 部门要在公众号上面开发一个积分商城 于是准备让我用reac
  • 嵌入式Linux设置开机自动运行程序(基于BusyBox init)

    文章目录 目的 BusyBox init启动流程 inittab rcS 和 rcK 设置开机自动运行程序 总结 目的 开机自动运行程序 或者说系统启动时自动运行程序 这是经常会需要用到的功能 这个功能通常依托于 init 程序实现 ini
  • Log4Net记录日志级别

    level 中的级别 表示记录那些情况下的日志
  • 安装Catia显示无法启动服务器,win10catia r20应用程序无法正常启动的解决办法

    catia r20是一款用于模具设计的专业软件 能够给用户提供十分完善的建模技术 但近日有用户却反映说自己的win10正式版电脑出现了catia r20无法正常启动的情况 那我们要怎么解决这一问题呢 下面小编就来为大家分享关于win10ca
  • spring cloud系列学习(十一、额外篇-建多模块项目-maven的聚合和继承)

    一个项目有很多模块 每个模块都会用到一些公共的依赖 这些公共的依赖若交由各个模块独自管理 若每个模块同一个依赖的版本号不一致 会造成很比问题 打包和开发测试环境下对同一jar包不同版本号的处理可能不一致 造成运行时和测试时结果不一致项目升级
  • Retrofit 接收字符串

    在Retrofit1 9中 GsonConverter是默认包含在包里面的并且会在RestAdapter创建的时候自动创建 结果就是 如果返回的是Json字符串将会自动地被转换为数据存取对象Data Access Object DAO 但是
  • Android 屏幕适配方案

    http blog csdn net lmj623565791 article details 45460089
  • 【元宇宙】临界质量,元宇宙的关键要素

    考虑到电气化和移动技术的普及过程 我们可以自信地说 元宇宙不会突然到来 同时 也不会有明确的 元宇宙之前 beforeMetaverse 和 元宇宙之后 afterMetaverse 阶段一它们只是对应着生活发生改变的历史时期 一些高管认为
  • 面向对象----类变量小坑

    先看一段代码 class A name a def init self pass a A print a name print 10 b A b name b print b name print a name print 10 c A c
  • 开发一个自定义“套壳“浏览器的开源方案--TlC_Browser

    目录 一 项目概述 二 技术选型 三 项目介绍 项目名称 TlC Browser 开发语言 VB6 浏览器内核 webview2 项目目的 在vb6调用h5 实现自定义的浏览器 参考资料 https github com sysdzw We
  • stable-diffusion-webui Restore faces Error

    stable diffusion webui Restore faces Error https github com AUTOMATIC1111 stable diffusion webui issues 1513 我认为这与损坏的安装有
  • redis多字段分页排序

    1 redis有序集合 sorted set 是在 Sets 的基础上增加了分数设置作为排序依据 所以除了具备 Sets 的特性外 还可以进行排序 它提供了一个 score 属性 正好可以用来做排序依据 2 单字段排序 用户类 Data N
  • @Autowired的实现原理

    1 了解 Autowired 在这之前你得了解SpringIOC容器的相关知识 含义 Autowired表示某个属性是否需要进行依赖注入 可以写在属性和方法上 注解中的required属性默认为ture 表示如果没有对象注入给属性则抛出异常
  • linux中kvm配置文件,如何在linux中通过kvm安装虚拟机

    8种机械键盘轴体对比 本人程序员 要买一个写代码的键盘 请问红轴和茶轴怎么选 在centOS中通过kvm安装虚拟机 环境搭建 虚拟机安装 按照常规步骤安装即可 唯一需要注意的点是需要在cpu选项处 将虚拟化选项全部打开 查看配置 查看硬件是
  • Android指纹识别深入浅出分析到实战(6.0以下系统适配方案)

    指纹识别这个名词听起来并不陌生 但是实际开发过程中用得并不多 Google从Android6 0 api23 开始才提供标准指纹识别支持 并对外提供指纹识别相关的接口 本文除了能适配6 0及以上系统 主要还提供6 0以下设备适配解决方案 指
  • 如何使android应用开机时自动启动,如何使APP开机自启动

    方案一 将app做成系统应用 直接安装在 system app 目录下 具体步骤为 1 在AndroidManifest文件中 添加 android sharedUserId android uid system 例如 image png
  • 万字长文详述ClickHouse在京喜达实时数据的探索与实践

    1 前言 京喜达技术部在社区团购场景下采用JDQ Flink Elasticsearch架构来打造实时数据报表 随着业务的发展 Elasticsearch开始暴露出一些弊端 不适合大批量的数据查询 高频次深度分页导出导致ES宕机 不能精确去
  • 利用555定时器的双电源电路原理

    参考电工天下电路原理图 致敬 555单电源变双电源电路 以下是电路图 时基电路555接成无稳态电路 3脚输出频率为20KHz 占空比为1 1的方波 3脚为高电平时 C4被充电 低电平时 C3被充电 由于VD1 VD2的存在 C3 C4在电路
  • Android/Linux EAS优化-schedtune

    Linux cgroups机制中的cpu cpuset schedtune子系统 跟linux android进程调度策略有关 记录下各项功能参数的用法 SchedTune SchedTune是一项与CPU调频相关的性能提升技术 它实现为一