On Fri, Jul 05, 2019 at 12:52:31PM +0900, Byungchul Park wrote: > On Thu, Jul 04, 2019 at 10:40:44AM -0700, Paul E. McKenney wrote: > > On Thu, Jul 04, 2019 at 12:34:30AM -0400, Joel Fernandes (Google) wrote: > > > It is possible that the rcuperf kernel test runs concurrently with init > > > starting up. During this time, the system is running all grace periods > > > as expedited. However, rcuperf can also be run for normal GP tests. > > > Right now, it depends on a holdoff time before starting the test to > > > ensure grace periods start later. This works fine with the default > > > holdoff time however it is not robust in situations where init takes > > > greater than the holdoff time to finish running. Or, as in my case: > > > > > > I modified the rcuperf test locally to also run a thread that did > > > preempt disable/enable in a loop. This had the effect of slowing down > > > init. The end result was that the "batches:" counter in rcuperf was 0 > > > causing a division by 0 error in the results. This counter was 0 because > > > only expedited GPs seem to happen, not normal ones which led to the > > > rcu_state.gp_seq counter remaining constant across grace periods which > > > unexpectedly happen to be expedited. The system was running expedited > > > RCU all the time because rcu_unexpedited_gp() would not have run yet > > > from init. In other words, the test would concurrently with init > > > booting in expedited GP mode. > > > > > > To fix this properly, let us check if system_state if SYSTEM_RUNNING > > > is set before starting the test. The system_state approximately aligns > > Just minor typo.. > > To fix this properly, let us check if system_state if SYSTEM_RUNNING > is set before starting the test. ... > > Should be > > To fix this properly, let us check if system_state is set to > SYSTEM_RUNNING before starting the test. ... That's a fair point. I wonder if Paul already fixed it up in his tree, however I am happy to resend if he hasn't. Paul, how would you like to handle this commit log nit? it is just 'if ..' to 'is SYSTEM_RUNNING'