• Paul E. McKenney's avatar
    torture: Maintain torture-specific set of CPUs-online books · 1afb95fe
    Paul E. McKenney authored
    The TREE01 rcutorture scenario intentionally creates confusion as to the
    number of available CPUs by specifying the "maxcpus=8 nr_cpus=43" kernel
    boot parameters.  This can disable rcutorture's load shedding, which
    currently uses num_online_cpus(), which would count the extra 35 CPUs.
    However, the rcutorture guest OS will be provisioned with only 8 CPUs,
    which means that rcutorture will present full load even when all but one
    of the original 8 CPUs are offline.  This can result in spurious errors
    due to extreme overloading of that single remaining CPU.
    
    This commit therefore keeps a separate set of books on the number of
    usable online CPUs, so that torture_num_online_cpus() is used for load
    shedding instead of num_online_cpus().  Note that initial sizing must
    use num_online_cpus() because torture_num_online_cpus() will return
    NR_CPUS until shortly after torture_onoff_init() is invoked.
    Reported-by: default avatarFrederic Weisbecker <frederic@kernel.org>
    [ paulmck: Apply feedback from kernel test robot. ]
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    1afb95fe
torture.c 25.3 KB