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

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_rate,?hispeed_freq,?boost?等)。
  • 實現?動態性能調節(如觸控加速、應用啟動加速)

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,設主機名提供基本網絡能力
內存管理overcommit,?min_free_order優化內存分配與碎片
ZRAM開放?writeback?權限支持智能內存壓縮
F2FS 調優cp_interval,?discard_max,?ra_mul提升性能、降低功耗、減少卡頓
硬件控制chown?CPU、LED、Vibrator、TCP允許系統服務動態調節硬件
診斷分區掛載?diag,創建目錄支持廠商調試與故障診斷
網絡優化tcp_def_init_rwnd=60加速應用首次加載
服務啟動class_start hal,?core啟動 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;但可以無縫…