All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>,
	qemu-ppc@nongnu.org, qemu-devel@nongnu.org,
	Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] [PATCH 0/7] spapr: rework memory nodes
Date: Wed, 18 Jun 2014 16:58:13 -0700	[thread overview]
Message-ID: <20140618235813.GS16644@linux.vnet.ibm.com> (raw)
In-Reply-To: <20140618193355.GM3222@otherpad.lan.raisama.net>

On 18.06.2014 [16:33:55 -0300], Eduardo Habkost wrote:
> On Wed, Jun 18, 2014 at 11:28:53AM -0700, Nishanth Aravamudan wrote:
> > On 17.06.2014 [16:22:33 -0300], Eduardo Habkost wrote:
> > > On Tue, Jun 17, 2014 at 11:38:16AM -0700, Nishanth Aravamudan wrote:
> > > > On 17.06.2014 [11:07:00 -0300], Eduardo Habkost wrote:
> > > > <snip>
> > > > > > If it is canonical and kosher way of using NUMA in QEMU, ok, we can use it.
> > > > > > I just fail to see why we need a requirement for nodes to go consequently
> > > > > > here. And it confuses me as a user a bit if I can add "-numa
> > > > > > node,nodeid=22" (no memory, no cpus) but do not get to see it in the guest.
> > > > > 
> > > > > I agree with you it is confusing. But before we support that use case,
> > > > > we need to make sure auto-allocation is handled properly, because it
> > > > > would be hard to fix it later without breaking compatibility.
> > > > > 
> > > > > We probably just need a "present" field on struct NodeInfo, so
> > > > > machine-specific code and auto-allocation code can differentiate nodes
> > > > > that are not present on the command-line from empty nodes that were
> > > > > specified in the command-line.
> > > > 
> > > > What/where is struct NodeInfo?
> > > 
> > > It was introduced very recently. See the pull request at:
> > > 
> > >   From: "Michael S. Tsirkin" <mst@redhat.com>
> > >   Message-ID: <1403021756-15960-1-git-send-email-mst@redhat.com>
> > >   Subject: [Qemu-devel] [PULL 000/103] pc, pci, virtio, hotplug fixes, enhancements for 2.1
> > > 
> > >   git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream
> > 
> > Ah thank you very much!
> > 
> > Before I get cracking on some patches, wanted to clarify some things:
> > 
> > 1) We need something like a "present" field to deal with
> > auto-allocation, which indicates a user-specified NUMA node.
> > 
> > 2) We need something like a "defined" field to indicate which entries
> > are actually valid and which aren't just 0 because they weren't ever set
> > in order to support sparse node numbering.
> > 	2a) We could add a defined field to indicate the defined
> > 	entries, iterate over the entire array and skip those not
> > 	defined [keeps index:nodeid mapping, changes all loops]
> > 	2b) We could add a nodeid field to indicate the defined entries,
> > 	iterate over only nb_numa_nodes [breaks index:nodeid, keeps
> > 	loops the same, but requires using the nodeid member in the
> > 	loops, not guaranteed for the array to be sorted on nodeid]
> > 
> > I'm currently in favor of 2b, with perhaps a call to qsort on the array
> > after parsing to sort by node id? I'd have to audit the users of the
> > array to make sure they use the nodeid member and not the index, but
> > that should be straightforward.
> 
> As the holes in the node ID space don't seem to be frequently large, and
> the ID space is currently very small (we support 8-bit IDs only), 2a
> looks much simpler to implement and review. We can always change the
> code to use 2b if we decide to support larger node IDs in the future.

Ah, I didn't even check to see that MAX_NODES is so small, will do.

> (And we don't even need to iterate over the entire array. We just need
> to iterate up to the highest ID seen on the commend-line.)

Yep, that's a good shortcut, will add it to my changes. That is
equivalent, fwiw, to tracking how many valid nodes you've seen in any
given loop and only checking up to the number known).

Thanks,
Nish

      reply	other threads:[~2014-06-18 23:58 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-16  7:53 [Qemu-devel] [PATCH 0/7] spapr: rework memory nodes Alexey Kardashevskiy
2014-06-16  7:53 ` [Qemu-devel] [PATCH 1/7] spapr: Move DT memory node rendering to a helper Alexey Kardashevskiy
2014-06-16  7:53 ` [Qemu-devel] [PATCH 2/7] spapr: Use DT memory node rendering helper for other nodes Alexey Kardashevskiy
2014-06-16  7:53 ` [Qemu-devel] [PATCH 3/7] spapr: Refactor spapr_populate_memory() Alexey Kardashevskiy
2014-06-18  5:04   ` Alexey Kardashevskiy
2014-06-20 19:10   ` Nishanth Aravamudan
2014-06-21  3:08     ` Alexey Kardashevskiy
2014-06-23 17:41       ` Nishanth Aravamudan
2014-06-23 22:02         ` Alexey Kardashevskiy
2014-06-20 22:55   ` Nishanth Aravamudan
2014-06-21  3:06     ` Alexey Kardashevskiy
2014-06-23 17:40       ` Nishanth Aravamudan
2014-06-24  6:07         ` Alexey Kardashevskiy
2014-06-24 17:07           ` Nishanth Aravamudan
2014-06-24  3:08       ` Nishanth Aravamudan
2014-06-24  6:14         ` Alexey Kardashevskiy
2014-06-24 17:01           ` Nishanth Aravamudan
2014-07-21 18:08           ` Nishanth Aravamudan
2014-06-16  7:53 ` [Qemu-devel] [PATCH 4/7] spapr: Split memory nodes to power-of-two blocks Alexey Kardashevskiy
2014-06-17  7:07   ` Alexey Kardashevskiy
2014-06-16  7:53 ` [Qemu-devel] [PATCH 5/7] spapr: Add a helper for node0_size calculation Alexey Kardashevskiy
2014-06-16 18:43   ` Nishanth Aravamudan
2014-06-16  7:53 ` [Qemu-devel] [PATCH 6/7] spapr: Fix ibm, associativity for memory nodes Alexey Kardashevskiy
2014-06-16  7:53 ` [Qemu-devel] [PATCH 7/7] numa: Allow empty nodes Alexey Kardashevskiy
2014-06-16 16:15   ` Eduardo Habkost
2014-06-16 18:49     ` Nishanth Aravamudan
2014-06-16 20:11       ` Eduardo Habkost
2014-06-16 20:31         ` Eduardo Habkost
2014-06-17  0:21           ` Nishanth Aravamudan
2014-06-17  0:16         ` Nishanth Aravamudan
2014-06-16  8:16 ` [Qemu-devel] [PATCH 0/7] spapr: rework memory nodes Alexey Kardashevskiy
2014-06-16 18:26   ` Nishanth Aravamudan
2014-06-16 20:51   ` Eduardo Habkost
2014-06-17  0:25     ` Nishanth Aravamudan
2014-06-17  1:37       ` Eduardo Habkost
2014-06-17 18:36         ` Nishanth Aravamudan
2014-06-17  1:41       ` Eduardo Habkost
2014-06-17 18:37         ` Nishanth Aravamudan
2014-06-17  5:51     ` Alexey Kardashevskiy
2014-06-17 14:07       ` Eduardo Habkost
2014-06-17 18:38         ` Nishanth Aravamudan
2014-06-17 19:22           ` Eduardo Habkost
2014-06-18 18:28             ` Nishanth Aravamudan
2014-06-18 19:33               ` Eduardo Habkost
2014-06-18 23:58                 ` Nishanth Aravamudan [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140618235813.GS16644@linux.vnet.ibm.com \
    --to=nacc@linux.vnet.ibm.com \
    --cc=agraf@suse.de \
    --cc=aik@ozlabs.ru \
    --cc=ehabkost@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.