我正在开发一个小型Linux嵌入式网络桥接设备(带有2.6 Tickless Kernel)。
我正在尝试减少CPU唤醒时间(当系统空闲时)并检查可以避免哪些定时器。
我注意到虽然在网桥上明确禁用了STP,但是hello计时器和保持计时器每2秒(默认时间)到期。
echo 1 > /proc/timer_stats; sleep 30; echo 0 > /proc/timer_stats ; cat /proc/timer_stats
Timer Stats Version: v0.2
Sample period: 30.016 s
1, 1 init hrtimer_start_range_ns (hrtimer_wakeup)
15, 0 swapper br_transmit_config (br_hold_timer_expired)
15, 0 swapper run_timer_softirq (br_hello_timer_expired)
15, 5 events/0 worker_thread (delayed_work_timer_fn)
2D, 5 events/0 neigh_periodic_work (delayed_work_timer_fn)
1, 502 sleep hrtimer_start_range_ns (hrtimer_wakeup)
5, 0 swapper run_timer_softirq (sync_supers_timer_fn)
5, 10 bdi-default bdi_forker_task (process_timeout)
2D, 5 events/0 neigh_periodic_work (delayed_work_timer_fn)
1, 5 events/0 worker_thread (delayed_work_timer_fn)
1, 548 sleep hrtimer_start_range_ns (hrtimer_wakeup)
63 total events, 2.098 events/sec
查看内核桥接代码,无论STP模式如何(禁用/启用),似乎都会设置这些定时器。
一种方法可能是让计时器的到期时间更长(brctl sethello br0 30),虽然不理想但还可以。
另一种方法是修补内核,以便在禁用STP时不会进行定时器初始化,修补内核也不理想。
即使STP被禁用,是否有理由初始化这些定时器?
有没有人有不同的想法/方法?
由于