--- 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)