哪个cpu增加了SMP中的jiffies?

时间:2012-07-19 11:46:41

标签: linux-kernel linux-device-driver

当我读到时,定时器ISR在每个定时器滴答时增加jiffies。但在SMP中,所有CPU都有自己的定时器中断,因此它们自己的定时器ISR。所以我的问题是:

所有CPU的jiffies都是全局的吗?如果是这样,在定时器ISR中如何以及哪个CPU递增它?

根据我的理解,jiffies不能是每个cpu,否则在不同的cpu上安排的相同进程将看到不同的jiffy值。

由于

2 个答案:

答案 0 :(得分:5)

有两个定时器中断:
每个CPU上的本地定时器中断(LOC中的/proc/interrupts)每个jiffy触发一次 全局定时器中断(中断0)每个jiffy触发一次,一个CPU。它会增加jiffies

请注意,“Tickless Kernel”配置选项(在Linux 2.6.21中引入,CONFIG_NO_HZ)会删除这些中断。使用无滴答内核,不再有周期性中断。相反,当一个进程启动它的量子时,Linux会在硬件中设置一个“闹钟”,以便在量子结束时触发中断。

答案 1 :(得分:0)

请参阅此帖子link

基本上,tick_do_timer_cpu变量保存CPU ID,该ID应该运行管理jiffies的代码。 jiffies管理功能执行可以从一个核心跳转到另一个核心,但显然不能在同一时间在不同的核心上进行更新。

另见kernel/time/tick-common.c