虚拟内存管理学习笔记

首先来看一下虚拟内存的内容

esxi主机的内存,叫做host physical memory或者叫做host mechine memory

主机的内存,由vmkernal 对他进行管理,对他进行分页,最基础的页面是4kb,2M

把它分给虚机,guest os去使用,guest os有它自己的内存,叫做guest physical memory

但是实际上它已经不是物理内存了,是由esxi主机虚出来的虚拟的内存

然后呢,它的内存页面实际上是由esxi主机的不同的内存页面,通过一个指针的方式指下来,

给这个虚机去使用,虚机的操作系统再把这些内存,通过内存页面分配给他的应用程序去使用,

这个叫guest os virtrul memory,所以内存里面,再esxi主机里面,有这三层的内存页面,

 

要理解这三个概念,

主机把内存分配给虚机的guest os 去使用,guest os 再把这些内存分给里面的application,也就是这些应用去使用,

那么在 这里就会有一个问题,这个虚机我分给他的内存,到底怎么分,怎么用,来举个例子

假如有个主机,这个主机的内存小一点,有4GB的内存,

那么当我创建一个虚机的时候,这是一个虚机

当我创建这个虚机的时候,我要指定这个虚机有多少内存,这里有一个概念叫做虚机的available memory

虚机的可用内存

那什么叫做虚机的可用内存呢,就是我创建一个虚机的时候,我认为这个虚机有多少内存,然后虚机的操作系统就相应的会认为它自己有多少内存,假如这个时候这个虚机的available memory 四个GB,

那这个意味着什么,这个虚机如果主机给他分配资源,最多可以分配给他四个GB的内存,

另外,我还可以在这个虚机里面做两个设置,一个设置叫做这个虚机我如果要让他运行的话,要让他开机的话,我要保证最少,它想用的时候,我至少要保证它有多少的物理内存可以使用,这个叫做reservation,预留内存,

举个例子,假如我设置的预留内存是1个GB,

也就是说,如果这台虚机想要开机,我的主机要保证这个虚机,至少,它想用的时候,一定能用到一个GB的物理内存,最多能用到4个GB,默认的,其实这里也有一个限制,叫做limit,默认的limit等于available,4个GB

所以这里有三个参数,第一个叫available,虚机的操作系统认为自己有多少物理内存,实际上这个虚机有多少物理内存可以用,不一定,取决于vmkernal要分给它多少,那么vmkernal 要分给它多少呢?最少分给他reservation 这么多,如果它想用的时候,我最少给他分配reservation分配这么多,在这,设置一个gb,最多之只能分配给他linit 这么多,在这默认是4个GB,

也就是说,当我设置了reservation和limit之后,vmkernal,给这个虚机分配内存的时候,至少会保证整个虚机有reservation这么多的物理内存可以使用,最多,不会超过limit 这么多的内存可以使用。

可不可以把limit设置2个GB,

 

可以,如果,设置成两个GB,这意味着,虚机认为自己有4个GB的内存,但是vmkernal 最多给它2个GB,

那意味着虚机还有2个GB的内存,不可能使用物理内存,那他就得到别的地方去找。一般很少这么做,一般都是把linit和available设置成一样的。

这个虚机的reservation是1个GB,那我能保证它一定会有1GB的物理内存可以使用,但是从1GB以上到4GB,这里还有3个GB,vmkernal 属于可给,可不给,vmkernal觉得自己有足够的物理内存可以给你用的时候,他就给,

没有足够物理内存可以用的时候,它肯定就是收回来,

所以中间这1G到4G之间的这3G,是属于vmkernal 自由分配的,有就给你,没有就不给你;

比如说,我开了4台虚机,每台虚机的reservation都是1G,而主机总共就是4G的物理内存可以给你用,那是不是每个虚机都只能拿到1G的物理内存,而剩下的3G呢,vmkernal ,就需要想别的办法凑。

问题来了,对于操作系统来说,操作系统认为我有4G内存,所以它会不会把这4个G的内存都用完,会,什么叫用完,就是我会装4个G的数据进去;

其中1G 是在物理内存里面有地方可以放的,因为有预留,那剩下3G呢,需要找个地方,让操作系统的这3个G 的数据可以有地方放,所以这3个数据,我们给他一个最终的厚备,这个叫什么东西呢,vswp文件,

虚机在开机的时候,就会生成这个vswp文件,关机的时候就会删除,关机的时候,不需要了,所以这个vswp文件,一开机的时候,就会生成,作为最后的一个保险,如果虚机的操作系统最后没有地方可以放这个内存数据了,我就可以放到这个vswp文件里面去,磁盘的,这个是磁盘的,所以这个是最后一个保险,因为磁盘很慢的,尽量不要去用它,因为,把它放到磁盘上,会很慢,但是会把它作为最后的一道保险,

所以vswp的文件应该多大,available-reservations,在这个例子里面就是三个G,

但是这一个虚机,没有做过任何的更改,我创建一个4G内存的虚机,available是4G,默认的reservation是多少呢?如果你不去改它,它是0.每个虚机默认的内存预留都是0,所以默认的内存预留是0,就意味着,这个vswp就是available内存的大小,所以创建一个4G内存的虚机,默认情况下,一开机,就会生成一个4G的vswp文件。

这个是第一点,这是虚机本身要运行所要开销的内存,

不过一个虚机要开机的时候,除了虚机本身要开销内存以外,还有一个东西要开销内存,每个虚机在开机的时候,vmkernal会给它生成一个进程,这个进程叫做virtual machine monitor,

vmm,vmm是一个进程,每个虚机开机一定会生成一个,干什么呢,管理这个虚机的资源,虚机的监控,但是它做的不是监控,它做的是管理这个虚机所有的资源,这个虚机内存是怎么分配的,这个虚机的cpu要做交换的时候,需要什么样的内存放数据,这个虚机有什么样的虚拟硬件,都是由这个vmm去控制的,

vmm是一个进程,进程是需要开销内存的,vmm开销的内存有一个名词叫作virtual machine  over head ,

 

虚拟机的内存开销,虚拟机的内存开销多大,vmware 所占用的内存资源有多大,不一定,取决于你的虚机的大小,

你的虚机越大,所要开销的内存越多,你的虚机cpu越多,要开销的vmm的内存越多,你的虚机的内存越多,需要开销的vmm越多,如果你的虚机200-2个G的内存,可能你vmm的开销就几十兆内存,200g---几十G   

所以虚机不要配置太大,够用就好,因为vmm会有额外的开销,cpu的数量越多,vmm的开销就越多,内存分配的越多,开销的越多,不是指你用多少,而是你配多少,你就开销更多,这叫vmm的开销,

 

不过vmware 早期的时候,,vmm开销的内存,全部会被预留下来,这个virtual maciine over head 会被预留下来,作为整个虚机必须要去使用的物理内存,不过后来vmware 说没有必要全预留,

一部分预留下来,仍然叫做虚机的开销,需要预留的,需要reserve的,

另外一部分呢,

有就给他,没有就用磁盘替代,所以就生成一个vmx---.vswp文件

在第一张的内容里面就讲过,有两个vswp的文件,一个是上面整个vswp文件,另外一个比较偏小,vmx-什么什么.vswp文件,这是vmm所要用到的vswp文件,

 

所以,一个虚机如果要开机,vmkernal要给他预留多少的物理内存资源,

它才能开机,reservation加上virtual machine over hand

 

这部分物理内存必须在主机上要有,才允许你开机,

如果主机上没有这么多内存可以留下了,我就不会给你开机,会告诉你可以用的预留资源不足,,

这是从物理内存角度上说

 

其次,从内存角度说,还要有两个东西建立起来,我才能有足够的内存资源让你开机,在虚机所在磁盘的存储上面,要能建起整个vswp文件,和这个vswp文件

 

什么叫能够建起,需要有足够的空间去创建这个文件

所以虚机从内存的角度上来讲,如果要开机,必须要有两个条件满足,第一,物理内存需要能够预留出reservation加上virtual machine over hand的所需要的这部分预留内存,第二,磁盘上要有足够的空间,创建.VSWP文件和vms.vswp文件,主要是vswp文件,因为vmx.vswp文件很小,但是不管怎么样,我要有足够的磁盘空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值