一台服务器能够支持的虚拟机数量通常取决于物理硬件所能够提供的可用计算资源。大多数资源, 比如处理器周期、存储I/O和网络带宽等,都能够相对简单地进行共享。这种做法的原理在于负载并不总是处于忙碌状态,因此共享——或者过度使用——资源能 够实现更高等级的负载整合,因此为虚拟机分配的资源总量和可以超过当前物理资源的总数量;就算在特殊情况下出现问题,也只不过是对负载性能产生轻微影响。 然而 ,服务器内存一直以来都被视为一种固定资源。由于每台运行在内存当中的虚拟机都是应用程序和数据集合的完整镜像,因此为所有虚拟机提供足够的内存资源是十 分重要的。否则,服务器将不得不使用硬盘上的交换文件(swap file)来补充内存空间——但是通常这种方式会对虚拟机的性能造成极为严重的影响。但是随着内存过度使用和内存共享技术的出现,这种情况正在发生改变。 借助于内存过度使用技术,主机服务器所分配的内存数量可以超过现有的物理内存数量。比如,假设一台主机服务器拥有4GB物理内存,那么借助于内存过度使用 技术也许可以创建六台内存为1GB的虚拟机。乍看之下,这是一种非常危险的方式,因为两种负载不能同时共享相同内存地址空间当中的不同数据片——至少在将 数据交换到硬盘之前是不可以的。 但是设计者很快意识到许多虚拟机并不会使用为其分配的全部内存空间,导致部分内存空间基本上被浪费了,因为一直处于空闲或者未使用状态。 Hypervisor能够寻找处于空闲状态的内存,并且将其提供给需要使用的虚拟机。如果没有其他虚拟机需要额外的内存,那么这些空闲空间可以被用来创建 新的虚拟机。可以在“共享(Shares)”虚拟内存配置当中定义虚拟机在内存池当中的优先级,并且还可以通过“预留(Reservation)”机制定 义虚拟机能够使用的最小内存空间,保证虚拟机拥有足够内存以正常运行。 虚拟机还能够共享大量内容。比如,上面提到的六台1GB内存虚拟机全部运行Windows Server 2012 R2,其中两台虚拟机运行相同的业务应用。那么在这种情况下,五台Windows Server 2012 R2和一个应用程序就是冗余的。内存共享技术允许不同虚拟机使用相同内存页面当中的一个通用实例。这样就能够减少虚拟机需要使用的内存总数量,并且支持更 高等级的过度使用。内存共享技术的实现方式非常类似于硬盘存储当中的数据去重复化机制。 需要特别注意的是内存过度使用和内存共享都是高度动态的技术,会受到总计算负载和通用内容数量的影响。比如,很少使用的虚拟机能够为内存过度使用释放大量 内存空间,但是随着虚拟机使用频率的增加和内存需求的增长,hypervisor必须将这些内存返还给虚拟机,否则就会面临使用硬盘交换文件所带来的性能 问题。类似地,使用不同操作系统版本、应用程序和数据的虚拟机也许只有很少能够共享的通用内存页面。虚拟机迁移和负载均衡会改变通用内存页面,对内存共享 产生影响。

TechTarget中国原创内容,原文链接: http://www.searchvirtual.com.cn/showcontent_92654.htm
© TechTarget中国:http://www.techtarget.com.cn

内存压缩PK页面交换 解决内存问题谁更在行的更多相关文章

  1. linux内存源码分析 - 内存压缩(同步关系)

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 概述 最近在看内存回收,内存回收在进行同步的一些情况非常复杂,然后就想,不会内存压缩的页面迁移过程中的同步关系也 ...

  2. linux内存源码分析 - 内存压缩(实现流程)

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 概述 本文章最好结合linux内存管理源码分析 - 页框分配器与linux内存源码分析 -伙伴系统(初始化和申请 ...

  3. Android 如何有效的解决内存泄漏的问题

    前言:最近在研究Handler的知识,其中涉及到一个问题,如何避免Handler带来的内存溢出问题.在网上找了很多资料,有很多都是互相抄的,没有实际的作用. 本文的内存泄漏检测工具是:LeakCana ...

  4. C#内存压缩zip文件

    C#中我们使用比较多的文件压缩第三方DLL就是Ionic.Utils.Zip.dll.但是这个DLL只支持对现有文件进行压缩,而不支持内存压缩,如果需要使用内存压缩,那么有第三方DLL ICSharp ...

  5. [转]Android 如何有效的解决内存泄漏的问题

    Android 如何有效的解决内存泄漏的问题   前言:最近在研究Handler的知识,其中涉及到一个问题,如何避免Handler带来的内存溢出问题.在网上找了很多资料,有很多都是互相抄的,没有实际的 ...

  6. linux内存优化之手工释放linux内存

    先介绍下free命令 Linux free命令用于显示内存状态. free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等. 语法: free [- ...

  7. 内存与IO的交换【转】

    用户进程的内存页分为两种: file-backed pages(文件背景页) anonymous pages(匿名页) 比如进程的代码段.映射的文件都是file-backed,而进程的堆.栈都是不与文 ...

  8. VMSTAT监控CPU使用率,内存使用,虚拟内存交换情况

    Linux性能监控分析命令(一)—vmstat命令详解 一.vmstat介绍 语法格式: vmstat [-V] [-n] [-S unit] [delay [count]] -V prints ve ...

  9. SetProcessWorkingSetSize() 方法使内存降低了很多(把内存放到交换区,其实会降低性能)——打开后长时间不使用软件,会有很长时间的加载过程,原来是这个!

    在项目中对程序性能优化时,发现用SetProcessWorkingSetSize() 方法使内存降低了很多,于是查阅了相关的资料如下: 我的程序为什么能够将占用的内存移至虚拟内存呢? 其实,你也可以, ...

随机推荐

  1. python 输出奇偶数并排序

    random_numbers = [] for i in range(40): random_numbers.append(random.randint(1, 100)) num1 = [] num2 ...

  2. Typora使用

    Typora使用 1.介绍 typora是一款不错的软件. 1.1 基本使用 html js css python java vb 1.2 无序列表 a b c d e f 1.3 java代码 pu ...

  3. Windows 系统System帐号及权限

    今天碰到一同事,在那里删除注册表,死活都删除不掉,想起以前在学校的时候老是被莫名的被别人叫过去修电脑(开玩笑,真觉得那时候的我比现在牛B很多),什么删除不掉的东西没见过,然后小小的百度了一下很快就帮他 ...

  4. CVE-2017-8464 LNK文件(快捷方式)远程代码执行漏洞复现

    北京时间2017年6月13日凌晨,微软官方发布6月安全补丁程序,“震网三代” LNK文件远程代码执行漏洞(CVE-2017-8464)和Windows搜索远程命令执行漏洞(CVE-2017-8543) ...

  5. [转载]弹出一个不带地址栏、工具栏的IE非模态窗口

    标签:ie /非模态窗口 window.open(url,'_blank','menubar=no,fullscreen=1,toolbar=no,resizable=no,location=no,s ...

  6. 一个TCP的问题,所谓TCP面向连接的虚电路到底是怎么实现的?

    http://www.cskaoyan.com/thread-23715-1-1.html 今天我又查阅了一些资料,发觉一个问题,TCP所谓的面向连接的特性以及建立虚电路,与网络层虚电路服务好像有着本 ...

  7. java常用输出技巧,debug

    package control; import javax.swing.JFrame; public class DebugTest { public static void main(String[ ...

  8. python的**和*

    1.**两个乘号就是乘方,比如2**4,结果就是2的4次方,结果是16一个乘号*,如果操作数是两个数字,就是这两个数字相乘,如2*4,结果为8*如果是字符串.列表.元组与一个整数N相乘,返回一个其所有 ...

  9. Redux初识

    1.定义规则counter 2.根据计算规则生成store let store=createStore(counter); 3.订阅消息(state 发生变化后发送消息) 4.触发规则,使state发 ...

  10. 牛客小白月赛2 D 虚虚实实 【欧拉图】【连通图】

    链接:https://www.nowcoder.com/acm/contest/86/D来源:牛客网 题目描述 震为雷,临危不乱,亨通畅达:巽为风,柔顺伸展,厚载万物. 震卦:洊雷,震,君子以恐惧修省 ...