我使用OProfile来分析我的Linux盒子.在分析过程中,我发现除了" native_safe_halt"函数之外," delay_tsc"是消耗cpu周期的第二个最重要的函数(大约10%).这似乎delay_tsc()是一个繁忙的循环.但是谁叫它,它的功能是什么?
没有人直接调用它,因为它是你链接到的那个源代码中的本地函数.调用它的方法是发布的__delay()函数.
当您调用时__delay(),这将使用delay_fn函数指针(也是该文件的本地)来选择几个延迟函数之一.默认情况下,选择的是delay_loop(),使用x86指令尝试标记时间.
但是,如果use_tsc_delay()已经调用(在引导时),它会将函数指针切换到delay_tsc(),它使用时间戳计数器(CPU计数器)来标记时间.
任何需要合理可靠的高分辨率延迟功能的内核代码都会调用它.你可以看到在引用所有的内核代码__delay 在这里(相当多的地方).
我认为,在分析方面,忽略花在该函数上的时间可能是非常安全的,因为它的意图是延迟.换句话说,花费很长时间才能完成这项工作并不是很有用 - 如果打电话者不想延迟,他们就不会打电话.
该列表中的一些示例:
| 归档时间: |
|
| 查看次数: |
1201 次 |
| 最近记录: |