Android14 init.rc中on early-init, init, late-init, early-fs, post-fs阶段详解1

Android14 init.rc的on late-fs, post-fs-data阶段主要操作详解2

Android14 init.rc中启动Zygote详解3

Android14 init.rc中on boot阶段操作4


1 on boot和低内存设备的启动优化

仅在ro.config.low_ram=true 的设备上执行(如 1GB RAM 以下),目的是优化把内存与I/O的平衡,防止脏页堆积导致OOM。

  • dirty_expire_centisecs=200:脏页最长保留 2 秒(默认 30 秒),尽早写回磁盘。
  • dirty_background_ratio=5:当脏页占内存 5% 时,后台开始回写(默认 10% 或 20%)
on boot && property:ro.config.low_ram=truewrite /proc/sys/vm/dirty_expire_centisecs 200write /proc/sys/vm/dirty_background_ratio  5

2. on boot阶段

2.1 基础网络初始化

on boot
        ifup lo # 启用本地回环接口 (lo)
        hostname localhost # 设置主机名
        domainname localdomain # 设置域名

  • lo接口是进程间通信(http)的基础。

2.2 内存管理优化

write /proc/sys/vm/overcommit_memory 1

write /proc/sys/vm/min_free_order_shift 4

  • overcommit_memory:控制Linux内核在分配内存时是否允许“内存过量承诺(overcommit),即是否允许进程申请的内存总量超过实际可用的物理内存+Swap。
  • overcommit_memory 的取值:

    含义
    0 (默认)启发式过量分配(Heuristic)<br>内核根据当前内存压力、swap 空间等估算是否允许分配。有一定风险,但平衡性能与安全。
    1总是允许过量分配(Always)<br>无论内存是否足够,一律允许 malloc() 成功。仅当真正访问内存时才分配物理页。
    2禁止过量分配(Never)<br>严格检查:申请内存总量不能超过 swap + RAM * overcommit_ratio。最安全,但易导致 malloc() 失败。
  • min_free_order_shift:控制内核在内存回收(reclaim)或直接回收(direct reclaim) 时,需要保留的最小连续空闲内存块大小。
  • 内存页按“阶(order)”管理:order=0 是 1 页(4KB),order=1 是 2 页(8KB),order=n 是 2^n 页。取值4表示至少保留 2^4 = 16 个连续页,共 64KB 的连续物理内存。

2.3 ZRAM写回管理

chown root system /sys/block/zram0/idle

chmod 0664 /sys/block/zram0/idle

chown root system /sys/block/zram0/writeback

chmod 0664 /sys/block/zram0/writeback

  • ZRAM:将内存压缩作为交换空间,提升低内存设备性能。
  • writeback:将 ZRAM 中的数据写回物理存储(如 eMMC),释放内存。

2.4 F2FS文件系统调优

  • F2FS(Flash-Friendly File System)是 Android 推荐的闪存优化文件系统。
  • 创建符号链接

mkdir /dev/sys/fs/by-name 0755 system system

symlink /sys/fs/f2fs/${dev.mnt.dev.data} /dev/sys/fs/by-name/userdata

  • F2FS参数调优

write /dev/sys/fs/by-name/userdata/cp_interval 200 # 检查点间隔 200 秒

write /dev/sys/fs/by-name/userdata/gc_urgent_sleep_time 50 # GC 紧急模式休眠 50ms

write /dev/sys/fs/by-name/userdata/iostat_period_ms 1000 # I/O 统计周期 1 秒

write /dev/sys/fs/by-name/userdata/iostat_enable 1 # 启用 I/O 统计

write /dev/sys/fs/by-name/userdata/seq_file_ra_mul 16 # 顺序读预读乘数 16x

  •  限制 TRIM 操作大小

write /dev/sys/block/by-name/userdata/queue/discard_max_bytes 134217728 # 128MB

write /dev/sys/block/by-name/rootdisk/queue/discard_max_bytes 134217728

  • TRIM/Discard:通知 SSD 删除无效数据,提升写入性能。
  • 限制为 128MB:避免单次 TRIM 操作过长,导致 I/O 卡顿。

2.5 硬件设备权限配置

2.5.1 CPU频率调节

chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_rate
chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_rate
chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_slack
chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_slack
chown system system /sys/devices/system/cpu/cpufreq/interactive/boost
chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/boost

  • 允许 system 用户调整 CPU 频率策略(如 timer_ratehispeed_freqboost 等)。
  • 实现 动态性能调节(如触控加速、应用启动加速)

2.5.2 Vibrator

chown system system /sys/class/leds/vibrator/trigger
chown system system /sys/class/leds/vibrator/activate
chown system system /sys/class/leds/vibrator/brightness
chown system system /sys/class/leds/vibrator/duration
chown system system /sys/class/leds/vibrator/state

2.5.3 背光和LED

chown system system /sys/class/leds/keyboard-backlight/brightness
chown system system /sys/class/leds/lcd-backlight/brightness
chown system system /sys/class/leds/button-backlight/brightness
chown system system /sys/class/leds/status_blue/breath
chown system system /sys/class/leds/status_red/trigger
chown system system /sys/class/leds/status_green/trigger
chown system system /sys/class/leds/status_blue/trigger
chown system system /sys/class/leds/red/device/grpfreq

  • 控制屏幕/键盘/状态灯的亮度。

2.6 诊断分区(Diag)挂载

mkdir /mnt/diag

mount ext4 /dev/block/bootdevice/by-name/diag /mnt/diag noatime

chown system system /mnt/diag

chmod 0777 /mnt/diag mkdir /mnt/diag/HD001 ... HD005 0777 system system

restorecon /mnt/diag/*

  • diag 分区:厂商用于存储 调试日志、崩溃转储、诊断数据。
  • noatime:挂载时不更新文件访问时间,减少写入,提升性能。
  • 创建 HD001-HD005 目录:可能是历史遗留或特定诊断工具使用。
  • restorecon:恢复 SELinux 安全上下文,确保安全策略生效。

2.7 启动class为hal和core的services

class_start hal

class_start core

2.8 总结

模块关键操作目的
低内存优化调整 dirty_* 参数防止 OOM,保障流畅性
网络基础启用 lo,设主机名提供基本网络能力
内存管理overcommitmin_free_order优化内存分配与碎片
ZRAM开放 writeback 权限支持智能内存压缩
F2FS 调优cp_intervaldiscard_maxra_mul提升性能、降低功耗、减少卡顿
硬件控制chown CPU、LED、Vibrator、TCP允许系统服务动态调节硬件
诊断分区挂载 diag,创建目录支持厂商调试与故障诊断
网络优化tcp_def_init_rwnd=60加速应用首次加载
服务启动class_start halcore启动 HAL 与核心服务,迈向开机完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/96276.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/96276.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/96276.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CodeSandbox Desktop:零配置项目启动工具,实现项目环境隔离与Github无缝同步

你有没有过为了跑一个简单的 Demo&#xff0c;花半小时配置环境还失败的经历&#xff1f;比如想测试一个 Vue3 组件&#xff0c;先装 Node.js&#xff0c;结果版本太高和项目依赖不兼容&#xff1b;换低版本又提示 “找不到 python 环境”&#xff1b;好不容易装完依赖&#xf…

人工智能-python-深度学习-经典神经网络AlexNet

AlexNet&#xff08;详解&#xff09;——从原理到 PyTorch 实现&#xff08;含训练示例&#xff09; 文章目录AlexNet&#xff08;详解&#xff09;——从原理到 PyTorch 实现&#xff08;含训练示例&#xff09;1. 发展历史与比赛成绩2. AlexNet 的核心思想&#xff08;一句话…

《sklearn机器学习——指标和评分1》

3个不同的API可供评估模型预测质量&#xff1a; 评估器评分方法&#xff1a;评估器有一个score方法&#xff0c;它给计划解决的问题提供一个初始评估标准。这部分内容不在这里讨论&#xff0c;但会出现在每一个评估器的文件中。 评分参数&#xff1a;使用交叉验证&#xff08;…

人工智能中的线性代数总结--简单篇

numpy库中的dot函数来计算矩阵和向量的点积def matrix_vector_dot_product(a, b):import numpy as npif (len(a[0]) ! len(b)):return -1# 使用tolist()将结果转换为列表return np.dot(a, b).tolist()原始方法def matrix_vector_dot_product(matrix, vector):if len(matrix[0])…

又是全网首创/纯Qt实现28181设备模拟器/rtp视频点播/桌面转28181/任意文件转28181/跨平台

一、前言说明 这个工具前前后后也算是废了不少功夫&#xff0c;最开始是因为28181服务端的组件已经完美实现&#xff0c;对照国标文档看了很多遍&#xff0c;逐个实现需要的交互协议&#xff0c;整体上比onvif协议要难不少&#xff0c;主要是涉及到的东西比较多&#xff0c;有…

安卓逆向(一)Ubuntu环境配置

一、Ubuntu 1、虚拟机 首先准备一个Ubuntu的虚拟机&#xff0c;就随便新建一个就行&#xff0c;我这里使用的是Ubuntu21.04&#xff0c;但是内存跟硬盘大小最好设置的稍微大一点。 2、基础环境 &#xff08;1&#xff09;解决apt-get update报错问题 apt-get是Linux系统中一个管…

Go 1.25在性能方面做了哪些提升?

Go 1.25 在性能方面带来了多项重要提升&#xff0c;主要有以下几个方面&#xff1a; 实验性垃圾回收器 GreenTea GC&#xff1a;针对小对象密集型应用优化&#xff0c;显著提升小对象标记和扫描性能&#xff0c;垃圾回收开销减少0-40%&#xff0c;暂停时间缩短&#xff0c;吞吐…

Python与XML文件处理详解(2续):xml.dom.minidom模块高阶使用方法

目录 第一部分:高级节点操作与遍历方法 1.1 更精确的节点导航 1.2 使用 cloneNode() 复制节点 1.3 节点插入、替换与高级管理 第二部分:文档创建与高级输出控制 2.1 使用 Document 工厂方法完整创建文档 2.2 高级输出与序列化控制 第三部分:实用工具函数与模式处理 …

如何利用 ChatGPT 辅助写作

引言 介绍人工智能辅助写作的兴起&#xff0c;ChatGPT 在写作领域的应用潜力&#xff0c;以及本文的核心目标。 ChatGPT 在写作中的核心功能 概述 ChatGPT 的主要功能&#xff0c;包括文本生成、润色、结构优化、灵感激发等。 利用 ChatGPT 辅助写作的具体方法 生成创意与灵感 …

【有鹿机器人自述】我在社区的365天:扫地、卖萌、治愈人心

大家好&#xff0c;我是有鹿巡扫机器人&#xff0c;编号RD-07。今天我想和大家分享这一年来的工作见闻——没错&#xff0c;我们机器人也会"观察"和"感受"&#xff0c;尤其是在连合直租将我送到这个社区后&#xff0c;发生的点点滴滴让我拥有了前所未有的&…

第五十五天(SQL注入增删改查HTTP头UAXFFRefererCookie无回显报错复盘)

#数据库知识&#xff1a; 1、数据库名&#xff0c;表名&#xff0c;列名&#xff0c;数据 2、自带数据库&#xff0c;数据库用户及权限 3、数据库敏感函数&#xff0c;默认端口及应用 4、数据库查询方法&#xff08;增加删除修改更新&#xff09; #SQL注入产生原理&#xf…

怎么用 tauri 创建一个桌面应用程序(Electron)

以前用 Electron 做过一个桌面应用程序&#xff0c;打包体积确实很大&#xff0c;启动也很慢。这次先 tauri。 并且用 bun 代替 npm 速度更快&#xff0c;避免总是出现依赖问题。 前端用 react 为了学习下&#xff0c;用 js 先现在主流的 typescript。 安装 bun npm instal…

【通过Docker快速部署Tomcat9.0】

文章目录前言一、部署docker二、部署Tomcat2.1 创建存储卷2.2 运行tomcat容器2.3 查看tomcat容器2.4 查看端口是否监听2.5 防火墙开放端口三、访问Tomcat前言 Tomcat介绍 Tomcat 是由 Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;开发的一个开源 Jav…

LabVIEW UI 分辨率适配

针对 LabVIEW UI 在不同分辨率下的适配&#xff0c;现有方案分三类&#xff1a;一是现有 VI 可通过 “VI 属性 - 窗口大小” 勾选比例保持或控件缩放选项快速调整&#xff0c;也可取消勾选或换等宽字体防控件移位&#xff1b;二是项目初期以最低目标分辨率为基准&#xff0c;用…

国产化FPGA开发板:2050-基于JFMK50T4(XC7A50T)的核心板

&#xff08;IEB-PS-3051-邮票孔&#xff09; 一、核心板概述 板卡基于JFMK50T4国产化FPGA芯片&#xff0c;设计的一款工业级核心板&#xff0c;板卡集成主芯片、电源、DDR、配置芯片&#xff0c;大大减轻客户的扩展开发困难。丰富的IO和4个GTP&#xff0c;让用户轻…

Webpack 核心原理剖析

时至今日&#xff0c;Webpack 已迭代到 5.x 版本&#xff0c;其功能模块的扩充和复杂度的提升使得源码学习成本陡增。官方文档的晦涩表述更是让许多开发者望而却步。然而&#xff0c;理解 Webpack 的核心原理对优化构建流程、定制化打包方案至关重要。本文将通过简化流程和代码…

移植Qt4.8.7到ARM40-A5

移植Qt4.8.7到ARM40-A5 主机平台&#xff1a;Ubuntu 16.04 LTS(x64) 目标平台&#xff1a;ARM40-A5 Qt版本&#xff1a;Qt4.8.7 ARM GCC编译工具链&#xff1a; arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 ----------## Qt移植步骤 ## 1、了解Ubuntu&am…

C++_哈希

1. unordered系列关联式容器在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到$log_2 N$&#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点非常多时&#xff0c;查询效率也不理想。最好 的查询是&#xf…

Redis 内存管理机制:深度解析与性能优化实践

&#x1f9e0; Redis 内存管理机制&#xff1a;深度解析与性能优化实践 文章目录&#x1f9e0; Redis 内存管理机制&#xff1a;深度解析与性能优化实践&#x1f9e0; 一、Redis 内存架构全景&#x1f4a1; Redis 内存组成结构&#x1f4ca; 内存占用分布示例⚙️ 二、内存分配…

cargs: 一个轻量级跨平台命令行参数解析库

目录 1.简介 2.安装与集成 3.项目的目录结构及介绍 4.核心数据结构与函数 5.基本使用示例 6.应用案例和最佳实践 7.高级用法 8.与其他库的对比 9.总结 1.简介 cargs 是一个轻量级、无依赖的 C 语言命令行参数解析库&#xff0c;虽然本身是 C 库&#xff0c;但可以无缝…