From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dulloor Subject: Re: [vNUMA v2][PATCH 0/8] VM memory mgmt for NUMA Date: Mon, 2 Aug 2010 10:03:22 -0700 Message-ID: References: <1BEA8649F0C00540AB2811D7922ECB6C933256EA@orsmsx507.amr.corp.intel.com> <20100802161638.GB6961@phenom.dumpdata.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <20100802161638.GB6961@phenom.dumpdata.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Konrad Rzeszutek Wilk Cc: Andre Przywara , xen-devel@lists.xensource.com, "Nakajima, Jun" List-Id: xen-devel@lists.xenproject.org On Mon, Aug 2, 2010 at 9:16 AM, Konrad Rzeszutek Wilk wrote: > On Sun, Aug 01, 2010 at 03:00:31PM -0700, Dulloor wrote: >> Sorry for the delay. I have been busy with other things. > > Np. Can you CC these patches in the future to Andre? > His email is Andre Przywara Sure, thanks ! :) I should be cc'ing Jun Nakajima too. > > In the meantime, =A0I am CC-ing him here. >> >> >> Summary of the patches : >> In this patch series, we implement the following ~ >> >> [1] Memory allocation schemes for VMs on NUMA platforms : The specific >> allocation allocation strategies available as configuration parameters a= re - >> >> =A0=A0=A0=A0=A0=A0=A0 * CONFINE - Confine the VM memory to a single NUMA= node. >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 [config] >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 strategy =3D "confine" >> >> =A0=A0=A0=A0=A0=A0=A0 * STRIPE - Stripe the VM memory across a specified= number of nodes. >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 [config] >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 strategy =3D "stripe" >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 vnodes =3D >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 stripesz =3D >> >> =A0=A0=A0=A0=A0=A0=A0 * SPLIT - Split the VM memory across a specified n= umber of nodes >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 to construct virtual nodes, which are then e= xposed to the VM. >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 For now, we require the number of vnodes and= number of vcpus to >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 be powers of 2 (for symmetric distribution),= as opposed to using >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 multiples. >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 [config] >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 strategy =3D "split" >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 vnodes =3D >> >> =A0=A0=A0=A0=A0=A0=A0 * AUTO - Choose a scheme automatically, based on m= emory distribution >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 across the nodes. The strategy attempts CONF= INE and STRIPE(by >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 dividing memory in equal parts) in that orde= r. If both fail, then >> =A0=A0=A0=A0=A0=A0=A0=A0=A0 it reverts to the existing non-numa allocati= on. >> =A0 =A0 =A0 =A0 =A0 [config] >> =A0 =A0 =A0 =A0 =A0 strategy =3D "auto" >> >> =A0=A0=A0=A0=A0=A0=A0 * No Configuration - No change from existing behav= iour. >> >> [2] HVM NUMA guests : If the user specifies "split" strategy, we expose = the >> virtual nodes to the HVM (SRAT/SLIT). >> >> [3] Disable migration : For now, the allocation information is not prese= rved >> across migration, so we just disable migration. We will address this in = the next >> patch series. >> >> [4] PoD (Populate on Demand) : For now, PoD is disabled internally if a = NUMA >> allocation strategy is specified and applied to a VM. We will address >> this in the >> next patch series. >> >> Changes from previous version : >> [1] The guest interface structure has been modified per Keir's suggestio= ns. >> Most changes from previous version are due to this. >> [2] Cleaned up debug code in setup_guest (spotted by George). >> >> >> -Dulloor >> >> Signed-off-by: Dulloor >> >> -- >> =A0tools/firmware/hvmloader/acpi/acpi2_0.h | =A0 64 ++++++ >> =A0tools/firmware/hvmloader/acpi/build.c =A0 | =A0122 ++++++++++++ >> =A0tools/libxc/Makefile =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 =A0= 2 + >> =A0tools/libxc/ia64/xc_ia64_hvm_build.c =A0 =A0| =A0 =A01 + >> =A0tools/libxc/xc_cpumap.c =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 88 ++++= +++++ >> =A0tools/libxc/xc_cpumap.h =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0113 ++++= +++++++ >> =A0tools/libxc/xc_dom_numa.c =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0901 >> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= +++++++++++++++++++++ >> =A0tools/libxc/xc_dom_numa.h =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 73 ++++++= + >> =A0tools/libxc/xc_hvm_build.c =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0574 >> ++++++++++++++++++++++++++++++++++++++++------------------ >> =A0tools/libxc/xenctrl.h =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 19 + >> =A0tools/libxc/xenguest.h =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 =A01 = + >> =A0tools/libxl/libxl.h =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 =A0= 1 + >> =A0tools/libxl/libxl_dom.c =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 =A01 + >> =A0tools/libxl/xl_cmdimpl.c =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 44 ++++ >> =A0tools/python/xen/lowlevel/xc/xc.c =A0 =A0 =A0 | =A0 =A02 +- >> =A0xen/include/public/arch-x86/dom_numa.h =A0| =A0 91 +++++++++ >> =A0xen/include/public/dom_numa.h =A0 =A0 =A0 =A0 =A0 | =A0 33 +++ >> =A0xen/include/public/hvm/hvm_info_table.h | =A0 10 +- >> =A018 files changed, 1954 insertions(+), 186 deletions(-) >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@lists.xensource.com >> http://lists.xensource.com/xen-devel >