rcutorture: Consolidate rcu_torture_boost() timing and statistics
This commit consolidates two loops in rcu_torture_boost(), one of which counts the number of boost-test episodes and the other of which computes the start time of the next episode, into one loop that does both with but a single acquisition of boost_mutex. This means that the count of the number of boost-test episodes is incremented after an episode completes rather than before it starts, but it also avoids the over-counting that was possible previously. Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
parent
7b9dad7aba
commit
8c7ec02e2a
@ -956,15 +956,6 @@ static int rcu_torture_boost(void *arg)
|
|||||||
bool failed = false; // Test failed already in this test interval
|
bool failed = false; // Test failed already in this test interval
|
||||||
bool gp_initiated = false;
|
bool gp_initiated = false;
|
||||||
|
|
||||||
/* Increment n_rcu_torture_boosts once per boost-test */
|
|
||||||
while (!kthread_should_stop()) {
|
|
||||||
if (mutex_trylock(&boost_mutex)) {
|
|
||||||
n_rcu_torture_boosts++;
|
|
||||||
mutex_unlock(&boost_mutex);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
schedule_timeout_uninterruptible(1);
|
|
||||||
}
|
|
||||||
if (kthread_should_stop())
|
if (kthread_should_stop())
|
||||||
goto checkwait;
|
goto checkwait;
|
||||||
|
|
||||||
@ -1015,7 +1006,10 @@ static int rcu_torture_boost(void *arg)
|
|||||||
*/
|
*/
|
||||||
while (oldstarttime == boost_starttime && !kthread_should_stop()) {
|
while (oldstarttime == boost_starttime && !kthread_should_stop()) {
|
||||||
if (mutex_trylock(&boost_mutex)) {
|
if (mutex_trylock(&boost_mutex)) {
|
||||||
boost_starttime = jiffies + test_boost_interval * HZ;
|
if (oldstarttime == boost_starttime) {
|
||||||
|
boost_starttime = jiffies + test_boost_interval * HZ;
|
||||||
|
n_rcu_torture_boosts++;
|
||||||
|
}
|
||||||
mutex_unlock(&boost_mutex);
|
mutex_unlock(&boost_mutex);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user