• Paul E. McKenney's avatar
    torture: Periodically pause in stutter_wait() · 19012b78
    Paul E. McKenney authored
    Running locktorture scenario LOCK05 results in hangs:
    
    tools/testing/selftests/rcutorture/bin/kvm.sh --allcpus --torture lock --duration 3 --configs LOCK05
    
    The lock_torture_writer() kthreads set themselves to MAX_NICE while
    running SCHED_OTHER.  Other locktorture kthreads run at default niceness,
    also SCHED_OTHER.  This results in these other locktorture kthreads
    indefinitely preempting the lock_torture_writer() kthreads.  Note that
    the cond_resched() in the stutter_wait() function's loop is ineffective
    because this scenario is built with CONFIG_PREEMPT=y.
    
    It is not clear that such indefinite preemption is supposed to happen, but
    in the meantime this commit prevents kthreads running in stutter_wait()
    from being completely CPU-bound, thus allowing the other threads to get
    some CPU in a timely fashion.  This commit also uses hrtimers to provide
    very short sleeps to avoid degrading the sudden-on testing that stutter
    is supposed to provide.
    Reviewed-by: default avatarDavidlohr Bueso <dbueso@suse.de>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    19012b78
torture.c 22 KB