00:00
欢迎大家继续收看上硅谷的Linux云计算视频。大家好,我是汪洋老师。那这节课呢,我们去讲解一下我们的CPU的资源限制的相关的一些参数,包括它对背后的含义,对吧?好,那我们一点一点去看那。首先呢,我们先看一下它的限制的一些说明,对吧?刀提供的CPU资源限制的选项,可以在多核系统上限制容器能够利用哪些的虚拟CPU,这里需要注意一下。也就意味着比如我们现在会听到一些比较奇特的一些CPU的字眼,比如。两核两线程,四核八线程,八核16线程对吧?这代表的都是什么含义,或者是我们在做CPU资源限制的时候跟它有什么关系?如果你是两和两限程的话,你可以把它看作为就是两个CPU,如果是四和八限制的话,你可以看作为是一个8U,如果是八和16相等,你可以看作16U,也就意味着看最后这个值。
01:05
需要大家注意一下。那这代表的是什么含义呢?两合两优比较容易理解对吧?两个脑的可以同时干两件事情,那适合。8U怎么去理解为什么四个脑子能够干八件事情呢?这是刚开始的时候,英特还搞出了这么一个黑科技,就是一个CPU在同一时间段能够处理两件事情,当然也是通过我们的是吧,时间的切换去做到,时间片的切换去做到的,那我们不管,我们不管背后的含义你只要知道。它对应在我们的系统里面,可以理解为是。八个CPU的这么一个意义就够了,好。那也就意味着我们在限制利用哪些VCPU,而容器最多能使用的CPU资源限制有两种方式,好,这是我们刚才说到的一点,对吧?那我们接下来结合一起,我们去看一下,一。有多个CPU密集型的容器进行竞争CPU者,什么叫CPU密集型?就是对CU的请求非常频繁,像这类的服务我们都把它叫做CPU密集型服务,那如果是是这种的服务类型工作在我们的容器内部的话,那是不是就成了CPU密集型的容器了,这个比较好理解对吧?好,竞争CPU时可以设置各个CPU啊,各个内存啊,各个。
02:23
各个容器能够使用的CPU的时间的相对比例,对吧,也就意味着设置一个权重的关系,假设我现在有一堆的是吧,比如饭。现在有三个小朋友,第一个小朋友比较能吃,我说哎,你可以吃整份里面的,你们整个资源里面的四份,你可以吃两份,你可以吃一份,也就意味着最终我应该把整个饭化成七份。他吃七份,你的四份,他吃七分,你的两份,他吃七份,你的一份。能理解吗?这样做有什么好处?如果再来一个小朋友,还是这些饭。
03:02
那他不怎么能吃,我要告诉他,你能吃一份,那最终结果我会把它化成什么?几份,八份?对吧,换成八份。那这样的结果就是,他能吃八份里的四份,他能吃八份里的两份,他能吃八份里的一份,八份里的一份。这是按照比例去做的时候,我们能够比较有优点的这么一件事情。第二,以绝对的方式设置容器在每个调度周期能够使用的CPU时间,也就是第一个它是相对的,第二个是绝对的,你只要理解这一点就够了,好。那接下来我们去看一下。它的设置选项有哪些?第一个CPU-CPOS等于。这里解释的是允许使用的CPU集,什么叫CPU集啊?就像我们刚才说的,如果我是一个双核四线程的这么一个CPU的话,那你可以理解为它的CPU4个对应的值就是0123。
04:08
我们从零开始算对吧?零代表它的第一个CPU,一代表第2CPU,二代表第三个,以此类推。那如果我这里设置的它的值为零的话,代表的是这个容器的只能使用到我们的。物理机的什么第一个CPU,那如果零逗号二呢,代表的是能够使用第一个和我们的。第三个CPU。那零到一呢,可以使用的是零。就也就是第一个CPU和第二个CPU,你可以设置把这个容器允许他使用哪个CPU。这就是我们的CPU-CPS的意义所在。这也是一个什么绝对值对吧,好第二个杠C杠杠CPU杠下。也就是这里设置的是一个相对权重的问题了。
05:03
这里怎么解释呢?举个例子。如果我去开启这么几个容器,第一个容器加的是杠杠CPU下等于2048,第二个我没有加。就是我启启动第一个CD,一个容器和第二个容器,第二个容器我没有加这么杠杠CPUC的这么一个参数,那它最后的结果等于多少呢?如果他们两个共同去争的话,没有其他的资源了,那。CPU1CPU2CPU2没有设置,没有设置它的默认值就是1024,需要注意一下,默认值1024,那它会把整个CPU的资源分成几份,分成三份。第一个CPU能够使用它两就里面的两份,第二个CPU只能使用我们的三份里面的一份,需要注意一下,并且如果又起了一个容器。那它的容器的设置的值为四,零。比如4096。
06:01
那就意味着现在分成了几份?这里是四份两份,一份也就七份对吧,那我们会重新进行划分。重新进行划分,那它会使用我们的七份里的四份,七份里的两份,七份里的一份,也就意味着这是一个动态的这么一个过程,需要大家注意一下,一旦有新的容器加入以后,会重新进行权重的计算。相信应该能能理解了,对吧,好下一个。杠杠,CPU set mamo允许在什么内存上执行的?呃,允许在我们的呃节点上执行的内存节点。如果讲这个参数的话,我们就需要给大家去补充另一个我们的系统架构了,它叫numa。Numa解释就是非统一内存访问的这么一种,呃,系统的架构是一种用于多处理器电脑计算体的这么一个设计,也就是多U多内存的时候会利用到了这么一种架构方案,内存访问时间取决于处理器的内存位置,处理器内部也有内存,对吧?好在numa下处理器能够访问它自己本地存储速度比非本地存储快,这个非常理解,对吧?你可以我们一般都会听到,诶,一级缓存,二级缓存,三层三级缓存,其实三级缓存和一级缓存二级缓存它们都不是一个完整的片,而是在不同的担忧下会对应绑定。
07:36
你可以这样理解,比如现在有四核CPU,我们一级缓存,二级缓存,三级缓存,4G缓存,可能会这样去设计,每个下面都会有最近的这么一个片段,能理解我的意思吗?那在我们在去设置刚刚CPU系mamos的时候,执行的内存节点的时候,比如我设置的内存节点是一。代表的是什么?第二个内存节点和第三个内存节点,那为什么我们做CPU限定会跟内存去比对呢?
08:07
原因是什么?它会优先于一内存节点相连的两个,二内存节点相连两个CPU去使用调度,那这样的话是不是便于或者叫做呃,怎么说呢,优于我们的CPU与我们的CPU内存之间的CPU存储之间的这么一个调度过程。好,那下一个杠杠CPU。Pro。等于零和一个框塔等于零,一个叫做设置调度周期,一个叫做调度周期内部能够使用的CPU时间,一般来说这两个值会一起去使用。但需要注意一点就是。我们整个的在Linux操作系统下叫做什么公平调度?公平调度策略。也就是意味着会尽可能的保障每个进程能够使用的资源是能够使用的CPU资源是相对平衡的。
09:01
但我这里也说是相对的,对吧?好,那在此的情况下呢,Cfs的周期有效范围是一毫秒到一秒。那所以我们对应的这个PDA,它能够使用到现在的范围应该是1000个十百,千万,10万,百万到100万之间,这里的单位是微秒。需要大家注意一下,好框呢,是能够。每个周期内。能够使用的时间。配额必须不小于一毫秒,也就是必须要大于等于1000。这也是需要我们注意的。那讲到现在这两个参数,我是不是你们听的一头雾水?这样我们去拿铁的例子给大家去讲解,因为这两个比较重要。第一个到。杠it。杠杠CPU proda5000啊5万杠杠CPU大25000,然后起了一个乌班图命令对吧,并且的BA,这是什么含义啊。设置的我们的调度周期为一个调度周期为各十百千万五万对吧,那一个周期内个内部能够使用的CPU时间为25000,也就意味着我能使用的是CPU的一半的一半的。
10:16
分片时间对吧,那是不是我相当于就使用了CPU的百分之。50。能理解吗?记住这里是一个CPU的,好,我们看下面。刚刚CPU的设置的是1万,这里的框大设置是2万,大家可能就有点懵了,对吧?哎,我现在用5万,我用一半,这个能理解,我现在有1万,怎么能用2万了呢。一个不够。两个来凑。什么含义啊?一个CPU确实只有1万,但是我现在用2万怎么办呢?我两个CPU是不是就可以有2万了?这也就意味着在一个分辨时间内,我能同时利用满百分之百两个CPU。
11:03
能理解了吧?好好,那我们接下来继续往后看下一个那CPSCPS代表的含义是能够限制容器使用的主机的CPU个数。并且这里需要大家注意一下。它还可以使用的是我们的什么1.5个,1.5个代表什么,第一个CPU使用100%,第2CPU使用50%。你说绝对会这样吗?不一定,原因是什么?如果我现在是一个四核CPU的话。我们有四个核心对吧,他只要拼成1.5就够了。怎么理解呢?我可以是第一个50%,第二百分之五十,第三个50%加一起,是不是1.5啊。那第一个25%,最后一个25%,中间两个50%是不是也是1.5,怎么去拼,跟我们的CPU的调度方式有关,能理解我的意思吗?但是最终的结果一定是1.5,也就150%,你能看得到。
12:08
这个需要大家注意一下。好,刚才我们已经讲了很多的一些参数了,对吧,那接下来呢,我们去进行实验,去演示一下我们内存和CPU的相关的资源限制到底是怎么做的。好,第三部分限制实验对吧?好,那我们就三条命令,我们过来看一下。那首先呢,我们这里会借助一个space的这么一个这么一个镜像,这个镜像呢,现在我们用的一般就是做测试的话,一般用这个镜像用的比较多,它是一个Java编写的这么一个进程,可以无限制的去占用我们的内存或我们的CPU资源,所以用它做压测还是比较容易的。好,那。首先我们先看一下命令do run启动,从镜像启动为容器,对吧?刚刚name给它起名字叫space交互命令,刚刚RM代表的含义是什么?容器一旦退出是不是就把被删除啊?杠设置我们能使用的硬限制的内存大小为256兆B对吧?那这是一个镜像名称,Space就是镜像里面的命令杠VR代表的含义就是用两个进程,用两个消耗我们的内存的进程去执行。
13:22
如果你的这里设置内存比较大的话,你这里可以设置更高,那进程越多的话,那占用我们的内存速度是不是就会越快,这个容易理解对吧?好,我们去做一下。打开我们的机器,首先我们刀刚才我们看一下,我们先把后面的容器都给删了,对吧。好,我们去把这套命令给大家执行一下。
14:01
好,这里已经占用了,对吧,我没有看到后台我们双击。然后我们do。我们的容器名称叫什么叫?对吧。好,我们看一下他消耗的资源。那这里大家也可以看到了,对吧。CPU,这里的CPU利用率我们现在没有对CPU做限制,但看这里,看这里255.8,我们最大能够使用256,你看这里的总是不是已经变了呀,总共就256,默认的话我们应该是一个4G的量,如果没记错的话。看到了吧。总量5849对吧,还不止4G,应该是一个5G到6G的样子,好那在这里呢,可以看出来了,做我们的内存资源限制是完全没问题的,内存利用率100%,不会101%对吧,那CPU这里我们都不考虑好,那这个呢,就是我们杠M参数的含义所带来的背后意义,可以限制它的使用的最大的内存资源数,好我们这里就退出了。
15:13
那我们再看第二条。那这里是do RA?杠杠name,然后呢,Space-it这应该杠杠M应该不需要解释了,对吧?好,杠杠CPUSR这代表什么?也就是能够使用我们的两核CPU,那应该显示的最终结果应该是200%对吧?然后呢,Space杠杠CPU8,也就使用八个不同的是吧线程去跑我们的CPU压榨。好过来我们去执行,我们看一下效果。开始跑起来了,对吧?好,那我们过来去查看一下。看CPU200%。原因是什么?我这里是不是告诉他使用最大只能两个CPU,那两个CPU的完整版是不是就200%啊,那你会发现诶,有时候会超过201%,这个就没办法,因为CPU是一个动态调度过程,你说绝对保障一定一定一定不能超过200不太现实,但一般来说也就是在周围浮动了。
16:18
不可能太多的,一旦太多是不是就会被压下去了?好,这里需要注意一下,完全没有问题对吧?好,那接下来我们继续往后看。好,那接下来我们继续往后看,我们这里就把它给关闭吧。好,下一个。Do杠杠name three,然后呢杠it杠杠M杠杠CPU sit cps0,然后呢,搞了一个CPU8个线程数对吧?好,那这又代表什么含义?CPC的CPS0,这代表的是我们当时使用的第几个CPU对吧?零是不是代表第一个CPU,那第一个CPU如果我一直一直去用它的话,那最多是不是也就是100%了,那我们过来看一下是不是这样。
17:19
看到了吗?一直就是100%周围去浮动,不可能超过太多,对吧,因为它是一个动态游的过程,你说完整的是100%以下不太现实,这个希望大家能够理解对吧?好,那这就是我们的一个资源限制,给大家做了这么几个小实验,当然自己我们还可以做一些别的,比如自己可以做一下我们的这一个,对吧,就是跟我们的完全公平调度有关的。或叫做相对相对权重调度有关的,比如我们可以看一下这么一个资源限制,当时我们说的应该是200%的结果,对吧?我们去运行,我们看一下是不是这样,我们把CPU开大一点,我们看到12线阵看刚才起来的时候有点慢,对吧。
18:03
好,我们再去看。200%。看到了吗?所以这些参数到底怎么用,是需要大家去自己去理解以及相互配合的。好,那这个呢,我们就先讲到这里了,那这就是我们的资源限制在这里呢,我们讲的东西还是比较多的,对吧,尤其这些选项。都是有些还是比较容易难理解的,所以希望大家好好的把这些参数给大家看一下,自己去看一下,并且拿着最后的实验自己好好做一下,看到底是不是跟我们说的一样好,那这节课呢,我们就先讲到这里,我们下节课再见。
我来说两句