如何获得linux内核服务中断所花费的时间

时间:2013-04-17 19:33:41

标签: c linux performance linux-kernel irq

我想跟踪一段代码中的抖动,我知道有很多潜在的来源(任务切换,系统调用,缓存未命中,将任务移动到另一个CPU,cpu限制等),我知道如何跟踪所有那些但我唯一不知道如何跟踪的是内核花在服务中断上的时间。数据在/ proc / stat中,但是以低分辨率测量soft-irq和irq中的时间,我正在寻找更精细分辨率的东西。

有没有办法让内核服务中断的时间减少到纳秒或至少微秒?

1 个答案:

答案 0 :(得分:0)

是的,在调用handle_IRQ之前和之后放一个printk,屏幕上的计时器通常是高分辨率的:

 86 /*
 87  * asm_do_IRQ is the interface to be used from assembly code.
 88  */
 89 asmlinkage void __exception_irq_entry
 90 asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
 91 {
 92         handle_IRQ(irq, regs);
 93 }
 94 

如果您询问irq_latency看到这些不错的答案:

What is the irq latency due to the operating system?