00:00
那么接下来我们看一个使用对外内存,那么对外内存默认呢,它是不会去使用的,需要咱们去设置参数将它打开啊。那么说到多了内存,那么看看两个参数啊,第一个呢。就是一个enable。必须把对外内存的开关视为处默认呢,它是一个false,表示不使用,另外一个咱们要指定使用对外内存的大小。啊,就这个参数,但是如果仅仅停留于这实际使用,你还会有问题的,它其实还会有用到一个内存,叫呃,它的一个额外开销,Overhead。这个参数的值呢,默认就是咱们堆内内存乘以0.1。并且会以最小值384兆做比较,取一个最大值。举个例子啊,咱们堆内内存假设设的六个G,那么它就通过这个公式计算出来这个overhead需要600兆,之后呢,它会跟一个默认值384兆取一个最大值。
01:09
也就是说这个时候就是需要600。那384有什么意思呢?有什么用呢?比如说你的堆内内存才两个G,那乘以0.1,那是不是大概200兆啊。虽然你公式计算出来是200,但是呢,它最少最少要使用384,两者取最大,那肯定是384对吧,也就是说咱们开销最少最少384兆,那么这边呢,需要给大家说明一个是。很多呀,网上资料说呀,说咱们这个overhead包含了这个。对外内存的大小,但这是不一定的,是跟版本有区别的啊。如果是3.0之前,那这个说法是对的,3.0之后就变了,来,我放大一点,这边是我之前的一个图,你看这个是2.4的版本,也就小于3.0,那么它在计算内存的时候是这么三个东西。
02:08
有什么呢?呃,E堆内的内存还有什么呢?这个所谓的head,这个时候的overhead包含了,呃,那个刚才那个size还包含了一个384这两个东西啊,最小三八四这两个东西是包含在一起的,但是咱们3.0版本,大家看一下这是3.0了,那么大家看一下它的内存分配,现在就多了啊。太太小了的话,我再放大一点,哎,我们看一下这个是堆内内存,也就是咱们提交参数指定的CU内存,那个都是堆内的,接下来它拆分成了一个什么呢?Of he,对外内存加上对外的开销。啊,那后面这个PS bug跟刚才一样都有对吧?啊,大家要注意了,那我们也可以来给大家测试一下啊测试一下。
03:03
来首先呢,咱们。我的雅安容器上限是七个G啊,给大家看一下,那么大家根据自己情况来测,呃,Vm op PT module哈,Doer ETC哈,Doer,然后呢,雅安com s,那这边大家看看容器允许分配的内存,我现在调整到了什么?最小是512兆,最大的是7000多兆,这个就是七个G啊,这是我的单个雅安容器的上限,那我们就围绕这个来试一下。给大家验证一下刚才那个说法。那首先我们看文档,在我这个提交参数啊,呃,Driver咱不用关心的,三个也不用管啊,这个合数也无所谓啊,这个无所谓,那我们看一下我的参数啊,这个是什么?Overhead是一个G。来,我把它标红一下。
04:01
然后呢,对外内存是两个G。五个G,那么如果按照之前网上的说法,呃,整体延容器的内存是K内,加上这个开销的话,那这才六个G对吧?并不会超过我单个容器七个G的限制,但是呢,这个时候我把of hip也设为两个G,我们看看到底会不会超过雅恩的容器上限,对吧?提交看一眼。他会报错。好,已经报错了,我们看一下啊,这个报错非常的明显。来这儿需要什么?EE内存五个G,是咱们杠杠E,呃,Memory来指定的,这个是堆内的,这是堆内,然后呢,堆外的内存两个G,这个是咱们指定的。啊,堆内五个G,堆外两个G,然后呢,还有一个OVERHEAD512兆,这个参数我们说了,是不是堆内乘以0.1啊,那是不是等于512兆啊,那同时512兆又跟三默认的384取一个最大值,那最大值就是512了,所以我们算一下这两个已经达到了七个G。
05:20
那其实就是我们已经达到了7.5个G,已经大于雅安设定的容器上限七个G,对吧,从这里我们也可以验证出来,对吧,最大的阈值是这个,这个是雅安的容器上限,所以呢,因为咱们演示3.0版本,所以要注意这个事情,那么如果你是小于3.0,你也可以去看看啊,就不会有这个影响,那么在接下来咱们再重新提交了一下。我只设置了一个啥呢。啊,上面这个这个没影响啊,这个是driver的啊,这个把它删了,这个没用啊,不影响咱们刚才的结论对吧。
06:06
呃,那这个现在呢,我将这个堆外内存设为一个G,将堆内内存指定为五个G,那加起来是不是六个G啊,那如果咱们再算上那个。内存开销五个G乘0.1是不是应该再加512,那就等于6.5个G是小于七个G的,那么任务应该是能够成功跑起来的啊,小运往雅安的容器上线,我们再执行一下。他不会报错对吧。你看到现在为止不会报错,然后呢,已经准备开始执行了。啊,到这一步了。好让他跑这边,这个不知道要跑多久啊。那这个事儿呢,就是给大家说一下啊,使用对外缓存,对外缓存。它的一个几个参数之间的关系跟影响,注意版本区别。最低版本区别。
我来说两句