我正在致力于优化电话机的内核,其中包括(除其他外)调整 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
我仍在寻找改进它的方法......