From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56987) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bCmuI-0008V0-ML for qemu-devel@nongnu.org; Tue, 14 Jun 2016 07:53:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bCmuG-00066B-KX for qemu-devel@nongnu.org; Tue, 14 Jun 2016 07:53:21 -0400 Sender: Paolo Bonzini References: <1465580427-13596-1-git-send-email-drjones@redhat.com> <1465580427-13596-7-git-send-email-drjones@redhat.com> <20160613203529.6ln7dlgnrcgda5x4@hawk.localdomain> <60ee196d-0292-3fb4-5d59-68c2d742eaa4@redhat.com> <20160614113904.2u5qvf7kasv5hact@hawk.localdomain> From: Paolo Bonzini Message-ID: Date: Tue, 14 Jun 2016 13:53:05 +0200 MIME-Version: 1.0 In-Reply-To: <20160614113904.2u5qvf7kasv5hact@hawk.localdomain> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH RFC 06/16] vl: move smp parsing to machine pre_init List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Andrew Jones Cc: peter.maydell@linaro.org, ehabkost@redhat.com, agraf@suse.de, qemu-devel@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, imammedo@redhat.com, dgibson@redhat.com, david@gibson.dropbear.id.au On 14/06/2016 13:39, Andrew Jones wrote: > On Tue, Jun 14, 2016 at 10:17:49AM +0200, Paolo Bonzini wrote: >> On 13/06/2016 22:35, Andrew Jones wrote: >>> On Mon, Jun 13, 2016 at 07:04:01PM +0200, Paolo Bonzini wrote: >>>> On 10/06/2016 19:40, Andrew Jones wrote: >> They should just not specify it and get a default of 1. ;) > > Yeah, threads, the only one we should never calculate, could be > optional. If not specified, defaulting to 1 makes perfect sense. > But, threads=0, which is weird, but in a way specifying that it's > not specified, also makes some sense. If it's weird, let's make it invalid. :) >>>> - cpus % (cores * threads) != 0 >>> >>> Hmm. This makes sense where cpus is the number of cpu packages, >> >> I'm not sure I understand what you mean here. The point is that the >> machine starts with an integral number of sockets. > > OK, s/cpus/maxcpus/ then. By using the currently online number, I > thought you were starting to prepare for cpu packages, which are > indivisible sets of cores and threads. Yes, that's what I meant to do. Isn't cpus what you call "total-online-threads" below? > But now that I think about > it, cpus % (cores * threads) isn't right for that either. It should > be total-online-threads % (cores * threads) != 0 > >> [...] you could just specify -machine cpus=16,maxcpus=32 and expect 1 >> core/socket, 1 thread/core, and 16 to 32 sockets. > > Or 32 cores/socket (only 16 populated), 1 thread/core Does that make sense? How do you "populate" parts of a socket lazily? I know it's all virtual, but... ;) >> Though I think that we can at least agree on defaults for threads, >> maxcpus and cpus. The only sticky point is sockets vs. cores. We can >> make them both mandatory for now. That is: cores and sockets are >> mandatory until we decide which one to default to 1; threads is >> optional; cpus is mandatory if you want hotplug, otherwise it's >> redundant; maxcpus is optional and always redundant. > > Agreed. I'll do the following for the next round of this series > > threads: 1 > cores: required > sockets: required > maxcpus: maxcpus ? maxcpus : sockets * cores * threads > cpus: cpus ? cpus : maxcpus > > If maxcpus is input, it's redundant, but should be sanity checked. > Maybe the user wants to use the QEMU cmdline to check their math... Yes, all this is fine. As to the checks, here's my list: >>> - any argument < 1 >>> - any argument > some compile-time value (1024?) to avoid overflows >>> - cpus % (cores * threads) != 0 >>> - cpus > sockets * cores * threads >>> - maxcpus != cores * threads * sockets ? The second, fourth and fifth are fine, and IMO the first too. What about the "integral package" check? It needs to be disabled with some ugly global when using -smp, but apart from that I believe it's better to have it. Paolo