On 11/05/15 00:44, Rasool Al-Saadi wrote:

On Wednesday, 4 November 2015 12:34 AM, Hans Petter Selasky wrote:
On 11/03/15 14:14, Rasool Al-Saadi wrote:
Does anyone have thoughts on what we can test next to narrow down the
root-cause of these unusual timing jumps?

You might also want to test the "projects/hps_head" branch, which uses a bit
different callout implementation.

Thanks Hans for your suggestion.
I have tried "projects/hps_head" branch and the result is better (number of spikes 
is less than in the master branch). However, the problem still exists on the same timer 
interrupt frequencies (>3000 in my case). You can see in this graph 
https://goo.gl/photos/C2Mqx4xhMQuzxWnz6 the RTT spikes still there.

Do you have any further suggestions?


Hi,

If the jitter is in the xx milliseconds range, like your graph shows, my guess is that td_owepreemt is not set when we return from the dummynet() callback. See attached patch.

Else you might want to try to remove the C_HARDCLOCK flag from callout_reset_sbt() in ip_dummynet.c.

--HPS

Index: sys/netpfil/ipfw/ip_dummynet.c
===================================================================
--- sys/netpfil/ipfw/ip_dummynet.c	(revision 290134)
+++ sys/netpfil/ipfw/ip_dummynet.c	(working copy)
@@ -78,6 +78,8 @@
 static struct task	dn_task;
 static struct taskqueue	*dn_tq = NULL;
 
+#include <sys/sched.h>
+
 static void
 dummynet(void *arg)
 {
@@ -84,6 +86,9 @@
 
 	(void)arg;	/* UNUSED */
 	taskqueue_enqueue_fast(dn_tq, &dn_task);
+
+	/* ensure taskqueue gets running */
+	sched_preempt(curthread);
 }
 
 void
_______________________________________________
freebsd-net@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to