在完成嵌入式应用的Linux裁减后,Linux的启动时间仍需要7s左右,虽然勉强可以接受,但仍然没有达到我个人所追求的目标——2s以内。CELF论坛为我们指引了一个方向,本文介绍了该论坛提出的对Linux的启动时间进行优化步骤:首先是对Linux启动过程的跟踪和分析,生成详细的启动时间报告;然后,我们就来通过这份报告,找出启动中相对耗时的过程;接下来,进行具体的分项优化。 【Linux系统管理启动时间的极限优化方案】 在嵌入式应用的Linux系统中,优化启动时间对于提升设备的性能和可靠性至关重要。当Linux系统的启动时间从7秒缩短至2秒以内成为目标时,就需要深入研究启动流程并采取一系列优化措施。在实际的商用环境中,设备的高可用性要求(如"5个9"的可靠性标准)使得每减少一秒钟的启动时间都能显著提升设备的稳定性。 CELF论坛提供了一种方法来追踪和分析Linux启动过程。通过启用内核的PrintkTime功能,为启动过程中的所有内核信息添加时间戳,从而生成详细的启动时间报告。这可以通过在内核启动参数中添加"time"或在编译内核时选择"Kernel hacking"中的"Show timing information on printks"选项来实现。在启动后,利用`dmesg`命令收集内核启动信息,并通过`scripts/show_delta`脚本来转换为时间增量格式,以分析启动过程中各阶段的耗时。 分析启动时间报告时,需要注意时间增量并不直接对应内核执行的具体操作。需要结合内核源码来确定真正的耗时。例如,某些耗时任务可能在printk调用之前或之后开始,或者在两次printk之间完成。在必要时,可能需要在源码中添加额外的printk语句来更精确地测量时间消耗。 在某次裁剪后的Linux内核启动分析中,主要的耗时部分包括: 1. Timer、IRQ、Cache、Mem Pages等核心部分的初始化:0.652s 2. 内核与RTC时钟同步:0.611s 3. 计算Calibrating Delay(针对4个CPU核心):0.328s 4. 校准APIC时钟:0.144s 5. 校准Migration Cost:0.312s 6. Intel E1000网卡初始化:3.520s 针对这些耗时部分,CELF提供了特定的优化方案,例如"RTCNoSync"和"PresetLPJ"。"RTCNoSync"用于避免启动时的RTC时钟同步,而"PresetLPJ"则用于预设本地循环计数器(LPJ),以减少校准时间。然而,对于内核的关键初始化部分,如Timer、IRQ、Cache和内存页管理,可能没有现成的优化方案,需要针对具体情况进行深入研究。 对于硬件初始化,特别是网络卡(如Intel E1000)的初始化,优化可能涉及驱动程序的调整或选择更快的硬件。例如,考虑使用更高效的驱动程序,或者在设备树中调整设备初始化的顺序,以减少对总启动时间的影响。 此外,还可以考虑以下策略来优化启动时间: - 使用更精简的内核配置,移除不必要的模块和服务。 - 优化内核编译选项,如禁用未使用的功能,启用预编译头文件以加速编译过程。 - 采用内存映射技术,减少物理内存的分配和释放时间。 - 调整内核调度策略,优先处理启动阶段的关键任务。 在进行这些优化时,务必保持对系统稳定性和兼容性的关注,确保在追求快速启动的同时,不牺牲系统的其他关键性能指标。Linux启动时间的极限优化是一个涉及多个层面的复杂过程,需要深入理解内核行为、硬件交互以及系统配置的细微差异。通过持续的分析、测试和调整,我们可以逐步接近那个理想的2秒启动目标。
- HJ-ZYT2021-05-12拿别人的博客当做资源,内容不是很帮助
- 粉丝: 10
- 资源: 957
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 汇川变频器CS710烧录软件及程序,专为塔机汇川变频器报故障STOP9代码使用
- Windows下MUMPS大型线性方程组求解器使用案例(地球物理)
- 纸板码垛程序,码垛动画仿真,采用博图v16编程,西门子S7-1200码垛程序,仿真效果如图所示,可以实现纸板 纸箱的动态码垛,为
- 外置式V型永磁游标电机,额定电流25A,输出转矩122.8N.m,24槽19极,额定转速300rpm,附相关参考文献 模型整体
- R语言进行机器学习.pdf
- 【Java期末/课程设计】高校学生管理可视化(Flask框架\网页设计\MySQL数据库)
- ...ur_topology_2_tuxiao.pdf
- 1模型简介:COMSOL Multiphysics对钻孔在不同边界应力作用下的损伤,自定义设置损伤变量并设置多个研究步骤实现
- 6DAD81D7-D0F3-4A1F-8281-6D5705507669.MOV.mov
- 方正二合一保护卡windows驱动文件