Messages in this thread | | | Date | Sat, 7 Mar 2015 13:47:02 -0800 | From | "Paul E. McKenney" <> | Subject | Re: [PATCH 3/9] rcu: Cleanup rcu_init_geometry() code and arithmetics |
| |
On Sat, Mar 07, 2015 at 06:59:54PM +0000, Alexander Gordeev wrote: > On Sat, Mar 07, 2015 at 10:08:21AM -0800, Paul E. McKenney wrote: > > The rest of this series looks promising, but I do have to ask... How have > > you tested these? The most straightforward approach would be to find > > I tried trees with 1,2 and 3 levels on a 160-CPU machine + dozens of kernel > builds with 'make -j160'. I feel bit guilty I did not try the corner case > with 4 levels, but run-time-wise it is not really differ from what I done. > > Do you expect the below is a better option?
What you did is not bad, actually. You can get four levels by building with both CONFIG_RCU_FANOUT and CONFIG_RCU_FANOUT_LEAF equal to five, and that will also test non-power-of-two choices. You do that, and I will give your series a shot.
What I need to do is to create a user-level test that does the full exhaustive test, varying:
o NR_CPUS from 1 to 4096 o nr_cpu_ids from 1 to NR_CPUS o CONFIG_RCU_FANOUT from 2 to 64 o CONFIG_RCU_FANOUT_LEAF from 2 to 64 o CONFIG_RCU_FANOUT_EXACT from n to y
Unfortunately, if each test case took one millisecond, this would take two years. Not so good when a new version of Linux comes out every couple of months. Of course, this could be paralellized, but still...
So I should focus on the values actually used, especially for NR_CPUS:
o NR_CPUS from 1 to 4096 by powers of two, for 13 combinations o nr_cpu_ids from 1 to NR_CPUS o CONFIG_RCU_FANOUT of 32 or 64 o CONFIG_RCU_FANOUT_LEAF of 16, 32, or 64 o CONFIG_RCU_FANOUT_EXACT of n or y
This is 268,435,452 test cases, which is about tree days at one millisecond per case. (My current single-use manual-inspection test takes eight milliseconds, but then again it is printing out tons of stuff.) But I do need to add at least a few oddball values -- there was a bug for some years that happened only with CONFIG_RCU_FANOUT and CONFIG_RCU_FANOUT_LEAF not dividing evenly.
Or maybe I can use cbmc and make things faster.
Anyway, again, if you do the test with CONFIG_RCU_FANOUT and CONFIG_RCU_FANOUT_LEAF equal to five, this user-level testing is my problem rather than yours.
Thanx, Paul
> > a KVM-capable system with at least 16 CPUs and type the following from > > the top-level directory: > > > > sh tools/testing/selftests/rcutorture/bin/kvm.sh --cpus 34 --duration 5 > > > > This will do a series of 16 build-boot-test cycles with various configs > > (including various rcu_node tree shapes), and print a summary of the > > outcome at the end. > > > > For these sorts of changes, I usually also do some user-level testing. > > > -- > Regards, > Alexander Gordeev > agordeev@redhat.com >
| |