| Submitter | Jarek Poplawski |
|---|---|
| Date | Dec. 9, 2008, 10:21 a.m. |
| Message ID | <20081209102103.GA14862@ff.dom.local> |
| Download | mbox | patch |
| Permalink | /patch/12906/ |
| State | Changes Requested |
| Delegated to: | David Miller |
| Headers | show |
Comments
Patch
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c index f89fd71..d6eb4a7 100644 --- a/net/sched/sch_htb.c +++ b/net/sched/sch_htb.c @@ -685,8 +685,8 @@ static psched_time_t htb_do_events(struct htb_sched *q, int level) if (cl->cmode != HTB_CAN_SEND) htb_add_to_wait_tree(q, cl, diff); } - /* too much load - let's continue on next jiffie */ - return q->now + PSCHED_TICKS_PER_SEC / HZ; + /* too much load - let's continue on next jiffie (including above) */ + return q->now + 2 * PSCHED_TICKS_PER_SEC / HZ; } /* Returns class->node+prio from id-tree where classe's id is >= id. NULL
Next event time should consider jiffies used for recounting. Otherwise qdisc_watchdog_schedule() triggers hrtimer immediately with the event in the past, and may cause very high ksoftirqd cpu usage (if highres is on). Signed-off-by: Jarek Poplawski <jarkao2@gmail.com> --- net/sched/sch_htb.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)