* Re: [PATCH 3/4] Make net watchdog timers 1 sec jiffy aligned
2007-05-30 19:55 ` David Miller
@ 2007-05-30 20:30 ` Stephen Hemminger
2007-05-30 21:35 ` Venki Pallipadi
2007-05-30 21:10 ` Venki Pallipadi
2007-05-30 22:10 ` Matt Mackall
2 siblings, 1 reply; 14+ messages in thread
From: Stephen Hemminger @ 2007-05-30 20:30 UTC (permalink / raw)
To: David Miller; +Cc: kaber, akpm, venkatesh.pallipadi, linux-kernel, netdev
On Wed, 30 May 2007 12:55:51 -0700 (PDT)
David Miller <davem@davemloft.net> wrote:
> From: Patrick McHardy <kaber@trash.net>
> Date: Wed, 30 May 2007 20:42:32 +0200
>
> > Stephen Hemminger wrote:
> > >>>Index: linux-2.6.22-rc-mm/net/sched/sch_generic.c
> > >>>===================================================================
> > >>>--- linux-2.6.22-rc-mm.orig/net/sched/sch_generic.c 2007-05-24 11:16:03.000000000 -0700
> > >>>+++ linux-2.6.22-rc-mm/net/sched/sch_generic.c 2007-05-25 15:10:02.000000000 -0700
> > >>>@@ -224,7 +224,8 @@
> > >>> if (dev->tx_timeout) {
> > >>> if (dev->watchdog_timeo <= 0)
> > >>> dev->watchdog_timeo = 5*HZ;
> > >>>- if (!mod_timer(&dev->watchdog_timer, jiffies + dev->watchdog_timeo))
> > >>>+ if (!mod_timer(&dev->watchdog_timer,
> > >>>+ round_jiffies(jiffies + dev->watchdog_timeo)))
> > >>> dev_hold(dev);
> > >>> }
> > >>> }
> > >>
> > >>Please cc netdev on net patches.
> > >>
> > >>Again, I worry that if people set the watchdog timeout to, say, 0.1 seconds
> > >>then they will get one second, which is grossly different.
> > >>
> > >>And if they were to set it to 1.5 seconds, they'd get 2.0 which is pretty
> > >>significant, too.
> > >
> > >
> > > Alternatively, we could change to a timer that is pushed forward after each
> > > TX, maybe using hrtimer and hrtimer_forward(). That way the timer would
> > > never run in normal case.
> >
> >
> > It seems wasteful to add per-packet overhead for tx timeouts, which
> > should be an exception. Do drivers really care about the exact
> > timeout value? Compared to a packet transmission time its incredibly
> > long anyways ..
>
> I agree, this change is absolutely rediculious and is just a blind
> cookie-cutter change made without consideration of what the code is
> doing and what it's requirements are.
>
what about the obvious compromise:
--- a/net/sched/sch_generic.c 2007-05-30 11:42:18.000000000 -0700
+++ b/net/sched/sch_generic.c 2007-05-30 13:29:34.000000000 -0700
@@ -203,7 +203,11 @@ static void dev_watchdog(unsigned long a
dev->name);
dev->tx_timeout(dev);
}
- if (!mod_timer(&dev->watchdog_timer, round_jiffies(jiffies + dev->watchdog_timeo)))
+
+ if (!mod_timer(&dev->watchdog_timer,
+ dev->watchdog_timeo > 2 * HZ
+ ? round_jiffies(jiffies + dev->watchdog_timeo)
+ : jiffies + dev->watchdog_timeo))
dev_hold(dev);
}
}
--
Stephen Hemminger <shemminger@linux-foundation.org>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/4] Make net watchdog timers 1 sec jiffy aligned
2007-05-30 20:30 ` Stephen Hemminger
@ 2007-05-30 21:35 ` Venki Pallipadi
2007-05-31 10:36 ` Andi Kleen
0 siblings, 1 reply; 14+ messages in thread
From: Venki Pallipadi @ 2007-05-30 21:35 UTC (permalink / raw)
To: Stephen Hemminger
Cc: David Miller, kaber, akpm, venkatesh.pallipadi, linux-kernel,
netdev
On Wed, May 30, 2007 at 01:30:39PM -0700, Stephen Hemminger wrote:
> On Wed, 30 May 2007 12:55:51 -0700 (PDT)
> David Miller <davem@davemloft.net> wrote:
>
> > From: Patrick McHardy <kaber@trash.net>
> > Date: Wed, 30 May 2007 20:42:32 +0200
> >
> > > Stephen Hemminger wrote:
> > > >>>Index: linux-2.6.22-rc-mm/net/sched/sch_generic.c
> > > >>>===================================================================
> > > >>>--- linux-2.6.22-rc-mm.orig/net/sched/sch_generic.c 2007-05-24 11:16:03.000000000 -0700
> > > >>>+++ linux-2.6.22-rc-mm/net/sched/sch_generic.c 2007-05-25 15:10:02.000000000 -0700
> > > >>>@@ -224,7 +224,8 @@
> > > >>> if (dev->tx_timeout) {
> > > >>> if (dev->watchdog_timeo <= 0)
> > > >>> dev->watchdog_timeo = 5*HZ;
> > > >>>- if (!mod_timer(&dev->watchdog_timer, jiffies + dev->watchdog_timeo))
> > > >>>+ if (!mod_timer(&dev->watchdog_timer,
> > > >>>+ round_jiffies(jiffies + dev->watchdog_timeo)))
> > > >>> dev_hold(dev);
> > > >>> }
> > > >>> }
> > > >>
> > > >>Please cc netdev on net patches.
> > > >>
> > > >>Again, I worry that if people set the watchdog timeout to, say, 0.1 seconds
> > > >>then they will get one second, which is grossly different.
> > > >>
> > > >>And if they were to set it to 1.5 seconds, they'd get 2.0 which is pretty
> > > >>significant, too.
> > > >
> > > >
> > > > Alternatively, we could change to a timer that is pushed forward after each
> > > > TX, maybe using hrtimer and hrtimer_forward(). That way the timer would
> > > > never run in normal case.
> > >
> > >
> > > It seems wasteful to add per-packet overhead for tx timeouts, which
> > > should be an exception. Do drivers really care about the exact
> > > timeout value? Compared to a packet transmission time its incredibly
> > > long anyways ..
> >
> > I agree, this change is absolutely rediculious and is just a blind
> > cookie-cutter change made without consideration of what the code is
> > doing and what it's requirements are.
> >
>
> what about the obvious compromise:
>
> --- a/net/sched/sch_generic.c 2007-05-30 11:42:18.000000000 -0700
> +++ b/net/sched/sch_generic.c 2007-05-30 13:29:34.000000000 -0700
> @@ -203,7 +203,11 @@ static void dev_watchdog(unsigned long a
> dev->name);
> dev->tx_timeout(dev);
> }
> - if (!mod_timer(&dev->watchdog_timer, round_jiffies(jiffies + dev->watchdog_timeo)))
> +
> + if (!mod_timer(&dev->watchdog_timer,
> + dev->watchdog_timeo > 2 * HZ
> + ? round_jiffies(jiffies + dev->watchdog_timeo)
> + : jiffies + dev->watchdog_timeo))
> dev_hold(dev);
> }
> }
>
>
If this does not work:
Another option is to use 'deferrable timer' here which will be called at
same as before time when CPU is busy and on idle CPU it will be delayed until
CPU comes out of idle due to any other events.
Thanks,
Venki
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/4] Make net watchdog timers 1 sec jiffy aligned
2007-05-30 21:35 ` Venki Pallipadi
@ 2007-05-31 10:36 ` Andi Kleen
0 siblings, 0 replies; 14+ messages in thread
From: Andi Kleen @ 2007-05-31 10:36 UTC (permalink / raw)
To: Venki Pallipadi
Cc: Stephen Hemminger, David Miller, kaber, akpm, linux-kernel,
netdev
Venki Pallipadi <venkatesh.pallipadi@intel.com> writes:
>
> If this does not work:
> Another option is to use 'deferrable timer' here which will be called at
> same as before time when CPU is busy and on idle CPU it will be delayed until
> CPU comes out of idle due to any other events.
That would sound like a good idea here and at least power wise
it should be nearly free
-Andi
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/4] Make net watchdog timers 1 sec jiffy aligned
2007-05-30 19:55 ` David Miller
2007-05-30 20:30 ` Stephen Hemminger
@ 2007-05-30 21:10 ` Venki Pallipadi
2007-05-30 22:10 ` Matt Mackall
2 siblings, 0 replies; 14+ messages in thread
From: Venki Pallipadi @ 2007-05-30 21:10 UTC (permalink / raw)
To: David Miller
Cc: kaber, shemminger, akpm, venkatesh.pallipadi, linux-kernel,
netdev
On Wed, May 30, 2007 at 12:55:51PM -0700, David Miller wrote:
> From: Patrick McHardy <kaber@trash.net>
> Date: Wed, 30 May 2007 20:42:32 +0200
>
> > Stephen Hemminger wrote:
> > >>>Index: linux-2.6.22-rc-mm/net/sched/sch_generic.c
> > >>>===================================================================
> > >>>--- linux-2.6.22-rc-mm.orig/net/sched/sch_generic.c 2007-05-24 11:16:03.000000000 -0700
> > >>>+++ linux-2.6.22-rc-mm/net/sched/sch_generic.c 2007-05-25 15:10:02.000000000 -0700
> > >>>@@ -224,7 +224,8 @@
> > >>> if (dev->tx_timeout) {
> > >>> if (dev->watchdog_timeo <= 0)
> > >>> dev->watchdog_timeo = 5*HZ;
> > >>>- if (!mod_timer(&dev->watchdog_timer, jiffies + dev->watchdog_timeo))
> > >>>+ if (!mod_timer(&dev->watchdog_timer,
> > >>>+ round_jiffies(jiffies + dev->watchdog_timeo)))
> > >>> dev_hold(dev);
> > >>> }
> > >>> }
> > >>
> > >>Please cc netdev on net patches.
> > >>
> > >>Again, I worry that if people set the watchdog timeout to, say, 0.1 seconds
> > >>then they will get one second, which is grossly different.
> > >>
> > >>And if they were to set it to 1.5 seconds, they'd get 2.0 which is pretty
> > >>significant, too.
> > >
> > >
> > > Alternatively, we could change to a timer that is pushed forward after each
> > > TX, maybe using hrtimer and hrtimer_forward(). That way the timer would
> > > never run in normal case.
> >
> >
> > It seems wasteful to add per-packet overhead for tx timeouts, which
> > should be an exception. Do drivers really care about the exact
> > timeout value? Compared to a packet transmission time its incredibly
> > long anyways ..
>
> I agree, this change is absolutely rediculious and is just a blind
> cookie-cutter change made without consideration of what the code is
> doing and what it's requirements are.
I hope I could atleast highlight the issue here despite the cookie-cutter
patch..
On a totally idle system I have something like 85 wakeups for every 5 seconds
which I am trying to reduce (to reduce the power consumption and increase
battery life. And 1 interrupt out of 85 happens to be netdev watchdog timer.
Thanks,
Venki
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/4] Make net watchdog timers 1 sec jiffy aligned
2007-05-30 19:55 ` David Miller
2007-05-30 20:30 ` Stephen Hemminger
2007-05-30 21:10 ` Venki Pallipadi
@ 2007-05-30 22:10 ` Matt Mackall
2007-05-30 22:29 ` David Miller
2 siblings, 1 reply; 14+ messages in thread
From: Matt Mackall @ 2007-05-30 22:10 UTC (permalink / raw)
To: David Miller
Cc: kaber, shemminger, akpm, venkatesh.pallipadi, linux-kernel,
netdev
On Wed, May 30, 2007 at 12:55:51PM -0700, David Miller wrote:
> From: Patrick McHardy <kaber@trash.net>
> Date: Wed, 30 May 2007 20:42:32 +0200
>
> > Stephen Hemminger wrote:
> > >>>Index: linux-2.6.22-rc-mm/net/sched/sch_generic.c
> > >>>===================================================================
> > >>>--- linux-2.6.22-rc-mm.orig/net/sched/sch_generic.c 2007-05-24 11:16:03.000000000 -0700
> > >>>+++ linux-2.6.22-rc-mm/net/sched/sch_generic.c 2007-05-25 15:10:02.000000000 -0700
> > >>>@@ -224,7 +224,8 @@
> > >>> if (dev->tx_timeout) {
> > >>> if (dev->watchdog_timeo <= 0)
> > >>> dev->watchdog_timeo = 5*HZ;
> > >>>- if (!mod_timer(&dev->watchdog_timer, jiffies + dev->watchdog_timeo))
> > >>>+ if (!mod_timer(&dev->watchdog_timer,
> > >>>+ round_jiffies(jiffies + dev->watchdog_timeo)))
> > >>> dev_hold(dev);
> > >>> }
> > >>> }
> > >>
> > >>Please cc netdev on net patches.
> > >>
> > >>Again, I worry that if people set the watchdog timeout to, say, 0.1 seconds
> > >>then they will get one second, which is grossly different.
> > >>
> > >>And if they were to set it to 1.5 seconds, they'd get 2.0 which is pretty
> > >>significant, too.
> > >
> > >
> > > Alternatively, we could change to a timer that is pushed forward after each
> > > TX, maybe using hrtimer and hrtimer_forward(). That way the timer would
> > > never run in normal case.
> >
> >
> > It seems wasteful to add per-packet overhead for tx timeouts, which
> > should be an exception. Do drivers really care about the exact
> > timeout value? Compared to a packet transmission time its incredibly
> > long anyways ..
>
> I agree, this change is absolutely rediculious and is just a blind
> cookie-cutter change made without consideration of what the code is
> doing and what it's requirements are.
What are you agreeing with, Dave?
Are you agreeing that "it seems wasteful to add per-packet overhead"?
This patch is not doing that.
A quick grep shows that most things are using multi-second timeouts
here. Of the ones that aren't, a number are using .4s, and many more
aren't even in units of HZ. Makes me wonder if the various boards
using 50ms are being overzealous.
--
Mathematics is the supreme nostalgia of our time.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/4] Make net watchdog timers 1 sec jiffy aligned
2007-05-30 22:10 ` Matt Mackall
@ 2007-05-30 22:29 ` David Miller
2007-05-30 22:36 ` Matt Mackall
0 siblings, 1 reply; 14+ messages in thread
From: David Miller @ 2007-05-30 22:29 UTC (permalink / raw)
To: mpm; +Cc: kaber, shemminger, akpm, venkatesh.pallipadi, linux-kernel,
netdev
From: Matt Mackall <mpm@selenic.com>
Date: Wed, 30 May 2007 17:10:39 -0500
> Are you agreeing that "it seems wasteful to add per-packet overhead"?
> This patch is not doing that.
Yes, and I know that :-)
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/4] Make net watchdog timers 1 sec jiffy aligned
2007-05-30 22:29 ` David Miller
@ 2007-05-30 22:36 ` Matt Mackall
2007-05-30 23:02 ` David Miller
0 siblings, 1 reply; 14+ messages in thread
From: Matt Mackall @ 2007-05-30 22:36 UTC (permalink / raw)
To: David Miller
Cc: kaber, shemminger, akpm, venkatesh.pallipadi, linux-kernel,
netdev
On Wed, May 30, 2007 at 03:29:39PM -0700, David Miller wrote:
> From: Matt Mackall <mpm@selenic.com>
> Date: Wed, 30 May 2007 17:10:39 -0500
>
> > Are you agreeing that "it seems wasteful to add per-packet overhead"?
> > This patch is not doing that.
>
> Yes, and I know that :-)
Is there a real reason for watchdog_timeo to be all over the map?
--
Mathematics is the supreme nostalgia of our time.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/4] Make net watchdog timers 1 sec jiffy aligned
2007-05-30 22:36 ` Matt Mackall
@ 2007-05-30 23:02 ` David Miller
0 siblings, 0 replies; 14+ messages in thread
From: David Miller @ 2007-05-30 23:02 UTC (permalink / raw)
To: mpm; +Cc: kaber, shemminger, akpm, venkatesh.pallipadi, linux-kernel,
netdev
From: Matt Mackall <mpm@selenic.com>
Date: Wed, 30 May 2007 17:36:12 -0500
> On Wed, May 30, 2007 at 03:29:39PM -0700, David Miller wrote:
> > From: Matt Mackall <mpm@selenic.com>
> > Date: Wed, 30 May 2007 17:10:39 -0500
> >
> > > Are you agreeing that "it seems wasteful to add per-packet overhead"?
> > > This patch is not doing that.
> >
> > Yes, and I know that :-)
>
> Is there a real reason for watchdog_timeo to be all over the map?
In theory it's a hardware implementation and link speed specific value,
in reality nearly everyone just copies values from other drivers.
^ permalink raw reply [flat|nested] 14+ messages in thread