Description of problem: HPC style compute scheduling, requires scheduler to be aware of and take advantage of: * NUMA architecture including CPU layout (sockets/cores/hyperthreads) and memory. * Memory layout (proximity to allocated CPU, size of pages and number of pages available as well as memory bandwidth). * Full implementation requires Libvirt enhancements to expose: * Large page size for host. * Number of large pages per NUMA node on host. * Number of free large pages per NUMA node. * Avoid crossing NUMA boundaries when practical. * Instance launch would nominally provide the facility for selecting scheduling criteria based on these factors. In particular telecommunications providers want to be able to define the guest topology that the scheduler should attempt to place, not just a # of vCPUs. * Desire for scheduler to take into account CPU flags like second-level address translation services large pages for virtualization (Intel's Extended Page Tables and and Rapid Virtualization Indexing) and hardware support for I/O virtualization (IOMMU/AMD-Vi). Requires Libvirt changes.