我正在研究intel rangeley board。我想测量启动linux内核所需的总时间。是否有任何可行且经过验证的方法可以在intel板上实现这一目标?
答案 0 :(得分:2)
尝试使用rdtsc
。根据英特尔insn ref手册:
处理器单调递增时间戳计数器MSR 每个时钟周期,只要处理器复位,就会将其复位为0。 请参阅英特尔®64和IA-32第17章中的“时间戳计数器” 架构软件开发人员手册,第3B卷,具体 时间戳计数器行为的详细信息。
(请参阅x86标签wiki以获取手册链接)
通常,TSC仅用于两个时间点之间的相对测量,或用作时间源。绝对值显然是有意义的。它以CPU的额定时钟速度为准,无论它实际运行的节能时钟速度如何。
您可能需要确保在多核系统上从启动CPU读取TSC。其他内核可能尚未启动其TSC,直到Linux发送一个处理器间中断来启动它们。 Linux可能会将其TSC同步到引导CPU的TSC,因为gettimeofday()
确实使用了TSC。 IDK,我只是写下我自己一定要检查的东西。
您可能需要采取预防措施,以避免在将内核用作时间源时让内核修改TSC。可能是通过一个强制Linux使用不同时间源的引导选项。