--- x/net/sched/sch_fq_pie.c +++ y/net/sched/sch_fq_pie.c @@ -383,9 +383,12 @@ static void fq_pie_timer(struct timer_li root_lock = qdisc_lock(qdisc_root_sleeping(sch)); spin_lock(root_lock); - for (idx = 0; idx < q->flows_cnt; idx++) + for (idx = 0; idx < q->flows_cnt; idx++) { pie_calculate_probability(&q->p_params, &q->flows[idx].vars, q->flows[idx].backlog); + if (idx > 100) + break; + } /* reset the timer to fire after 'tupdate' jiffies. */ if (q->p_params.tupdate)