查看单个NUMA节点的内存大小:

Hyper-V VM VID NUMA节点\PageCount:8376970
8376970*4k/1024/1024=32GB

Hyper-V VM VID NUMA节点\Processor Count:12 (该NUMA节点上共有12C,一个NUMA节点对应一颗物理CPU,一颗物理CPU的核心数即为NUMA节点的CPU核心数量)

  一个NUMA节点一共是8376970个分页,每个分页的大小是4KB,所以一个NUMA节点对应的是32GB内存,如果单个节点上的内存已经使用了20GB,再分配给另一个虚机20GB内存的话,由于该节点所剩内存为12GB,所以该虚机就要访问远程NUMA节点的内存,就会降低访问速度。为了避免该情况,应尽量避免虚机使用多个NUMA节点的资源,可以手动配置某个虚机属于哪个NUMA节点。

查看VM位于哪个NUMA节点:

Hyper-V VM VID Partition\Preferred NUMA Node Index\2003_1(VM实例名称)

参考:http://blogs.msdn.com/b/tvoellm/archive/2008/09/28/looking-for-that-last-once-of-performance_3f00_-then-try-affinitizing-your-vm-to-a-numa-node-.aspx

参考:http://www.dotblogs.com.tw/daniel07793/archive/2012/03/26/71046.aspx

=======================================

Hyper-v与NUMA介绍:

随着Windows server2012 的推出,微软主推的虚拟化重头hyper-V3.0着实令人惊艳:宿主机支持160个逻辑CPU(core)和2TB内存,虚拟机支持32个虚拟CPU以及1TB内存。还包括其中最令人心动的一项就是动态内存!这是怎么实现的呢?和Numa又有什么关系呢?

首先,什么是Numa(非统一内存访问)?NUMA结构就是指定固定大小的内存分配给一个指定的cpu序列,然后这样就形成一个节点NODE,整个框架是由几个Node结构组成的。我们也都知道cpu访问本地内存速度当然要远远快于访问远端Node内存速度。所以相当于对内存和cpu进行绑定划分。这就是所谓的NUMA结构了。NUMA结构主要还是关于并行计算的高效处理:让处理器快速的访问在同一单元的内存,摆脱了传统的超大总线对多处理结构的束缚。

这里简单的理解起来就是:一Cpu核心或多个(可以是一个Vcpu或者多个)负责一段内存(达到极高的寻址命中率),不再管其他的内存。这样cpu在工作时只会负责形成Node的这段内存,不再负责远端(其他)内存。(这样即使你有多核心的Cpu也不用纠结于前端总线的限制。)

NUMA是硬件设计的功能,划分为NUMA节点在物理服务器的CPU和内存。当一个进程使用内存和CPU在同一NUMA节点,性能会大大提高。当一个进程需要更多的内存,但当前NUMA节点是完整的,那么它会得到从另一个NUMA节点的内存,而在这个过程中的性能成本,是可能影响该物理服务器上所有其他进程。

(想要了解更深:现代CPU确定NUMA节点界限

http://www.benjaminathawes.com/blog/Lists/Posts/Post.aspx?ID=28  )

而Numa在这里来说最重要的用途是:提供内存互连的硬件系统,使新型动态的分区系统成为可能。系统分区的好处在于允许系统管理员在同一计算机内运行多个操作系统(如Unix和WindowsNT),并根据用户工作负荷的要求,在不同的操作系统环境间,简单的管理和使用CPU和内存资源,从而实现最佳的性能和最高的资源利用率。

那么hyper-v是怎么实现动态内存的?和这个Numa又是什么关系呢?先来看一张图片:

假设一台计算机使用Numa架构,Numa架构将这台计算机划分了四个节点,现在我们把一二节点拿出来创建Vm1  三四节点拿出来创建Vm2。这里我们这样指定,但是hyper-v他是如何知道呢?而不会把节点的边界搞乱呢?我们理解起来就是是内部规范的(http://blogs.technet.com/b/windowsserver/archive/2012/04/05/windows-server-8-beta-hyper-v-amp-scale-up-virtual-machines-part-1.aspx)!因此hyper-V在运行时我们可以认为,宿主机会将Numa创建的这些节点动态分配来实现,而且我们用过hyper-v的都知道,动态内存只是指定一个范围,这样就好理解多了!创建虚拟机时,划分这些节点,哪台虚拟机需要更多的内存时就通过分配节点实现!也是为了避免Numa节点过多造成性能下降,因为不能跨越NUMA边界!

当你的虚拟机迁移到不同规格的主机时,会发生什么情况?原来的配置要被保存。虚拟机正在运行。它会采取原来的NUMA节点规模到新的主机,并利用它们。隐藏在vCPU的设置,可以自定义虚拟机的NUMA节点,以适应最小的NUMA节点的主机。这意味着,不同规格的主机之间实时迁移,虚拟机将不能跨NUMA边界(远程运行一个CPU上的进程是在一个NUMA节点分配的RAM)。

FROM:http://blog.sina.com.cn/s/blog_68503a7d0101eg5b.html

Hyper-V虚机跨NUMA节点性能影响的更多相关文章

  1. GSO/TSO/GRO等对VirtIO虚机的网络性能影响分析(by quqi99)

    作者:张华  发表于:2016-04-05版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) IP层 ...

  2. OpenStack 企业私有云的若干需求(1):Nova 虚机支持 GPU

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  3. Neutron 理解(5):Neutron 是如何向 Nova 虚机分配固定IP地址的 (How Neutron Allocates Fixed IPs to Nova Instance)

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  4. KVM 介绍(6):Nova 通过 libvirt 管理 QEMU/KVM 虚机 [Nova Libvirt QEMU/KVM Domain]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  5. KVM(六)Nova 通过 libvirt 管理 QEMU/KVM 虚机

    1. Libvirt 在 OpenStack 架构中的位置 在 Nova Compute 节点上运行的 nova-compute 服务调用 Hypervisor API 去管理运行在该 Hypervi ...

  6. KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  7. KVM(八)使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机

    1. QEMU/KVM 迁移的概念 迁移(migration)包括系统整体的迁移和某个工作负载的迁移.系统整理迁移,是将系统上所有软件包括操作系统完全复制到另一个物理机硬件机器上.虚拟化环境中的迁移, ...

  8. OpenStack企业私有云新需求(1):Nova 虚机支持 GPU

    作者:Sammy Liu 刘世民 本系列会介绍OpenStack 企业私有云的几个需求: GPU 支持 自动扩展(Auto-scaling)支持 混合云(Hybrid cloud)支持 物理机(Bar ...

  9. openstack网络(四)-虚机流量分析

    几种网络名词解释 使用LinuxBridge时虚机流量分析 VLAN FLAT Local VXLAN 使用OVS时虚机流量分析 几种网络名词解释 1.local网络:local网络是与其他网络和节点 ...

随机推荐

  1. Spring+MyBatis实践—工程配置

    初次实践:Spring+MyBatis技术搭建框架,采用Bootstrap前端开源框架. 简介: MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所 ...

  2. Access forbidden! XAMPP虚拟主机的问题

    XAMPP Control Panel v3.2.1添加虚拟主机出现 Access forbidden! You don't have permission to access the request ...

  3. SpeedPHP多入口设置 前台和后台入口分开

    因为前台和后台的一些配置是相同的,因此在这里抽取出了共同配置,放到了config.php文件中: config.php <?php // 定义当前目录 define("APP_PATH ...

  4. http://sofar.blog.51cto.com/353572/1540874

    http://sofar.blog.51cto.com/353572/1540874 http://singlefly.blog.51cto.com/4658189/1368579 http://ww ...

  5. Git push错误non-fast-forward后的冲突解决

    当要push代码到git时,出现提示: error:failed to push some refs to ... Dealing with “non-fast-forward” errorsFrom ...

  6. TCP 协议如何保证可靠传输

    一.综述 1.确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传. 2.数据校验 3.数据合理分片和排序: UDP:IP数据报大于1500字节,大于MTU.这个时候发送方IP层 ...

  7. Drawable(3)Color State List Resource

    注意 Color State List Resource 与 Color不同,前者是颜色状态表.根据不同状态显示不同颜色,它是State list,里面有多种颜色,后者只是一个颜色. Color St ...

  8. KeyDown,KeyPress 和KeyUp

    研究了一下KeyDown,KeyPress 和KeyUp ,发现之间还是有点学问的.让我们带着如下问题来说明,如果你看到这些问题你都知道,那么这篇文章你就当复习吧:) 1.这三个事件的顺序是怎么样的? ...

  9. 【HDOJ】Power Stations

    DLX.针对每个城市,每个城市可充电的区间构成一个plan.每个决策由N*D个时间及N个精确覆盖构成. /* 3663 */ #include <iostream> #include &l ...

  10. ipconfig命令

    C:\Windows\System32>ipconfig -all Windows IP 配置 主机名 . . . . . . . . . . . . . : LuJunTao 主 DNS 后缀 ...