Win2012R2 Hyper-V初级教程06 — 动态内存调整

动态内存是一种新 Hyper-V 功能,可帮助您更有效地使用物理内存。使用动态内存,Hyper-V 将内存视为一种可在运行的虚拟机之间自动重新分配的共享资源。动态内存基于内存需求的变化和您指定的值,调整可供虚拟机使用的内存量。

动态内存可帮助您更有效地使用内存资源。在引入此功能之前,要更改可供虚拟机使用的内存量,只能在关闭虚拟机时完成。使用动态内存,Hyper-V 可依据在虚拟机内运行的工作负载或应用程序所需的内存量的变化,动态地为虚拟机提供更多或更少的内存。因此,Hyper-V 能够在配置了动态内存的正在运行的虚拟机之间更加有效地分配内存。取决于工作负载等因素,此效率可能支持在一个物理计算机上同时运行更多虚拟机。

支持的操作系统:

l Windows Server 2008 R2 SP1

l Windows 7 SP1

l Windows Server 2008 with Service Pack 2 (SP2)

l Windows Vista with Service Pack 1 (SP1)

l Windows Server 2003 R2 with Service Pack 2 (SP2)

l Windows Server 2003 with Service Pack 2

启动 RAM

指定启动虚拟机所需的内存量。该值需要足够高,以允许来宾操作系统启动,但应该尽可能低,以实现最优的内存利用和可能更高的整合率。

最大可用内存:

当你的系统是Win7 32位的时候,如果你在Hyper-V里面分配给此系统8G内存,那么这个系统也只能用到4G内存,这是因为本身系统的限制。

内存缓冲区:

内存缓冲区大小 = 虚拟机实际内存量/内存缓冲区值%

内存权重:

如果计算机中没有足够的物理内存可用来为每个虚拟机提供它请求的内存量,该参数为 Hyper-V 提供一种方式来确定如何在虚拟机之间分配内存。即当Hyper-V服务器本身没有足够的内存的时候,我们可以设置对应的内存权重和Windows系统进程高、中、低权重一样。

注意:您只能在虚拟机关闭时更改 RAM 量,但可以在任何时刻更改缓冲区和权重。

要确定虚拟机的内存使用情况

计算内存使用

在虚拟机上启用动态内存后,分配给虚拟机的内存量就会依据需求而更改。将虚拟机配置为使用动态内存时,可通过两种基本方式来评估虚拟机的内存使用变化情况:

1、您可以通过审查 Hyper-V Manager 的详细信息窗格,查看最新的信息。

2、您可以添加性能计数器并监视它们,以查看在特定时间段内的内存使用变化。

在 Hyper-V Manager 中实时查看变化

向运行 Hyper-V 的服务器应用 SP1 后,Hyper-V Manager 的虚拟机窗格中将显示 3 个新列。您可

以使用这些列查看最新的信息,通过观察它们来了解在执行各种操作时的值变化。

分配的内存显示此时分配给虚拟机的物理内存量。    
内存需求显示虚拟机此时需要多少内存来满足虚拟机中运行的活动进程的需求。此内存量基于从性能计数器获得数据来表示总共使用的内存量。    
内存状态表示为虚拟机指定的在此时可供虚拟机使用的缓冲区内存量。状态将报告为以下其中之一:    
1)“良好”表示有足够的物理内存可用于为虚拟机提供缓冲区的全部内存量。

2)“低”表示当前分配给虚拟机作为缓冲区的内存量低于 Hyper-V 确定应该可用作缓冲区的内存量。

3)“警告”表示没有足够的物理内存可用于将任何内存缓冲区分配给虚拟机。

使用性能计数器监视内存分配

SP1 包含新的 Hyper-V 性能计数器,它们可监视为利用动态内存启用的虚拟机分配了多少内存。新性能计数器包含在两个新 Hyper-V 性能计数器组中:Hyper-V Dynamic Memory Balancer 和 Hyper-V Dynamic Memory VM。您可以使用这些组中的性能计数器创建数据收集器集,可使用数据收集器集捕获和分析性能计数器收集的数据。例如,您可以计划重复的数据收集器集合来创建日志,将它加载到性能监视器中来实时查看数据,以及将它保存为模板以供其他计算机上使用。

要创建数据收集器集来监视内存分配

1、启动性能监视器并添加一个或多个新性能计数器。

2、单击“开始”,右键单击“计算机”,然后单击“管理”。在 Microsoft 管理控制台导航树中,单击“可靠性和性能”。

3、在导航树中,展开“可靠性和性能”,展开“监视工具”,然后单击“性能监视器”。    
4、在性能监视器图形显示区上方的菜单栏中,单击“添加”按钮 (+) 或右键单击图形中的任意位置并单击菜单中的“添加计数器”。将打开“添加计数器”对话框。    
5、在“可用的计数器”一节中,滚动列表以找到 Hyper-V Dynamic Memory VM,然后单击加号 (+) 以展开该组。从此组中选择一个或多个计数器,比如“Current Pressure”和“Guest Visible Physical Memory”,然后单击“添加”。单击“确定”关闭对话框。    
6、右键单击性能监视器显示窗格中的任意位置,指向“新建”,单击“数据收集器集”。将启动“创建新数据收集器集向导”。创建的数据收集器集将包含在当前性能监视器视图中选择的所有数据收集器。

7、为数据收集器集键入一个名称并单击“下一步”。

8、“根目录”将包含数据收集器集收集的数据。如果您希望将数据收集器集数据存储在默认位置以外的位置,更改此设置。浏览并选择该目录,或者键入目录名称。

9、单击“下一步”定义用于运行数据收集器集的用户,或者单击“完成”保存当前设置并退出。

关于使用数据收集器集的更多信息,请参阅 Windows Server 性能和可靠性监视分步指南 (http://go.microsoft.com/fwlink/?LinkId=196705) 中的“场景 3:从性能监视器创建数据收集器集”。

Hyper-V Manager 中不会显示实时内存信息

如果 Hyper-V Manager 的“详细信息”窗格中针对一个利用动态内存启用且正在运行的虚拟机的内存列是空的,请检查以下设置:

审阅本指南的“需求”一节,确认来宾操作系统支持动态内存。然后,确认来宾操作系统已正确配置。例如,集成服务已升级或服务包已应用。    
如果您在执行所有需要的配置之前启用了动态内存,重新启动虚拟机。

虚拟机使用了太多内存

如果启用了动态内存的虚拟机看似使用了太多内存,或者在物理计算机没有足够的可用内存时未释放内存,您可通过为最大 RAM 设置分配较低的值,限制该虚拟机使用的内存量。

您可能已注意到,来宾操作系统中的任务管理器所报告的 RAM 量在虚拟机使用较少 RAM 时没有减少。发生此情况是因为,驱动程序报告了来宾操作系统自启动以来使用的最大内存量。

性能不足解决方法

在虚拟机上启用动态内存后,如果您对性能不满意,执行以下一种或多种配置更改可以改善性能。

增大来宾操作系统中的页面文件大小。更大的页面文件允许在突然有需求时向正在运行的虚拟机添加更大量的内存。这也会在可用的物理内存有限时改善性能。

增加为虚拟机配置的内存缓冲区。当存在较大的内存缓冲区时,会为虚拟机分配比在虚拟机内运行的应用程序和服务需要的内存量更大的内存。这部分多余的内存可用于文件缓存,可能有助于改善 I/O 操作密集的应用程序和服务的性能。

增大虚拟机的启动 RAM。一些应用程序会基于应用程序启动时可用的内存来分配固定的内存量。这些应用程序在具有更高的启动 RAM 值时具有更高的性能。如果从虚拟机删除太多内存而导致了糟糕的性能,增大启动 RAM 的值也可能修复此问题。

注意:增大启动 RAM 的值会降低动态内存的总体灵活性和有效性。    
提高虚拟机的内存权重。Hyper-V 会先将可用的物理内存分配给此虚拟机,然后再将它分配给内存权重更低的虚拟机。

内存量没有增加

在启用了动态内存的虚拟机上,如果内存量没有增加,请检查以下设置:

对比“最大 RAM”值与“分配的内存”值,查看虚拟机是否在最大内存量下运行。    
检查虚拟机所在的物理磁盘上的可用空间。(默认位置为 C:\ProgramData\Microsoft\Windows\Hyper-V。)当将内存添加到虚拟机时,动态内存会增加保存的状态文件的大小。

管理操作系统中的可用内存太少

Hyper-V 会自动计算供管理操作系统独自使用的保留内存量。如果计算机位于一个故障转移群集中,Hyper-V 也会保留足够的内存来运行故障转移群集服务。但是,如果管理操作系统还运行其他角色或功能,那么保留的内存量可能太少。您可以修改注册表来指定较大量的内存。

1、单击“开始”,单击“开始搜索”框,然后键入 regedit 并按回车键。    
2、如果显示“用户帐户控制”框,请单击“是”。    
3、在导航树中,依次展开 HK_LOCAL_MACHINE、SOFTWARE、MICROSOFT、WINDOWS NT 和 CurrentVersion。    
4、右键单击 Virtualization,指向“新建”,单击 DWORD。将新值命名为 MemoryReserve。

5、右键单击 MemoryReserve 并单击“修改”。在“值数据”下,将值设置为您希望保留的内存量。

来宾操作系统没有创建完整的内存转储文件

页面文件必须足够大,以存储转储文件。当启用动态内存时,来宾操作系统使用为虚拟机配置的启动内存值来确定页面文件的大小。要确保页面文件足够大,可存储完整的内存转储文件,可以将页面文件的大小设置为为虚拟机配置的最大内存。

附录:内存设置

下表列出了在启用了动态内存时,支持的来宾操作系统的建议启动 RAM。

时间: 2024-11-05 12:27:12

Win2012R2 Hyper-V初级教程06 — 动态内存调整的相关文章

realloc动态内存调整

内存问题:概率性崩溃malloc:动态内存分配      分配长度为num_bytes字节的内存块calloc:动态内存分配并清零功 能: 在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针:如果分配不成功,返回NULL.realloc动态内存调整 功能 先判断当前的指针是否有足够的连续空间,如果有,扩大mem_address指向的地址,并且将 mem_address返回,如果空间不够,先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的

Win2012R2 Hyper-V初级教程15 -- 基于Kerberos与CA证书的系统容灾(中)

二.基于CA证书的HTTPS复制 ??????? 刚刚看了一下关于基于Kerberos与CA证书的系统容灾(上)还是2017-08-31写的,到现在半年过去了,懒癌太重了,一直没有更新,从今天起将逐步更新完初级教程,希望能够有更多的博友了解并学习微软的虚拟化技术.前面我们说到了基于HTTP的复制,在内部网络的时候我们可以采用这种方法,因为本身而言内网相对安全很多,如果你是需要进行跨广域网的复制,建议你最好配置CA证书服务,通过443端口进行数据传输,以保证数据的安全性.下面我们就来说一下基于CA

Hyper - V (四)

安装虚拟机 新建虚拟机 为新建的虚拟机起名,默认保存路径为前面设置的默认路径 指定虚拟机内存大小 指定虚拟机网卡连接到外部网络还是内部网络(或专用网络) 创建虚拟硬盘,指定硬盘存储路径及硬盘大小 选择安装文件的引导路径,支持光盘安装,ISO安装等方式. 这里我们选择通过光驱引导的方式来安装系统 完成虚拟机设置. 右键点击新建的虚拟机,设置可以更改虚拟机的配置选项. 将ISO文件加载到虚拟机中,即可以实现光盘引导功能. 启动虚拟机-- 安装系统 Hyper - V (四),布布扣,bubuko.c

《C++primer(第五版)》学习之路-第十二章:动态内存

[ 声明:版权所有,转载请标明出处,请勿用于商业用途.  联系信箱:[email protected]] 12.1 动态内存与智能指针 1.在C++中,动态内存的管理是通过一对运算符来完成:new,在动态内存中为对象分配空间并返回一个指向该对象的指针,我们可以选择对对象进行初始化:delete,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存. 2. shared_ptr允许多个指针指向同一个对象:unique_ptr则"独占"所指向的对象.标准库还定义了一个名为weak_pt

FreeRTOS 动态内存管理

本章节为大家讲解 FreeRTOS 动态内存管理,动态内存管理是 FreeRTOS 非常重要的一项功能,前面章节讲解的任务创建. 信号量. 消息队列. 事件标志组. 互斥信号量. 软件定时器组等需要的 RAM 空间都是通过动态内存管理从 FreeRTOSConfig.h 文件定义的 heap 空间中申请的. 动态内存管理介绍FreeRTOS 支持 5 种动态内存管理方案,分别通过文件 heap_1,heap_2,heap_3,heap_4 和 heap_5实现,这 5 个文件在 FreeRTOS

【足迹C++primer】39、动态内存与智能指针(2)

动态内存与智能指针(2) 直接管理内存 void fun1() { //此new表达式在自由空间构造一个int型对象,并返回指向该对象的指针 int *pi1=new int; //pi指向一个动态分配.未初始化的无名对象 string *ps3=new string; //初始化为空string int *pi2=new int; //pi指向一个未初始化的int int *pi3=new int(1024); //pi指向的对象的值为1024 string *ps4=new string(1

Windows 2012 Hyper –V 3.0 New Functions

1-Hyper –V 复制 Hyper-V 3.0提供的复制特性,允许管理员为现有的虚拟机创建副本,提供了一种简单而实用的故障转移和灾难恢复的方案 防火墙允许 HV2 启用复制,指定HV1 ,复制到HV1 察看复制状态 故障转移方式: 在HV2 上 ,选择计划故障转移 在HV1上也可以选择即时的故障转移 反向复制: 就是HV1 作为主服务器了,HV2 作了副本服务器 Hyper-V 不仅仅给用户提供了一种简单高效的灾难恢复方案,同时在安全性上支持证书身份验证,在副本初始化时,也提供了离线副本的选

CH12 动态内存

动态分配的对象的生命期与它们在哪里创建的五官,只有显示地释放时,这些对象才被销毁 静态内存用来保存局部static对象.类static数据成员以及定义在任何函数之外的变量,栈内存用来保存定义在函数内的非static对象,分配在静态内存或栈内存中的对象由编译器自动创建和销毁,static对象在使用前分配,程序结束时销毁,栈对象,定义在程序块运行时才存在. 动态内存即自由空间或堆,程序用来存储动态分配的对象. 动态内存与智能指针 C++中是通过new和delete这对运算符来管理动态内存的.new:

C++学习笔记(五):高级编程:文件和流,异常处理,动态内存,命名空间

C++ 文件和流 到目前为止,我们已经使用了 iostream 标准库,它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流. 本教程介绍如何从文件读取流和向文件写入流. 这就需要用到 C++ 中另一个标准库 fstream,它定义了三个新的数据类型: 要在 C++ 中进行文件处理,必须在 C++ 源代码文件中包含头文件 <iostream> 和 <fstream>. 打开文件 在从文件读取信息或者向文件写入信息之前,必须先打开文件.ofstream 和