Sim*_*onC 4 linux scheduling kernel interrupt
我有两个关于 Linux 内核的问题。具体来说,有没有人确切地知道 Linux 在定时器中断中做了什么?是否有一些关于此的文档?在构建内核时更改 CONFIG_HZ 设置会产生什么影响?
提前致谢!
Ste*_*itt 10
Linux 定时器中断处理程序并没有那么直接。对于x86,你会发现默认的PIT / HPET计时器中断处理程序中arch/x86/kernel/time.c
:
static irqreturn_t timer_interrupt(int irq, void *dev_id)
{
global_clock_event->event_handler(global_clock_event);
return IRQ_HANDLED;
}
Run Code Online (Sandbox Code Playgroud)
这将调用全局时钟事件的事件处理程序,tick_handler_periodic
默认情况下,它更新 jiffies 计数器,计算全局负载,并更新其他一些跟踪时间的地方。
作为中断发生的副作用,__schedule
可能最终会被调用,因此定时器中断也可能导致任务切换(与任何其他中断一样)。
更改CONFIG_HZ 会更改定时器中断的周期。增加HZ
意味着它更频繁地触发,因此有更多与计时器相关的开销,但任务调度等待一段时间的机会更少(因此交互性得到改善);减少HZ
意味着它较少触发,因此与计时器相关的开销较少,但任务等待调度的风险较高(因此以交互响应为代价提高了吞吐量)。与往常一样,最佳折衷方案取决于您的特定工作负载。CONFIG_HZ
无论如何,如今与调度方面的相关性较低;请参阅如何更改 Linux CPU 调度程序使用的时间片长度?
另请参阅Linux 中如何处理中断?
归档时间: |
|
查看次数: |
3283 次 |
最近记录: |