Re: [PATCH -tip-rcu] Make rcutorture more vicious: make quiescent rcutorture less power-hungry

Paul E. McKenney
2008-06-22T21:03:17Z

On Sun, Jun 22, 2008 at 01:17:12PM -0700, Arjan van de Ven wrote:
> On Sun, 22 Jun 2008 13:06:38 -0700
> "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> wrote:
>
> > This patch makes the non-module rcutorture a bit more friendly to
> > the power-conservation code. This is a rather simple-minded approach.
> > More sophisticated approaches would get rid of the rcutorture tasks
> > while rcutorture execution was suppressed, but attempts thus far to
> > do this have not gone well -- calling rcu_torture_init() from a /proc
> > callout results in oopses.
> >
> > Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> > ---
> >
> > rcutorture.c | 5 ++++-
> > 1 file changed, 4 insertions(+), 1 deletion(-)
> >
> > diff -urpNa -X dontdiff
> > linux-2.6.26-rc4-rcut2-proc/kernel/rcutorture.c
> > linux-2.6.26-rc4-rcut3-procq/kernel/rcutorture.c ---
> > linux-2.6.26-rc4-rcut2-proc/kernel/rcutorture.c 2008-06-22
> > 10:29:04.000000000 -0700 +++
> > linux-2.6.26-rc4-rcut3-procq/kernel/rcutorture.c 2008-06-22
> > 12:20:10.000000000 -0700 @@ -196,7 +196,10 @@ static void
> > rcu_stutter_wait(void) { while (stutter_pause_test
> > || !rcutorture_runnable)
> > - schedule_timeout_interruptible(1);
> > + if (rcutorture_runnable)
> > + schedule_timeout_interruptible(1);
> > + else
> > + schedule_timeout_interruptible(HZ);
> > }
>
> could you also make it use round_jiffies_relative() to make the power
> impact even less.....
> (by coalescing various "once a second" timers like this)

Good point!!! As follows, on top of the previous one.

This patch aligns the rcutorture wakeup times to align with all other
multiple-of-a-second wakeups to further decrease power consumption.

Suggested-by: Arjan van de Ven <arjan@infradead.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---

rcutorture.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff -urpNa -X dontdiff linux-2.6.26-rc4-rcut3-procq/kernel/rcutorture.c linux-2.6.26-rc4-rcut4-procqp/kernel/rcutorture.c
--- linux-2.6.26-rc4-rcut3-procq/kernel/rcutorture.c 2008-06-22 12:20:10.000000000 -0700
+++ linux-2.6.26-rc4-rcut4-procqp/kernel/rcutorture.c 2008-06-22 13:53:22.000000000 -0700
@@ -1,3 +1,4 @@
+
/*
* Read-Copy Update module-based torture test facility
*
@@ -199,7 +200,7 @@ rcu_stutter_wait(void)
if (rcutorture_runnable)
schedule_timeout_interruptible(1);
else
- schedule_timeout_interruptible(HZ);
+ schedule_timeout_interruptible(round_jiffies_relative(HZ));
}

/*