天天看点

001-linux启动时间精确测试方法

    在优化linux启动速度时,首先需要能够精确测量,以便有针对性的进行优化。

    在操作中,想到以下三种方法:

    1、通过printk打印时戳。此方法最简单,也最不靠谱。因为打印本身就耗时,而且时钟初始化完成前,无法统计。也无法跟uboot启动时间一起统计。

    2、通过GPIO电平变化,用示波器抓波形统计。此方法实时较苦难。

    3、通过一个片内空闲的定时器实现统计。

    实际操作中选择了方案三,贴代码不太方便,简单介绍下实现方式,供参考。

    1、在uboot中实现定时器的初始化和当前计数值的读取函数。可用C实现。

    2、计数值保存在静态分配的全局变量中。boot优化阶段,可实现命令打印出计数值。在统计boot引导内核的时间时,可将引导内核前的计数值通过bootargs传递给内核,然后在内核中查看即可。

    3、计数值到ms的转换,不同的定时器可能稍有差异。基本上用计数值除以频率就可以了。

    4、内核中可直接读取定时器的计数值,实现计数值读取函数即可,不需要重复初始化。

    5、在内核中定义全局的静态变量,在合适的位置读取计数值,并存入全局变量中。

    6、实现proc项读取全局变量的值即可得到系统启动的耗时信息。

    注意事项:

    1、boot下在将镜像拷贝到内存之前,不可记录时间。

继续阅读