android 提高启动速度慢,安卓启动速度过慢的原因及解决方法

本文探讨了安卓设备启动速度变慢的问题,发现原因是EXT4文件系统自检和CPU电源管理模式改变。通过屏蔽自检代码或修改CPU频率策略,尤其是将"performance"模式改回"ondemand",可以显著提高启动速度。同时,作者警告优化系统时需要注意平衡,避免引发其他问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题的起因

最近发现一个很奇怪的问题:原来开机速度很快的平板开机都变得很慢了,一般30s可以启动的,现在至少需要3 minutes,有时候甚至达到夸张的6 minutes。

二、问题分析

碰巧最近更新了内核和安卓系统镜像,不知道和这个有关不。反复试了好几个旧版的安卓系统镜像,结果问题依旧;那么有可能是内核方面的问题了,遂试了上一次发布的内核镜像,结果开机嗖嗖的,问题可以定位在内核方面。查看上次修改了屏幕驱动和优化了系统运行速度,至于是哪里的问题只能通过查看开机时终端输出的信息了。

1.下图是开机慢版本的启动信息:

b7262fd231631a25b941eeabc26cb943.png

2.下图是开机快版本的启动信息

063236926fd4526ab420742dc61d3069.png

[ 8.792857] EXT4-fs (mmcblk0p4): recovery complete

[ 8.798425] EXT4-fs (mmcblk0p4): mounted filesystem with ordered data mode. Opts: nomblk_io_submit,errors=remount-ro

[ 187.810039] fs_mgr: Running /system/bin/e2fsck on /dev/block/mmcblk0p4

[ 187.840042] e2fsck: e2fsck 1.42.9 (28-Dec-2013)

[ 187.843116] e2fsck: /dev/block/mmcblk0p4: clean, 12/78432 files, 6608/78366 blocks

[ 187.865423] EXT4-fs (mmcblk0p4): mounted filesystem with ordered data mode. Opts: nomblk_io_submit

查看终端调试信息发现开机慢那个版本的调试信息,得出一个结论:之所以开机慢和EXT4文件系统自检有关,因为每次都是在那里停留长达3分钟。而对比图1和图2发现一个有趣的现象,开机快的那个版本有CPU的调试信息(CPU1: shutdown)。

三、问题解决

先从第一个结论为方向解决问题,既然自检花时间,那么去掉自检是不是可以解决自检花时间的问题。于是我屏蔽了自检相关代码,有两种方法:1.修改fs_mgr.c文件。2.修改文件挂载的文件fstab.smdk4x12文件。:源码路径在android/system/core/fs_mgr/fs_mgr.c

static void check_fs(char *blk_device, char *fs_type, char *target)

{

#if 1 //modify by bolong 20180403

if (fstab->recs[i].fs_mgr_flags & MF_WAIT) {

wait_for_file(fstab->recs[i].blk_device, WAIT_TIMEOUT);

}

if (fstab->recs[i].fs_mgr_flags & MF_CHECK) {

check_fs(fstab->recs[i].blk_device, fstab->recs[i].fs_ty

pe,

fstab->recs[i].mount_point);

}

#endif

if (fstab->recs[i].fs_mgr_flags & MF_VERIFY) {

if (fs_mgr_setup_verity(&fstab->recs[i]) < 0) {

ERROR("Could not set up verified partition, skipping

!");

}

修改fstab文件也是可以,只需要去掉check的关键词即可,但是在开机的时候会解析失败,原因未知,以后有空再研究。反正修改fs_mgr.c源码是可以解决问题,每次开机都很快。但是这样并不完美,有一次出现无法开机的问题,提示数据脏了,需要修复。

第一个尝试失败,那么只能从cpu的控制方向出发解决问题。查看修改日志发现最新版本改了cpu的电源管理,把cpu的“ondemand”模式改为“performance”模式了,这样系统的运行速度是提高了不少,同时也造成开机速度慢的问题。正常的配置方法如下图所示:

qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq CPU Frequency scaling qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk

x Arrow keys navigate the menu. selects submenus --->. Highlighted letters are hotkeys. x

x Pressing includes, excludes, modularizes features. Press to exit, > for x

x Help, > for Search. Legend: [*] built-in [ ] excluded module < > module capable x

x x

x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x

x x [*] CPU Frequency scaling x x

x x CPU frequency translation statistics x x

x x [*] CPU frequency translation statistics details x x

x x Default CPUFreq governor (ondemand) ---> x x

x x -*- 'performance' governor x x

x x 'powersave' governor x x

x x 'userspace' governor for userspace frequency scaling x x

x x -*- 'ondemand' cpufreq policy governor x x

x x 'interactive' cpufreq policy governor x x

x x 'conservative' cpufreq governor x x

x x 'adaptive' cpufreq policy governor x x

x x x x

x x x x

x x

需要把“Default CPUFreq governor(performance)”改为“(ondemand)”即可解决问题。

四、结论

电源管理如果修改为性能模式的话,系统会一直处于一个四核全开的状态,某些不支持多核系统的程序有可能会运行出错,本文所造成的后果是导致e2fsck文件系统修复程序运行过慢,猜测是多核同时运行造成程序的竞态。 优化android系统需要从各个方面进行权衡,否则很容易顾此失彼。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值