Re: deadlocks if use htb

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Jarek Poplawski
Date: Thursday, December 11, 2008 - 1:46 am

On Wed, Dec 10, 2008 at 06:14:28PM +0300, Badalian Vyacheslav wrote:

Hi!


Not much, but I can have if you only are willing to test them...
I attach below a patch which combines 2 patches I sent yesterday to
netdev (PATCH 7/6 and 8/6) vs. 2.6.27.7 (named testing patch #3 here).

You can still try the testing patch #2 I sent previously (quoted below)
with or without this new #3 patch.

Thanks,
Jarek P.

...


-----------> (testing patch #3)

diff -Nurp a2.6.27.7/net/sched/sch_htb.c b2.6.27.7/net/sched/sch_htb.c
--- a2.6.27.7/net/sched/sch_htb.c	2008-12-11 08:16:16.000000000 +0000
+++ b2.6.27.7/net/sched/sch_htb.c	2008-12-11 08:20:27.000000000 +0000
@@ -696,12 +696,13 @@ static void htb_charge_class(struct htb_
  * next pending event (0 for no event in pq).
  * Note: Applied are events whose have cl->pq_key <= q->now.
  */
-static psched_time_t htb_do_events(struct htb_sched *q, int level)
+static psched_time_t htb_do_events(struct htb_sched *q, int level,
+				   unsigned long start)
 {
 	/* don't run for longer than 2 jiffies; 2 is used instead of
 	   1 to simplify things when jiffy is going to be incremented
 	   too soon */
-	unsigned long stop_at = jiffies + 2;
+	unsigned long stop_at = start + 2;
 	while (time_before(jiffies, stop_at)) {
 		struct htb_class *cl;
 		long diff;
@@ -720,8 +721,8 @@ static psched_time_t htb_do_events(struc
 		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
@@ -880,6 +881,7 @@ static struct sk_buff *htb_dequeue(struc
 	struct htb_sched *q = qdisc_priv(sch);
 	int level;
 	psched_time_t next_event;
+	unsigned long start_at;
 
 	/* try to dequeue direct packets as high prio (!) to minimize cpu work */
 	skb = __skb_dequeue(&q->direct_queue);
@@ -892,6 +894,7 @@ static struct sk_buff *htb_dequeue(struc
 	if (!sch->q.qlen)
 		goto fin;
 	q->now = psched_get_time();
+	start_at = jiffies;
 
 	next_event = q->now + 5 * PSCHED_TICKS_PER_SEC;
 	q->nwc_hit = 0;
@@ -901,14 +904,14 @@ static struct sk_buff *htb_dequeue(struc
 		psched_time_t event;
 
 		if (q->now >= q->near_ev_cache[level]) {
-			event = htb_do_events(q, level);
+			event = htb_do_events(q, level, start_at);
 			if (!event)
 				event = q->now + PSCHED_TICKS_PER_SEC;
 			q->near_ev_cache[level] = event;
 		} else
 			event = q->near_ev_cache[level];
 
-		if (event && next_event > event)
+		if (next_event > event)
 			next_event = event;
 
 		m = ~q->row_mask[level];
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
deadlocks if use htb, Badalian Vyacheslav, (Thu Oct 9, 10:44 pm)
Re: deadlocks if use htb, Jarek Poplawski, (Fri Oct 10, 12:56 am)
Re: deadlocks if use htb, Badalian Vyacheslav, (Fri Oct 10, 1:46 am)
Re: deadlocks if use htb, Badalian Vyacheslav, (Fri Oct 10, 1:52 am)
Re: deadlocks if use htb, Jarek Poplawski, (Fri Oct 10, 2:04 am)
Re: deadlocks if use htb, Jarek Poplawski, (Fri Oct 10, 2:51 am)
Re: deadlocks if use htb, Patrick McHardy, (Fri Oct 10, 5:32 am)
Re: deadlocks if use htb, Patrick McHardy, (Fri Oct 10, 5:34 am)
Re: deadlocks if use htb, Badalian Vyacheslav, (Fri Oct 10, 5:54 am)
Re: deadlocks if use htb, Badalian Vyacheslav, (Thu Oct 16, 1:28 am)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Oct 16, 1:40 am)
Re: deadlocks if use htb, Badalian Vyacheslav, (Tue Oct 21, 11:06 pm)
Re: deadlocks if use htb, Jarek Poplawski, (Wed Oct 22, 12:02 am)
Re: deadlocks if use htb, Badalian Vyacheslav, (Wed Dec 10, 8:14 am)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Dec 11, 1:46 am)
Re: deadlocks if use htb, Jarek Poplawski, (Mon Dec 15, 4:13 am)
Re: deadlocks if use htb, Badalian Vyacheslav, (Tue Dec 16, 12:37 am)
Re: deadlocks if use htb, Badalian Vyacheslav, (Wed Dec 17, 11:43 pm)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Dec 18, 1:17 am)
Re: deadlocks if use htb, Badalian Vyacheslav, (Thu Dec 18, 4:23 am)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Dec 18, 4:37 am)
Re: deadlocks if use htb, Chris Caputo, (Tue Jan 13, 7:43 pm)
Re: deadlocks if use htb, Jarek Poplawski, (Tue Jan 13, 11:39 pm)
Re: deadlocks if use htb, Denys Fedoryschenko, (Wed Jan 14, 5:17 am)
Re: deadlocks if use htb, Jarek Poplawski, (Wed Jan 14, 5:36 am)
Re: deadlocks if use htb, Denys Fedoryschenko, (Wed Jan 14, 5:41 am)
Re: deadlocks if use htb, Peter Zijlstra, (Wed Jan 14, 5:50 am)
Re: deadlocks if use htb, Jarek Poplawski, (Wed Jan 14, 6:04 am)
Re: deadlocks if use htb, Denys Fedoryschenko, (Wed Jan 14, 6:05 am)
Re: deadlocks if use htb, Jarek Poplawski, (Wed Jan 14, 6:12 am)
Re: deadlocks if use htb, Peter Zijlstra, (Wed Jan 14, 6:15 am)
Re: deadlocks if use htb, Denys Fedoryschenko, (Wed Jan 14, 6:19 am)
Re: deadlocks if use htb, Jarek Poplawski, (Wed Jan 14, 6:26 am)
Re: deadlocks if use htb, Peter Zijlstra, (Wed Jan 14, 6:32 am)
Re: deadlocks if use htb, Jarek Poplawski, (Wed Jan 14, 6:57 am)
Re: deadlocks if use htb, Jarek Poplawski, (Wed Jan 14, 7:13 am)
Re: deadlocks if use htb, Peter Zijlstra, (Wed Jan 14, 7:28 am)
Re: deadlocks if use htb, Jarek Poplawski, (Wed Jan 14, 7:39 am)
Re: deadlocks if use htb, Chris Caputo, (Wed Jan 14, 11:02 am)
Re: deadlocks if use htb, Jarek Poplawski, (Wed Jan 14, 11:53 pm)
Re: deadlocks if use htb, Badalian Vyacheslav, (Thu Jan 15, 12:12 am)
Re: deadlocks if use htb, Chris Caputo, (Thu Jan 15, 12:26 am)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Jan 15, 12:54 am)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Jan 15, 1:09 am)
Re: deadlocks if use htb, Denys Fedoryschenko, (Thu Jan 15, 2:01 am)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Jan 15, 2:01 am)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Jan 15, 2:06 am)
Re: deadlocks if use htb, Badalian Vyacheslav, (Thu Jan 15, 2:40 am)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Jan 15, 2:45 am)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Jan 15, 2:54 am)
Re: deadlocks if use htb, Denys Fedoryschenko, (Thu Jan 15, 2:57 am)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Jan 15, 3:06 am)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Jan 15, 3:10 am)
Re: deadlocks if use htb, Denys Fedoryschenko, (Thu Jan 15, 3:40 am)
Re: deadlocks if use htb, Peter Zijlstra, (Thu Jan 15, 3:46 am)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Jan 15, 3:54 am)
Re: deadlocks if use htb, Chris Caputo, (Thu Jan 15, 5:00 am)
Re: deadlocks if use htb, Jarek Poplawski, (Thu Jan 15, 5:18 am)
Re: deadlocks if use htb, Chris Caputo, (Thu Jan 15, 6:53 am)
Re: deadlocks if use htb, Badalian Vyacheslav, (Thu Jan 15, 11:51 pm)
Re: deadlocks if use htb, David Miller, (Sun Jan 18, 10:46 pm)
[PATCH] Re: deadlocks if use htb, Jarek Poplawski, (Sun Jan 18, 11:57 pm)
Re: [PATCH] Re: deadlocks if use htb, Badalian Vyacheslav, (Mon Jan 19, 12:42 am)
Re: [PATCH] Re: deadlocks if use htb, Jarek Poplawski, (Mon Jan 19, 12:57 am)
Re: [PATCH] Re: deadlocks if use htb, David Miller, (Mon Jan 19, 6:29 pm)