繁体   English   中英

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

[英]how do I get the time spent by the linux kernel servicing interrupts

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

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

是的,在调用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请看这些好的答案:

操作系统导致的irq延迟是多少?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM