微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux 时钟管理

Linux 时钟管理

时间:06-13 来源:IBM 点击:

mode
High resolution mode
periodic tick tick_handle_periodic hrtimer_interrupt
dynamic tick tick_nohz_handler hrtimer_interrupt

另外,在系统运行的过程中,可以通过查看 /proc/timer_list 来显示系统当前配置的所有时钟的详细情况,譬如当前系统活动的时钟源设备,时钟事件设备,tick device 等。也可以通过查看 /proc/timer_stats 来查看当前系统中所有正在使用的 timer 的统计信息。包括所有正在使用 timer 的进程,启动 / 停止 timer 的函数,timer 使用的频率等信息。内核需要配置 CONFIG_TIMER_STATS=y,而且在系统启动时这个功能是关闭的,需要通过如下命令激活"echo 1 >/proc/timer_stats"。/proc/timer_stats 的显示格式如下所示:

<count>, <pid> <command> <start_func> (<expire_func>)

总结

随着应用环境的改变,使用需求的多样化,Linux 的时钟子系统也在不断的衍变。为了更好的支持音视频等对时间精度高的应用,Linux 提出了 hrtimer 这一高精度的时钟子系统,为了节约能源,Linux 改变了长久以来一直使用的基于 HZ 的 tick 机制,采用了 tickless 系统。即使是在对硬件平台的支持上,也是在不断改进。举例来说,由于 TSC 精度高,是首选的时钟源设备。但是现代 CPU 会在系统空闲时降低频率以节约能源,从而导致 TSC 的频率也会跟随发生改变。这样会导致 TSC 无法作为稳定的时钟源设备使用。随着新的 CPU 的出现,即使 CPU 的频率发生变化,TSC 也可以一直维持在固定频率上,从而确保其稳定性。在 Intel 的 Westmere 之前的 CPU 中,TSC 和 Local APIC Timer 类似,都会在 C3+ 状态时进入睡眠,从而导致系统需要切换到其他较低精度的时钟源设备上,但是在 Intel Westmere 之后的 CPU 中,TSC 可以一直保持运行状态,即使 CPU 进入了 C3+ 的睡眠状态,从而避免了时钟源设备的切换。在 SMP 的环境下,尤其是 16-COREs,32-COREs 这样的多 CPU 系统中,每个 CPU 之间的 TSC 很难保持同步,很容易出现"Out-of-Sync"。如果在这种环境下使用 TSC,会造成 CPU 之间的计时误差,然而在 Intel 最新的 Nehalem-EX CPU 中,已经可以确保 TSC 在多个 CPU 之间保持同步,从而可以使用 TSC 作为首选的时钟源设备。由此可见,无论是现在还是将来,只要有需要,内核的时钟子系统就会一直向前发展。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top