我试图优化linux在嵌入式设备(而不是PC)上的启动时间。
当前要分析启动序列,
我已经启用了,在printk日志上启用了定时信息。
这是最合适的方法吗?
如果没有,我如何以最小的开销来分析引导序列(带有定时)?
PS:
我有一个(设备的)终端,通过串行连接&
我使用windows上的TeraTerm来访问它。
发布于 2012-10-18 13:21:00
这是一个很长的时间,但更新了这里的答案,以供参考。
以下是我最后所做的事情:
printk()语句。- 1st at the start of the block i was trying to profile.
- 2nd at the end of the block i was trying to profile.
虽然在设备上发生事件和通过串行在主机PC上接收日志之间有轻微的延迟,但在给定的硬件设置中,这是相当恒定的。因此,两个时间戳之间的差异与生成这些日志的设备上的事件之间的实际时间差是准确的。另外,两个printk语句的开销/副作用也是最小的。
更新:2年后,以及数百个小时的内核调试之后,我建议使用功能示踪剂。不过,这需要一点努力来学习。正如很好地解释了这里,我们需要:
CONFIG_FUNCTION_TRACER中启用.configtrace_printk()而不是printk()cat /sys/kernel/debug/tracing/trace检查输出日志发布于 2010-06-21 00:22:42
打印时间信息的开销非常小。但是,这些信息并不总是有用的,因为它没有告诉您在用户空间中发生了什么。
你可能想试一下引导图。它是一个shell脚本,在引导期间在后台运行,并从/proc收集数据。虽然它比printk定时信息有更大的开销,但它更详细,允许您分析进程启动和磁盘利用率。
http://www.bootchart.org/
https://stackoverflow.com/questions/3012993
复制相似问题