Messages in this thread | | | Date | Mon, 2 May 2016 12:30:16 -0700 | From | "Paul E. McKenney" <> | Subject | Re: [RFC rcu/next] torture: Stop onoff task if there is only one cpu |
| |
On Mon, May 02, 2016 at 10:18:49AM -0700, Josh Triplett wrote: > On Mon, May 02, 2016 at 10:30:00AM +0800, Boqun Feng wrote: > > If the whole system has only one cpu, that cpu won't be able to be > > offlined, so there is no need onoff task is stil running. > > > > Signed-off-by: Boqun Feng <boqun.feng@gmail.com> > > --- > > > > I hit something like the following while I was running rcutorture > > in a guest with only one vCPU: > > > > [ 31.197457] rcu-torture:torture_onoff task: offlining 0 > > [ 31.197508] rcu-torture:torture_onoff task: offline 0 failed: errno -16 > > > > I know this is an expected behavior, but think we could just stop > > the onoff task if there is only one cpu. > > I find it a little bit unfortunate that this kicks off a thread just to > immediately exit that thread, rather than never starting it in the first > place. However, it also seems like the most convenient solution here, > and I don't see much point in going out of the way to optimize this test > for uniprocessor systems. > > Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Thank you both! Queued for testing and further review.
Thanx, Paul
> > kernel/torture.c | 8 ++++++++ > > 1 file changed, 8 insertions(+) > > > > diff --git a/kernel/torture.c b/kernel/torture.c > > index fb39a06bbef5..a85b7d61d9dd 100644 > > --- a/kernel/torture.c > > +++ b/kernel/torture.c > > @@ -194,6 +194,12 @@ torture_onoff(void *arg) > > for_each_online_cpu(cpu) > > maxcpu = cpu; > > WARN_ON(maxcpu < 0); > > + > > + if (maxcpu == 0) { > > + VERBOSE_TOROUT_STRING("only one cpu is found, onoff is impossible"); > > + goto stop; > > + } > > + > > if (onoff_holdoff > 0) { > > VERBOSE_TOROUT_STRING("torture_onoff begin holdoff"); > > schedule_timeout_interruptible(onoff_holdoff); > > @@ -209,6 +215,8 @@ torture_onoff(void *arg) > > &sum_online, &min_online, &max_online); > > schedule_timeout_interruptible(onoff_interval); > > } > > + > > +stop: > > torture_kthread_stopping("torture_onoff"); > > return 0; > > } > > -- > > 2.8.0 > > >
| |