| 题目有点大,其实kernel的启动性能调整和android基本没什么关系,我想应该适用所有使用linux的嵌入式设备 时间测量 说到性能调整,第一件该干的的事就是看下时间到底消耗在哪里。俗话说的好:知己知彼,百战百胜;过度优化,万恶之首 因此手头上要有称心如意的时间测试工具,方法。其实我是不太喜欢工具的,工具这东西可遇不可求,而且不如写代码顺手。 1. PRINTK_TIME 在内核编译选项中打开CONFIG_PRINTK_TIME,重新编译内核后,系统启动后就可以看到每一条printk前都有一个时间戳了,这样就有个大概的轮廓,哪 个驱动消耗了更多的时间,当然这个信息对我们性能调整来说粒度太粗了 2. initial_debug宏 上面的PRINTK_TIME只是在printk附加上当时的系统时间,对于那些没有printk信息输出的驱动来说是无法提供启动时间信息 的,initial_debug派上了用场,打开这个宏后,每个驱动的初始化起始时间和结束时间都打印出来了。有了这个时间,基本就可以确定哪些部分需要 优化了。我的做法是只关注耗时10000us以上的驱动。 3. ktime_t 调用ktime_get 获取时间,我最喜欢的时间测量方法,对于可疑的耗时函数,可如下测试 ktime_t start, end; start = ktime_get() candidate_func(arg...) end = ktime_get() printk(KERN_ALERT "%s: start time=%d.%d, end time=%d.%d\n", __func__, start.tv.sec, start.tv.nsec, end.tv.sec, end.tv.nsec); 可以很准确的计算candidate_func的时间,当然如果candidate_func中引发了调度,时间就没那么准确了。 4 printk 尽量去掉printk对时间测量的影响,可以调整kernel/printk.c中的DEFAULT_CONSOLE_LOGLEVEL宏,把级别较低的信息去掉
性能优化方法 1. hard code lpj,在uboot启动参数增加 lpj=3997696. 其中的3997696替换为你的机器启动信息获取的值,这个一般能节省200ms 2. 裁剪内核,这块比较大,要单独开一篇来介绍,裁剪的好处有两点:第一减少kernel的尺寸,这也就相应的减少了加载kernel image的时间,第二也减少了不必要的初始化 3. 代码调整: 根据时间测试,找到耗时瓶颈,看看是否能进行优化。
4. 优化设备IO驱动,提高数据的读写速度,kernel启动完成到android launcher完成,几乎无处不涉及到文件的读写,IO速度对启动时间的影响重大,代码是人写的,所以平台特定的IO代码绝对有优化的空间
性能优化结果 最终优化后的结果是kernel从启动到init.rc大概需要0.5秒左右,当然具体优化到什么程度,和kernel需要加载的驱动是密切相关的。 (kickxxx) |
相关推荐
全志平台BSP裁剪(3)附件二 Kernel hacking配置说明
Kernel hacking 说明:内核hack选项 Show timing information on printks CONFIG_PRINTK_TIME 在控制台和syslog()系统调用的输出中包含printk()消息的时间戳,以便于直接显示内核启动过程中各步骤所用的时间.注意:无论此项是否开启,时间戳总会被记录在/dev/kmsg中,开启此项仅相当于使用"printk....
android确定kernel使用的config文件
由于android下的kernel配置与linux下的menu方式有了改变,所以我们不能直接将arch/arm/configs下的配置文件拷贝为.config后再进行make. 在arch/arm/configs下有很多的config文件,但是我们如何确认android当前的项目使用的是哪一个config文件勒。 请查看devices/manufactor/project/AndroidBoard...
无人机上下通信信号解析程序和代码
总的来说,无人机上下行信号解析是无人机系统中非常重要的一部分,它关系到无人机的飞行控制和图像传输能力,对于保障无人机的飞行安全和数据传输质量具有重要作用。3. 读取和解析地面控制中心发送的命令和数据:程序还需要能够读取地面控制中心发送给无人机的命令和数据。1. 读取和解析无人机发送的命令和数据:程序需要能够读取无人机发送的信号,并解析其中的命令和数据。4. 将解析结果传递给无人机:解析地面控制中心发送的命令和数据后,程序需要将解析结果传递给无人机。具体的实现方式可以根据无人机的通信协议和硬件设备来确定。
linux打印中时间信息
使能 CONFIG_PRINTK_TIME之后,内核每行打印前面有时间信息,本文探讨一下相关代码以及时间信息的含义。 | CONFIG_PRINTK_TIME: | | Selecting this option causes timing information to be | included in printk output. This allows you to
Android7以上抓取https数据包-无需root
手机内装一个虚拟机,然后在虚拟机内运行我需要抓包的应用,该虚拟机内是不需要证书验证的。完美解决android7.0以上https无法抓包的问题。
保姆级教程:用MediaPipe和BlazePose在Python里实时追踪你的健身动作(附完整代码)
本文提供了一份详细的Python教程,教你如何使用MediaPipe和BlazePose实现实时健身动作追踪。从环境配置、模型选型到实时视频流处理架构设计,再到健身动作量化分析和可视化反馈系统优化,教程涵盖了完整的实现步骤和代码示例,帮助开发者快速构建高效的姿态特征点检测系统。
android 内核编译时间戳,Android 启动性能优化 - kernel篇
题目有点大,其实kernel的启动性能调整和android基本没什么关系,我想应该适用所有使用linux的嵌入式设备时间测量说到性能调整,第一件该干的的事就是看下时间到底消耗在哪里。俗话说的好:知己知彼,百战百胜;过度优化,万恶之首因此手头上要有称心如意的时间测试工具,方法。其实我是不太喜欢工具的,工具这东西可遇不可求,而且不如写代码顺手。1. PRINTK_TIME在内核编译选项中打开CONFI...
mipi协议中的calibration和scramble模式
在MIPI(Mobile Industry Processor Interface)协议中,calibration(校准)和scramble(加扰)模式是两个重要的特性,它们分别用于优化数据传输的准确性和减少信号干扰。
【Android性能优化】启动速度优化
Android系统关机重启的时间是比较长的,一般重启在25s算可以的,大多在30s左右,刷机或者恢复出厂设置启动时间还会更久,达到1,2分钟都可能 那么,有没有可以优化的地方,提高启动速度呢? Android系统优化部份,如果启动速度能达到10s已经是很牛的咯 我们可以从下面几个方面着手优化启动速度 Bootloader优化(Boot,U-Boot) Android OS优化与裁剪(...
告别密码本!用Windows NPS给华为/华三交换机做Radius认证,SSH登录更安全
本文详细介绍了如何利用Windows NPS实现华为/华三交换机的Radius认证,提升SSH登录安全性。通过集中化管理、精细化控制和完整审计追踪,企业可告别传统密码本,大幅提升网络设备管理效率。文章包含NPS服务部署指南、交换机配置详解及调试技巧,助力企业构建安全高效的统一认证体系。
手把手教你设计反激开关电源:从整流滤波到PCB布局的实战避坑指南
本文是一份反激开关电源的实战设计指南,重点解析了从整流滤波电路到PCB布局的关键细节与常见陷阱。文章深入探讨了输入保护元件协同设计、EMI滤波器优化、整流桥与滤波电容选型,并详细阐述了如何通过优化PCB布局来确保安规、最小化功率回路面积以控制噪声,旨在帮助工程师和爱好者规避设计误区,提升电源的可靠性与性能。
Kernel Flasher:安卓内核管理的终极解决方案
在安卓设备优化领域,**内核管理工具**始终扮演着至关重要的角色。今天我们要介绍的Kernel Flasher,就是一款专为安卓用户设计的强大**内核管理工具**,它通过简单直观的操作界面,让普通用户也能轻松掌握**安卓内核刷写**和**内核备份恢复**等高级功能。 ## 核心功能全面解析 ### 一键刷写内核 Kernel Flasher支持直接刷入AK3格式的内核文件,让您无需复杂的命令行
基于Qt C++开发一个体测数据管理系统
advice.dietAdvice = "饮食建议:\n1. 控制总热量摄入,每天减少300-500大卡\n2. 减少精制碳水(白米饭、白面包、甜食)\n3. 增加优质蛋白和膳食纤维摄入\n4. 烹饪方式以蒸、煮、烤、凉拌为主,减少油炸\n5. 晚餐适量减少,睡前3小时避免进食";dataTable->setHorizontalHeaderLabels({"ID", "用户名", "身高(cm)", "体重(kg)", "BMI", "体脂率(%)", "记录时间"});
Android Common Kernel 使用指南
Android Common Kernel 使用指南 1. 项目介绍 Android Common Kernel 是一个开源项目,旨在为 Android 设备提供稳定且兼容的 Linux 内核。该项目基于上游 Linux 内核,整合了适用于 Android 设备的补丁和修改。通过此项目,开发者可以为多种 Android 设备提供一个统一的内核版本,从而简化开发流程并提高效率。 2. 项目快速启动 ...
LoRa无线通信技术介绍(六)SX127X芯片收发程序讲解
接收LORA芯片SX127X的收发程序。
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
Android 性能优化【篇二:开机时延分析流程】
这篇文章为 Android 系统工程师提供了一套从理论到实践的完整开机速度优化指南,涵盖了流程分析、日志定位、案例排查及代码级修改方案,具有极高的实战参考价值。
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
Android 性能优化 【总篇:深入浅出】
本篇的主要针对整机性能的一个解读,主要拆解整机性能有哪些小的领域,对应的测试用例是怎么样的,这类问题优化思路是怎么样的。各家厂商针对性能的测试都设计了不同的用例,因此针对性能测试其实是比较五花八门的。我这里凭着经验来总结一下通常都有哪些场景和性能测试相关。
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
Android 启动性能优化 - uboot篇
http://blog.youkuaiyun.com/kickxxx/article/details/7361715 时间测量 在mx51平台上,使用get_timer可以获得比较精确的计时,get_timer的使用贯穿了uboot性能调整的整个过程 性能优化方法 1. 减小uboot镜像的大小,去掉不需要的驱动,不需要的命令,减少uboot的大小可以从两个方面获得好处,首先会节省驱动
Android开机启动性能-初探
Android开机启动性能优化-初探分析手段logkernel loglogcat logbootcharttrace我的分析过程kernel logbootchartSystemServersystracePMSbootanimationearlyconlogcat参考连接 分析手段 log kernel log 查看启动阶段的kernel log,如果kernel有大量丢失,就注释掉printk.c中如下逻辑,log才不会被过滤。 if (!(devkmsg_log & DEVKMSG_LOG_
10个SmartPack-Kernel-Manager实用技巧:提升Android设备性能的秘诀
SmartPack-Kernel-Manager是一款强大的Android内核管理工具,能够帮助用户轻松优化设备性能、延长电池寿命并自定义系统功能。本文将分享10个实用技巧,让你充分发挥这款工具的潜力,打造更流畅、更高效的Android体验。 ## 1. 快速访问核心功能:掌握主界面导航 SmartPack-Kernel-Manager的主界面设计直观,提供了丰富的内核管理选项。从Statis
1532



被折叠的 条评论
为什么被折叠?



