动态优化(Dynamic Optimization)是在scvmm2012之后引入的一个新特性,简单来说,这个特性的功能就如字面意义一样,在群集范围内使用动态迁移VM的方式优化主机的资源,使主机与VM都工作在一个相对良好的资源环境中
在VMM2008版本中有一个类似的功能称为:PRO-tips,那么动态优化(后文简称DO)与之相比有哪些改进呢?

对于VMM 2008的用户来说,解决群集中的VM负载平衡问题比较麻烦,需要使用SCOM中的agent监控主机上的性能指标已经超过阈值之后开始进行VM迁移;到了VMM 2012版本后,DO使用全新的智能放置引擎(Intelligent Placement engine )更主动并且有效掌控群集内的主机资源。

DO 相对于PRO-tips有以下几项改进:

  • DO 的监控和迁移作业由VMM服务本身提供,不再需要SCOM整合
  • DO 在VMM服务器上运行,并不用在群集节点主机上运行,因为对于整个群集来说做到了集中管理,消除了主机上作业冲突的可能性.
  • 用SCOM过同学应该知道,如果对VM进行监控,需要许多不同的管理包(management packs)对相关指标监控,比如VM的资源、网络使用等等,但DO 本身通过VMM服务就可以了解到VM的放置规则、资源需求等,不必再通过SCOM进行复杂的管理包配置

当然,并不是说使用了DO就不再需要SCOM了,因为他们完成的任务是完全不同的,如果需要更精确的监控还是需要使用SCOM的,我们这里只针对于“动态优化”这荐任务来说,DO已经完全可以满足需要了.

接着说一下DO规则

DO的规则不是特别麻烦,下面简单说一下,需要注意的是,DO在运行下面这些规则检查的时候是按顺序进行的

1: 不要因为DO给群集系统带来新问题

在DO的迁移动作发生之前,进行的第一项检查,就是迁移是否会使系统出现警告或者错误,如果有,那么DO就不会进行迁移。不管进行迁移后整个群集系统的资源使用有多平衡,多么合理,VM也不会进行迁移。这里特别说明一句,这其中最典型的问题就是系统在迁移后可能会over-commited,导致配置好的DO不能进行动态优化,这也是我为什么要写over-commited算法这篇文章的原因。

另外还有一种不迁移VM的情况,就是将VM配置为从动态优化中排除,如下图:

2: 解决VM的错误/警告

在进行DO时,最重要的一点就是要优先解决VM的错误和警告问题,比如VM配置了Network Optimization (VMQ)但是当前主机上VMQ不可用;无法在当前主机上访问配置的逻辑网络接口等等

3: 解决主机过载

当我们在给一个主机组配置DO的时候,会被要求指定主机的最大负载,如图:

当DO检测到某个主机上的阈值超出了指定范围,那么DO会优先将这台主机上的VM迁移出去减轻这台主机上的负载,话说这也是DO的一个最主要功能了。

4: 平衡主机资源使用

当前面提到的三个优化规则都满足的条件下,DO才会在群集内部查找所有可迁移的VM并且评估迁移后的星级,如果星级增长到满足主机组的aggressiveness 设置级别(见上图),则开始进行资源动态平衡。(Mdidum以下的星级阈值我又没有找到,如果谁有相关资料可以告诉我再进行修改)。

关于如何对主机进行评星,请参考MSDN:https://technet.microsoft.com/en-us/library/JJ860428.aspx?f=255&MSPPError=-2147217396

下表是进行星级评估时的阈值:

High 0.1 stars

Medium-High 0.2 stars

Medium 0.3 stars

可以看出,在aggressiveness设置为High后,星级增长只要0.1星就可能会引起VM迁移,一般来说我是把这个设置为low的,没有必要因为一点点的资源平衡就让正常运行的VM中断一次(虽然是动态迁移,但是在迁移的最后阶段网络还是会闪断的,这在重要的生产环境下会引起大问题)

最后,以上提到的所有迁移,都必须不能引发目标主机的错误或者警告。

DO的方式- 手动还是自动?

DO默认是工作在手动方式下的,也就是说,不会自动对VM进行动态迁移,你可以通过右键群集,选择 “Optimize Hosts” 的方式进行。在手动模式下进行DO首先会先进行群集的估计,之后会出现一个窗口显示建议进行迁移的VM/源主机/目标主机。

如果想要开启自动DO也很简单,只要在主机组属性中开启就可以,之后选择DO的运行周期(默认为10分钟一次),这样,主机组内的群集就会在指定的周期对群集自动进行DO,如果自动DO导致了一次迁移,在任务窗口中也可以观察到迁移的进度。

DO的性能数据

1.在进行大部分的部署工作时(如新VM,迁移VM,新建服务等等),DO会基于一定周期内VM在正常工作条件下的性能数据计算出平均值,用以星级评估。

2.SCVMM从VM和主机每9分钟获取一次性能数据(这也是为什么DO的默认周期是10分钟的原因),DO会基于滚动周期内性能数据的平均值进行检查

3.DO不会进行存储迁移,所以在进行DO时磁盘性能是不计算在主机负载内的,在VMM 2012中, DO只考虑CPU以及内存的使用

诊断DO出现的问题

当DO出现某种问题的时候(其实也就是动态优化没有产生你要的效果的时候),我们需要通过哪些手段来确认为什么不能正常执行的?

其实最主要的工具就是SCVMM的客户端,你可以手动对你想要迁移的VM进行一次手动迁移,我们会发现出现如下界面:

可以看到,界面上出现了主机的星级,这个星级的计算方法、放置规则是与DO的计算方式完全一致的,从图中可以看到主机1,3是有星级的,但是主机2由于添加了放置规则,且并不满足,所以是没有星级的,这点可以从下面的异常信息看出来。所以DO不会将我选中的VM迁移到主机2上。

同样,还有一种最常出现的情况就是群体over-commited:

在上图这种情况下,不管主机的星级多么高,但是群集整体已经过载,也就是说无论怎么迁移VM都会有over-committed的警告,违反了DO的第一条规则,所以DO是不会进行动态迁移的。

最后,我们要考虑的就是主机资源的平衡问题,只要没有达到aggressiveness的级别设置,DO是不会进行平衡迁移的,举例来说,有一个主机上运行了10个空闲的VM,而另一台群集里的主机上没有放置VM,DO运行检查后发现没有达到aggressiveness的配置值,所以并不会导致VM进行迁移。 但是当主机的使用率上升,换句话说,星级评定与空闲主机相比有下降的超出了aggressiveness阈值,DO才会有迁移的动作进行资源平衡,我们可以通过把aggressiveness的等级设置的高一点,让群集内主机的资源使用尽量平均。当然我并不建议这么做……

使用scvmm 2012的动态优化管理群集资源的更多相关文章

  1. 浅谈Virtual Machine Manager(SCVMM 2012) cluster 过载状态检测算法

    在我们使用scvmm2012的时候,经常会看到群集状态变成了这样 点开看属性后,我们发现是这样 . 发现了吗?Over-committed,如果翻译过来就是资源过载,或者说资源过量使用了,那么这个状态 ...

  2. FreeRTOS 动态内存管理

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 动态内存管理,动态内存管理是 FreeRTOS 非常重要的一项功能,前面 ...

  3. Android 6.0 - 动态权限管理的解决方案

    Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应 ...

  4. C++动态内存管理之shared_ptr、unique_ptr

    C++中的动态内存管理是通过new和delete两个操作符来完成的.new操作符,为对象分配内存并调用对象所属类的构造函数,返回一个指向该对象的指针.delete调用时,销毁对象,并释放对象所在的内存 ...

  5. uCGUI动态内存管理

    动态内存的堆区 /* 堆区共用体定义 */ typedef union { /* 可以以4字节来访问堆区,也可以以1个字节来访问 */ ]; /* required for proper aligne ...

  6. Keil C动态内存管理机制分析及改进(转)

    源:Keil C动态内存管理机制分析及改进 Keil C是常用的嵌入式系统编程工具,它通过init_mempool.mallloe.free等函数,提供了动态存储管理等功能.本文通过对init_mem ...

  7. (原创)动态内存管理练习 C++ std::vector<int> 模拟实现

    今天看了primer C++的 “动态内存管理类”章节,里面的例子是模拟实现std::vector<std::string>的功能. 照抄之后发现编译不通过,有个库函数调用错误,就参考着自 ...

  8. C++程序设计入门 引用和动态内存管理学习

    引用: 引用就是另一个变量的别名,通过引用所做的读写操作实际上是作用于原变量上. 由于引用是绑定在一个对象上的,所以定义引用的时候必须初始化. 函数参数:引用传递 1.引用可做函数参数,但调用时只需 ...

  9. web页面内容优化管理与性能技巧

    来源:GBin1.com 回 想一下,以前我们不得不花费大量时间去优化页面内容(图片.CSS等等),如今用户有更快速的互联网链接,我们似乎能够使用更大的图像或更大的闪 存文件,里面包含的有视频或者图片 ...

随机推荐

  1. 40 个让你的网站更加友好的 jQuery 插件

    一个插件的基本功能是执行一个含有元素集合的函数数组.每个方法和jQuery核心组成一个插件,如.fadeOut()或.addClass().一个jQuery插件是一个基本的可以扩充jQuery 原型对 ...

  2. Unity实现滑页嵌套(解决ScrollRect嵌套冲突问题)

    简介 由于项目需要+有网友咨询,所以做了个横向滑页+某一横向滑页中有竖向滑页的demo,实现有点绕弯子,但基本功能还是比较完善,发上来共享一下. 效果 思路 第一步的思路是自己判断触屏拖动位置,然后控 ...

  3. C#使用iTextSharp给PDF添加水印

    代码: /// <summary> /// 添加普通偏转角度文字水印 /// </summary> public static void SetWatermark(string ...

  4. 把cookie以json形式返回,用js来set cookie.(解决手机浏览器未知情况下获取不到cookie)

    .继上一篇随笔,链接点我,解决手机端cookie的问题. .上次用cookie+redis实现了session,并且手机浏览器可能回传cookies有问题,所以最后用js取出cookie跟在请求的ur ...

  5. 设计模式(三)工厂方法模式(Factory Pattern)

    一.引言 在简单工厂模式中讲到简单工厂模式的缺点,有一点是——简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂,然而本专题介绍的工厂方法模式可以 ...

  6. vim使用心得(持续更新)

    !统计符合条件的行数方法1 :g/<匹配条件>/d 查看影响行数,然后按u恢复.   !统计符合条件的行数方法2 :let numb=0 :g/<匹配条件>/let numb+ ...

  7. Z.ExtensionMethods 一个强大的开源扩展库

    今天有意的在博客园里面搜索了一下 Z.ExtensionMethods 这个扩展类库,确发现只搜到跟这个真正相关的才两篇博文而已,我都点进去看了一下,也都只是提到而已,没有专门介绍,才引起我写这篇文档 ...

  8. 学习笔记(二)——MVC扩展(渲染视图)

    如何渲染视图? 我以近乎的视图引擎为例总结了一下,近乎中的ThemedViewEngine类,就是重写后的的视图引擎.ThemedViewEngine类主要对FindPartialView和FindV ...

  9. 在 Visual Studio 等编辑器/IDE中自动切换输入法,不需要手动的有没有?

    使用Visual Studio写代码,经常遇到的一个问题就是切换中文输入法麻烦,输入完注释//,要切换到中文,输入完引号,要输入中文,然后还需要切换回来,有没有? 有时候中文输入法忽然失效有没有?明明 ...

  10. 使用CruiseControl.Net全面实现持续集成

    持续集成想必大家很多人都听说过,甚至都实践过,最近我又一次亲历了一次持续集成,现将我的经验分享给大家.关于持续集成的理论在本文概不涉及,本文的主要目的是实战CruiseControl.Net,用它来全 ...