精华内容
下载资源
问答
  • 因此我们在服务器虚拟化的场景下,就常常开启智能内存复用技术来提高服务器的虚拟机密度。那么内存复用具体什么呢?内存复用是指在服务器物理内存一定的情况下,通过综合运用内存复用单项技术(内存气泡、内存交换、...

    ​在我们服务器虚拟化的场景下,存在众多虚拟机,也就意味着我们需要更多的内存供给虚拟机使用,可是在我们使用的过程中并没有将所有的内存都使用完毕。因此我们在服务器虚拟化的场景下,就常常开启智能内存复用技术来提高服务器的虚拟机密度。那么内存复用具体什么呢?

    内存复用是指在服务器物理内存一定的情况下,通过综合运用内存复用单项技术(内存气泡、内存交换、内存共享)对内存进行分时复用。通过内存复用,使得虚拟机内存规格总和大于服务器规格内存总和,提高服务器中虚拟机密度。

    通过内存复用技术将物理内存虚拟出更多的内存供虚拟机使用,使虚拟机内存规格总和可以大于主机物理内存,最终提高主机的虚拟机密度。内存复用三种方式:

    内存共享:虚拟机之间共享同一物理内存空间,此时虚拟机仅对内存做只读操作,当虚拟机需要对内存进行写操作时,开辟另一内存空间,并修改映射

    内存置换:虚拟机长时间未访问的内存内容被置换到存储中,并建立映射,当虚拟机再次访问该内存内容时再置换回来

    内存气泡:Hypervisor 通过内存气泡将较为空闲的虚拟机内存释放给内存使用率较高的虚拟机,从而提升内存利用率

    那么这几种技术具体如何实现的呢?

    正如内存共享,我们众多虚拟机具有相同的操作系统,也具有相同的内存页,内存共享将这些相同的内存页统一在一起作为一个共享的页,供给多个虚拟机同时读取,即做到减少内存的使用,又能保证内存都可以被同时读取到。而内存置换是使用服务的SWAP空间与内存空间进行置换实现可以置换出多余的内存给其他的虚拟机所使用。而内存气泡的原理则是Balloon Driver从源虚拟机申请可用内存页面,通过Grant Table授权给目标虚拟机,并更新虚拟机物理地址和机器地址映射关系表。

    打开内存复用功能后,由内存复用策略接管物理内存的分配,在内存不紧张时虚拟机可以使用全 部物理内存。当出现竞争时,由内存复用策略为虚拟机实时调度内存资源,综合运用内存复用技术 释放虚拟机的空闲内存,为其他虚拟机的内存需求提供条件。

    综上所述通过内存复用技术,可降低运营商或企业的成本。

    当计算节点的内存数量固定时,可以提高计算节点的虚拟机密度。

    当计算节点的虚拟机密度固定时,可以节省计算节点的内存数量。

    那么内存复用对我们的环境有什么要求呢?

    1. 如果集群下存在使用 iNIC 网卡的主机,则不能开启集群内存复用功能。

    2. 每个计算节点上运行的所有虚拟机的预留内存之和不能大于虚拟机使用的实际可用物理内存总和。

    3. 同时开启主机内存复用和 Guest NUMA 或者同时开启主机 CPU 资源隔离模式和 Guest NUMA,会导致 Guest NUMA 功能失效。

    可能这时候就有同学问我,那这个内存复用这么好,我这么启动呢?我们在通过VRM管理界面的集群资源控制,对CAN主机的内存复用进行开/关操作。

    2ce92aaa6c07c0d5be77f4aea3d9ac4b.png

    7082249120536bf737606dfb6fb6be3a.png

    是的,主机内存技术只能同时开启,也只能同时关闭,不能说单独开启内存共享、内存置换或内存气泡功能。而内存复用我们一般而言比值推荐最高到达150%。这样不会太影响虚拟机的业务,也可以更好的提高服务器的利用率。不过内存复用技术的开启是导致虚拟机性能下降,所以如果是重要业务的虚拟机,我们不建议开启。

    通过此篇文章,你是否有了解到关于内存复用技术的内容?更多关于FusionCompute的特性,我们后续继续介绍哦。

    展开全文
  • MTK 内存复用技术

    2012-04-01 13:58:17
    关于MTK内存使用的文档,相信你初学的你有很大帮助啊
  • 业界就该问题定义为虚拟机内存复用(复用干嘛? 当然是为了跑更多的虚拟机呀!):memoryovercommit.围绕次问题主要有4种技术手段,下面简要介绍和分析: 1气泡驱动(ballooningdriver) 利用预装在用户虚拟机中的...

     

    技术途径

       业界就该问题定义为虚拟机内存复用(复用干嘛? 当然是为了跑更多的虚拟机呀!) :memory overcommit.围绕次问题主要有4种技术手段,下面简要介绍和分析:

    1 气泡驱动(ballooning driver)

          利用预装在用户虚拟机中的前端驱动程序,偷取guest os的内存贡献给VMM以供其他虚拟机使用.反向易然.

          issue:

                     A 需要实现用户虚拟机支持的前端驱动程序.

                     B 不能自动偷取和归还,需要从DOM0设置.

                     C 不能实现启动时的内存复用,只能启动后偷取(即启动虚拟机时宿主机必须提供其给定大小的内存)

                     D 目前xen 引入了pod (Populate-on-demand) 似乎解决了在HVM虚拟机中的限制C

    2 基于内容的页共享(base-content page sharable)

      VMM会让虚拟机共享同样内容的也面,以达到节约内存的目的。

          issue:

                     A 操作比较重,因为要查看页面内容。

                     B 目前VMM只是对前后端驱动所用的页面,因此能省出的内存数量很有限。

                     C blktap2目前该技术尚不完善。

    3 VMM 换出技术(OnDemand paging/swap)

          VMM实现请页功能,这时guest os 类似进程一样在VMM缺少内存时能被换出到宿主机磁盘上。该方法对虚拟机透明。

          issue:

                     A 由于对虚拟机透明,所以换出的虚拟机存在不确定性。这样容易造成“double paging”,也就是guest os中某些页面已经被换出,而该guest os又被VMM换出,这样必然让guest os的性能恶化。

                     B Xen的实现中hypervisor没有IO功能,因此要换出页面则需要借助dom0完成。所以操作复杂,目前尚未真正实现。(kvm中由于hypervisor在内核中实现,guest os 实现基于进程,因此onDemand paging功能省缺实现)

    4 Transcient Memory

       Oracle 提出的新方法,这种方法实际采用了guest os 内存分配和VMM沟通,也就是向VMM申请,使用完毕,归还VMM的思路。这种方法最彻底的解决内存复用问题。  

            issue:

                 A 需要改变guest os已有的内存分配接口。也就是改造现有系统(虽然是安全的非侵入式改造)。

                 B 该技术还在发展阶段,尚不成熟。

     

     

     

    结论:

      1  目前最成熟和可投入实用是气泡驱动.该技术已经发展多年 2 linux /windows其前端气泡驱动都有参考模型。3 ciritx server已经采用气气泡 + vm反馈 + dom0上的策略引擎 实现了单机上的内存复用。

          2  最理想的方式是采用 Transcient Memory 实现复用,这种方式无疑是将宿主机的整个内存池化、实现了按需分配、用完归还。避免了使用预先化区——被VM独占——带来的分配限制(这好比一个系统5个硬盘,单独使用和采用LVM方式使用的区别)

         3   如果你想更经济,尤其跑网站等应用——也许你该考虑考虑VPS

    转载于:https://www.cnblogs.com/sddai/p/8551466.html

    展开全文
  • 业界就该问题定义为虚拟机内存复用(复用干嘛? 当然是为了跑更多的虚拟机呀!) :memory overcommit.围绕次问题主要有4种技术手段,下面简要介绍和分析

     

    虚拟机内存复用技术的比较(主要针对XEN系统) 

    技术途径

       业界就该问题定义为虚拟机内存复用(复用干嘛? 当然是为了跑更多的虚拟机呀!) :memory overcommit.围绕次问题主要有4种技术手段,下面简要介绍和分析:

    1 气泡驱动(ballooning driver)

          利用预装在用户虚拟机中的前端驱动程序,偷取guest os的内存贡献给VMM以供其他虚拟机使用.反向易然.

          issue:

                     A 需要实现用户虚拟机支持的前端驱动程序.

                     B 不能自动偷取和归还,需要从DOM0设置.

                     C 不能实现启动时的内存复用,只能启动后偷取(即启动虚拟机时宿主机必须提供其给定大小的内存)

                     D 目前xen 引入了pod (Populate-on-demand) 似乎解决了在HVM虚拟机中的限制C

    2 基于内容的页共享(base-content page sharable)

      VMM会让虚拟机共享同样内容的也面,以达到节约内存的目的。

          issue:

                     A 操作比较重,因为要查看页面内容。

                     B 目前VMM只是对前后端驱动所用的页面,因此能省出的内存数量很有限。

                     C blktap2目前该技术尚不完善。

    3 VMM 换出技术(OnDemand paging/swap)

          VMM实现请页功能,这时guest os 类似进程一样在VMM缺少内存时能被换出到宿主机磁盘上。该方法对虚拟机透明。

          issue:

                     A 由于对虚拟机透明,所以换出的虚拟机存在不确定性。这样容易造成“double paging,也就是guest os中某些页面已经被换出,而该guest os又被VMM换出,这样必然让guest os的性能恶化。

                     B Xen的实现中hypervisor没有IO功能,因此要换出页面则需要借助dom0完成。所以操作复杂,目前尚未真正实现。(kvm中由于hypervisor在内核中实现,guest os 实现基于进程,因此onDemand paging功能省缺实现)

    4 Transcient Memory

       Oracle 提出的新方法,这种方法实际采用了guest os 内存分配和VMM沟通,也就是向VMM申请,使用完毕,归还VMM的思路。这种方法最彻底的解决内存复用问题。  

            issue:

                 A 需要改变guest os已有的内存分配接口。也就是改造现有系统(虽然是安全的非侵入式改造)。

                 B 该技术还在发展阶段,尚不成熟。

     



    结论:

      1  目前最成熟和可投入实用是气泡驱动.该技术已经发展多年 2 linux /windows其前端气泡驱动都有参考模型。3 ciritx server已经采用气气泡 + vm反馈 + dom0上的策略引擎 实现了单机上的内存复用。

          2  最理想的方式是采用 Transcient Memory 实现复用,这种方式无疑是将宿主机的整个内存池化、实现了按需分配、用完归还。避免了使用预先化区——被VM独占——带来的分配限制(这好比一个系统5个硬盘,单独使用和采用LVM方式使用的区别)

         3   如果你想更经济,尤其跑网站等应用——也许你该考虑考虑VPS

     

     

     

     



     

    展开全文
  • 内存复用是指在服务器物理内存一定的情况下,通过综合运用内存复用单项技术(内存气泡、内存交换、内存共享)对内存...FusionCompute支持以下内存复用技术:内存气泡:系统主动回收虚拟机暂时不用的物理内存,分配给...

    内存复用是指在服务器物理内存一定的情况下,通过综合运用内存复用单项技术(内存气泡、内存交换、内存共享)对内存进行分时复用。通过内存复用,使得虚拟机内存规格总和大于服务器规格内存总和,提高服务器中虚拟机密度。

    智能内存复用可提升内存资源的利用率,帮助用户节省内存采购成本,延长物理服务器升级内存的周期。

    FusionCompute支持以下内存复用技术:

    内存气泡:系统主动回收虚拟机暂时不用的物理内存,分配给需要复用内存的虚拟机。内存的回收和分配均为系统动态执行,虚拟机上的应用无感知。整个物理服务器上的所有虚拟机使用的分配内存总量不能超过该服务器的物理内存总量。

    内存交换:将外部存储虚拟成内存给虚拟机使用,将虚拟机上暂时不用的数据存放到外部存储上。系统需要使用这些数据时,再与预留在内存上的数据进行交换。

    内存共享:多台虚拟机共享数据内容相同的内存页。

    打开计算节点的内存复用后,可以达到的内存复用程度与虚拟机实际内存的使用量成反比,在安装部署时需要明确并合理配置。

    打开内存复用功能后,由内存复用策略接管物理内存的分配,在内存不紧张时虚拟机可以使用全部物理内存。当出现竞争时,由内存复用策略为虚拟机实时调度内存资源,综合运用内存复用技术释放虚拟机的空闲内存,为其他虚拟机的内存需求提供条件。

    在fusioncompute中,支持的最大内存复用率可以用下面的这个公式去表示:

    主机支持的最大内存复用率=1+(主机swap空间大小-虚拟化域物理内存大小*0.1)/虚拟化域物理内存大小 swap就是内存交换分区,在FC界面上可以设置分区大小

    展开全文
  • 快速内存技术,又叫内存复用技术。适用于:频繁申请指定大小内存块场景,比如通信协议处理等。 文件里面包含.h文件和.cpp文件,无任何第三方依赖。代码目前不支持跨平台使用。
  • 内存复用介绍

    2015-04-01 15:34:34
    内存复用是指在服务器物理内存一定的情况下,通过综合运用内存复用单项技术...当出现竞争时,由内存复用策略为虚拟机实时调度内存资源,综合运用内存复用技术释放虚拟机的空闲内存,为其他虚拟机的内存需求提供条件。
  • 本章主要介绍,内存复用的算法如何设计。 typedef struct mem_block { int block_id; int mem_size; std::vector<int> layer_ids; bool used = false; } MemBlock;
  • 多路复用技术

    千次阅读 2019-10-04 07:26:18
    多路复用技术 多路复用技术是把多个低速信道组合成一个高速信道的技术,它可以有效的提高数据链路的利用率,从而使得一条高速的主干链路同时为多条低速的接入链路提供服务,也就是使得网络干线可以同时运载大量的...
  • 复用技术:具体有时分复用,频分复用,码分复用,波分复用。 空分复用。 多道程序技术(时分复用技术)是通过利用处理及的空闲时间运行其它程序,提高了处理机的效率。 空分复用技术;利用存储器的空闲空间分区域存放...
  • IO多路复用技术 讲解 epoll 技术前,我们先了解一下什么是 IO 多路复用技术。 假设现在有一个服务器程序调用 accept 函数成功与客户端建立了连接,那么通过 accept 函数返回的通讯套接字,服务器就可以调用 ...
  • 代码复用攻击利用被攻击目标的固有程序代码实施攻击,打破了恶意行为总是源自外部的传统假设,是先进内存攻击技术的典型代表,也是近期软件安全领域的研究热点。首先,阐述了该技术的产生背景和实现机理;其次,从...
  • redis IO多路复用技术

    万次阅读 2018-02-04 18:38:22
    redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量。 LINUX IO多路复用原理 在linux下面, 常见的有5中网络IO方式, 具体可以参考如下的文章, 总结的很清楚, 我们就不再具体介绍: ...
  • Redis IO多路复用技术及epoll实现原理

    千次阅读 2019-09-17 22:09:27
    10、Redis IO多路复用技术以及epoll实现原理 Redis是一个单线程的但性能是非常好的内存数据库,主要用来作为缓存系统。Redis采用网络IO多路复用技术来保证在多连接的时候,系统吞吐量高。 10.1 为什么Redis要使用...
  • Netty入门笔记-I/O多路复用技术

    千次阅读 2019-08-01 10:35:30
      上次博客结尾的时候简单提到了多路复用技术。在I/O编程过程中,如果需要多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O多路复用技术是通过把多个I/O的阻塞复用到同一个select的阻塞上,...
  • Redis IO多路复用技术以及epoll实现原理

    万次阅读 多人点赞 2018-05-10 21:54:39
    redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量。为什么 Redis 中要使用 I/O 多路复用这种技术呢?首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待...
  • 事件复用技术比较:Epoll & Kqueue

    千次阅读 2018-09-29 17:56:39
    什么是事件复用技术 假设你有一个简单的web服务器,并且那里已经打开了两个socket连接。当服务器从两个连接那里都收到Http请求的时候,它应该返回一个Http响应给客户端。但是你没法知道那个客户端先发送的消息和什么...
  • 软件复用技术综述

    千次阅读 2007-11-09 05:25:00
    但其目的是为了节省当时昂贵的机器内存资源,并不是为了节省开发软件所需的人力资源.然而子程序的概念可以用于节省人力资源的目的,从而出现了通用子程序库,供程序员在编程时使用.例如,数学程序库就是非常成功的子程序...
  • I/O多路复用技术

    2016-03-30 23:38:41
    在I/O编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O多路复用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以同时处理多...
  • Netty系列---IO多路复用技术

    千次阅读 2019-10-24 19:41:46
    形成的原因: 如果一个I/O流进来,我们就开启一个进程处理这个I/O流。...所以人们提出了I/O多路复用这个模型,一个线程,通过记录I/O流的状态来同时管理多个I/O,可以提高服务器的吞吐能力。 ...
  • Redis之I/O多路复用技术(multiplexing)

    万次阅读 2020-06-25 21:43:37
    在面试中通常会有这样子的场景 ↓↓↓↓↓↓ 面试官:看你的简历写到项目中有用到redis,可以聊聊...面试官:那你了解I/O多路复用技术在redis中的应用吗 求职者:不是很了解。。。 在了解I/O多路复用之前,我们可.
  • Linux中的多路复用技术---epoll的详解

    千次阅读 2018-07-16 00:18:43
    在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等一些名词唱得火热之年代,select和poll的用武之地越来越有限,风头已经被...
  • 在I/O编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O多路复用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以同时处理多...
  • socket多路复用技术

    千次阅读 2018-12-14 19:08:27
    socket多路复用技术 就像上一篇的思想一样,socket多路复用就是实现在一个进程中抗并发.核心的思维就是使用中间缓存 socket抗并发的原理 在系统内核中存在一个监控的系统,当服务器启动的时候,server对象就会在程序...
  • linux下I/O多路复用技术基础知识

    千次阅读 2017-01-16 09:28:48
    根据服务端或客户端对I/O操作的不同,网络编程人员须选择不同的多路 复用模型,在大多数情况下,单类模型已不能满足复杂业务要求,此时更多的是 采用几类I/O复用的组合形式。
  • 在I/O编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O多路复用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以同时处理多...
  • 1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);   2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门...
  • I/O多路复用技术(multiplexing)

    千次阅读 2015-12-10 11:21:48
    线程是有内存开销的,1个线程可能需要512K(或2M)存放栈,那么1000个线程就要512M(或2G)内存。 线程的切换,或者说上下文切换是有CPU开销的,当大量时间花在上下文切换的时候,分配给真正的操作的CPU就要少很多。...
  • 太赫兹频段通信被视为一种关键技术,可以满足对超高速无线链路不断增长的需求并实现纳米网络中的互连。 本文提出了一种用于THz通信网络的带角度分割复用(ADM)的存储辅助媒体访问控制(MAC)协议。 通过利用3D量化...
  • 参考地址:《Redis IO多路复用技术以及epoll实现原理》 redis 是一个单线程却性能非常好的内存数据库, 主要用来作为缓存系统。 redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量。 为什么 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 117,118
精华内容 46,847
关键字:

内存复用技术