内核 - 测量定时器中断率

内核 - 测量定时器中断率

我正在致力于优化电话机的内核,其中包括(除其他外)调整 HZ 速率和抢占模型。

最初内核是用默认的 250 HZ 和自愿抢占编译的,并且循环测试目前显示的最大延迟为5859,这很好,但不是最佳的。理想情况下,我希望它低于 3000,这就是我决定深入挖掘的原因。

然而,令人困惑的是,在尝试获取实际的定时器中断频率时:当我这样做时

cat /proc/interrupts | grep LOC ; sleep 10; cat /proc/interrupts | grep LOC

我明白了

LOC:        212        370         92         81   Local timer interrupts
LOC:        212        370         92         81   Local timer interrupts

所以我的值不会改变(我相信第二行应该增加 250)。

另外,当我尝试按照描述测量它时这里,我得到

kernel timer interrupt frequency is approx. 2518 Hz

关于如何正确计算它有什么想法吗?

也许关于语音内核优化(RTC/SLAB/IO Scheduler)还有其他建议吗?

更新:添加

CONFIG_HZ_1000=y
CONFIG_HZ=1000
CONFIG_PREEMPT_RCU=y
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_PREEMPT=y
CONFIG_PREEMPT_COUNT=y
CONFIG_DEBUG_PREEMPT=y

已将我的延迟减少到

T: 0 ( 4628) P:80 I:10000 C:   4059 Min:     13 Act:   33 Avg:   69 Max:    

3634

我仍在寻找改进它的方法......

相关内容