查看单个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. Linux +apache+fastcgi运行c/c++

    在Linux上搭建apache+fastcgi环境,说多了都是泪啊. 花费我几天时间,开源软件虽说好用,但是版本众多,文档缺乏,什么都只能自己摸索. 终于成功运行起来,特此记录. 一. apache ...

  2. Android ListView(Selector 背景图片)

    listview0.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmln ...

  3. wordpress的使用

    ubuntu 发送邮件学习资料: http://edu.51cto.com/lesson/id-6066.html 相关插件: Disable Google Fonts 使用中出现的问题: 1:wor ...

  4. Android 用Intent和Bundle传递参数

    传递方: //点击btn_sub传递 fieldHeight.getText()和 fieldWeight.getText() private void setListeners()    {    ...

  5. 使用智遥工作流,优化SAP请购流程

    传统请购流程,都是用户在SAP系统中填写请购单,然后再打印出来,递交给上级领导审批.领导审批完了,再到SAP系统中更新release标识.若中途请购单内容需要变更,则需要重新打印,审批. 智遥工作流, ...

  6. 【HDOJ】1225 Football Score

    这种结构体排序的题,十分容易考上机题,qsort+结构体解决.马上就要机考了,多练习一下这样的题目也好. #include <stdio.h> #include <string.h& ...

  7. Linux学习之CentOS6下Mysql数据库的安装与配置

    转自:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得搭建好j ...

  8. hihocoder #1290 : Demo Day (2016微软编程测试第三题)

    #1290 : Demo Day 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 You work as an intern at a robotics startup. ...

  9. oracle删除列

    ALTER TABLE 表名 DROP COLUMN 列名;

  10. NOI2014 魔法森林

    3669: [Noi2014]魔法森林 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 106  Solved: 62[Submit][Status] ...