<div dir="ltr">Well, looks like we figured out what is going on - maybe folks have some ideas on how we could handle this issue.<div><br></div><div>What I see is that for each VM create (small flavor), 1024 huge pages are used and NUMA node 0 used. It appears that, when there is no longer enough huge pages on that NUMA node, Nova with then schedule to the other NUMA node and use those huge pages.</div><div><br></div><div>In our case, we happen to have a special container running on the compute nodes, that uses 512 huge pages. As a result, when there are 768 huge pages left, Nova thinks there are 1280 pages left and thinks one more VM can be create. It tries, but the create fails.</div><div><br></div><div>Some questions...</div><div><br></div><div>1) Is there some way to "reserve" huge pages in Nova?</div><div>2) If the create fails, should Nova try the other NUMA node (or is this because it doesn't know why it failed)?</div><div>3) Any ideas on how we can deal with this - without changing Nova?</div><div><br></div><div>Thanks!</div><div><br></div><div>PCM</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jun 14, 2016 at 1:09 PM Paul Michali <<a href="mailto:pc@michali.net">pc@michali.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Great info Chris and thanks for confirming the assignment of blocks of pages to a numa node.<div><br></div><div>I'm still struggling with why each VM is being assigned to NUMA node 0. Any ideas on where I should look to see why Nova is not using NUMA id 1?</div><div><br></div><div>Thanks!</div><div><br></div><div><br></div><div>PCM</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jun 14, 2016 at 10:29 AM Chris Friesen <<a href="mailto:chris.friesen@windriver.com" target="_blank">chris.friesen@windriver.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 06/13/2016 02:17 PM, Paul Michali wrote:<br>
> Hmm... I tried Friday and again today, and I'm not seeing the VMs being evenly<br>
> created on the NUMA nodes. Every Cirros VM is created on nodeid 0.<br>
><br>
> I have the m1/small flavor (@GB) selected and am using hw:numa_nodes=1 and<br>
> hw:mem_page_size=2048 flavor-key settings. Each VM is consuming 1024 huge pages<br>
> (of size 2MB), but is on nodeid 0 always. Also, it seems that when I reach 1/2<br>
> of the total number of huge pages used, libvirt gives an error saying there is<br>
> not enough memory to create the VM. Is it expected that the huge pages are<br>
> "allocated" to each NUMA node?<br>
<br>
Yes, any given memory page exists on one NUMA node, and a single-NUMA-node VM<br>
will be constrained to a single host NUMA node and will use memory from that<br>
host NUMA node.<br>
<br>
You can see and/or adjust how many hugepages are available on each NUMA node via<br>
/sys/devices/system/node/nodeX/hugepages/hugepages-2048kB/* where X is the host<br>
NUMA node number.<br>
<br>
Chris<br>
<br>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</blockquote></div></blockquote></div>