From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752890AbbCGVrJ (ORCPT ); Sat, 7 Mar 2015 16:47:09 -0500 Received: from e39.co.us.ibm.com ([32.97.110.160]:55534 "EHLO e39.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750855AbbCGVrG (ORCPT ); Sat, 7 Mar 2015 16:47:06 -0500 Date: Sat, 7 Mar 2015 13:47:02 -0800 From: "Paul E. McKenney" To: Alexander Gordeev Cc: linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/9] rcu: Cleanup rcu_init_geometry() code and arithmetics Message-ID: <20150307214702.GP5236@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <20150307180821.GN5236@linux.vnet.ibm.com> <20150307185954.GB15033@agordeev.usersys.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150307185954.GB15033@agordeev.usersys.redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15030721-0033-0000-0000-000003E3F93A Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 >