2

云计算虚拟化三部曲之一:CPU和内存虚拟化

 1 year ago
source link: https://www.51cto.com/article/750606.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

云计算虚拟化三部曲之一:CPU和内存虚拟化

作者:IT一指禅 2023-03-30 07:39:57
我们知道,虚拟化技术是云计算的核心技术。通过虚拟化,可以切割计算、存储和网络资源的颗粒度。虚拟机可根据需要从池子里获取和释放各类型资源。

大家好,我是IT售前工程师Bernie.

我们知道,虚拟化技术是云计算的核心技术。通过虚拟化,可以切割计算、存储和网络资源的颗粒度。虚拟机可根据需要从池子里获取和释放各类型资源。

也就是说:当一个虚拟机繁忙的时候可以从池子里申请资源;当它闲置的时候,再把这部分资源让出来,让其他的这个虚拟机获取。

Bernie将用3篇文章详细论述计算资源虚拟化、存储资源虚拟化和网络资源虚拟化的底层原理。本文是第一篇,讨论计算资源的虚拟化,欢迎阅读。

e230a3f235c3f3b316c159477cc3868e168287.png

计算资源主要是CPU和内存,虚拟化也就是这两种资源的虚拟化。

CPU虚拟化

我们以一台Intel6248R服务器为例,进行深度的剖析。服务器的CPU配置为:24核心、48线程,主频是3GHz,并且支持超线程。

c8bb08497db1a31a344684a7d32f79006ce43b.png

那么一颗CPU的算力是多少呢?

未开启超线程时

一个CPU的算力 = 主频 * CPU核心数;

所以一颗6248R的CPU算力是 = 3*24 = 72GHz。

开启超线程时

超线程也是一个十分重要的概念,后续可以专门写一篇文章说明,这里简单说一下:超线程是将一颗物理CPU通过复用的方式变为2颗逻辑CPU。

所以,如果开启超线程的话,一颗物理6248R的CPU算力是

3*24*2=144GHz

正常情况下一台服务器是不会只配置一颗CPU的,至少也是2颗,我们就按照2颗计算。那么,在开启超线程的情况下,一台服务器的总算力就是288GHz。

开启超线程后,对于单个CPU来说,可以提供出来的计算资源为

163dc7531abc6f04edb02934e3bddaef6c209a.png

如果我们规定:一个最小集群中可以部署了4台同样的服务器,那么这个集群的总算力就是288*4=1152GHz

57c91d43415d59d34b52420b4e162c20085b35.png

接下来,最重要的一步要来了!

虚拟化之后,我们会通过云管平台创建一些虚拟机VM,这些虚拟机是如何分配上面说的这么多CPU算力的呢?

实际上,我们是给创建的虚拟机划分线程的形式分配算力的。比如下图,创建两个虚拟机:VM1和VM2,然后给VM1划分3个线程,给VM2划分4个线程。这就意味着VM1具备了9GHz的算力,VM2具备了12GHz的算力。

虚拟机VM中的vCPU即为一个线程。所以,对于一台服务器来说,在同一时刻所有VM中vCPU的总数不能高于总线程数。比如例子中的vCPU个数不能大于96.

5155fb827e9471cd2a27806bf14c3e811180f7.png

这里有一个问题:在上述例子中,我们假设总共创建了10个VM,把96个线程全部瓜分完了。我们还能继续创建虚拟机吗?

原因是:在云计算中存在资源超分的概念。

比如下面是7个线程,我们创建了3个虚拟机,每台虚拟机分配了3个线程。如果在同一时刻,3个VM同时占满3个线程显然是不合适的,也做不到。

4952f5243306a3c494c792227fff043fba7f49.png

但是,云计算的超分状态完美地解决了资源过饱和的问题。在超分模式下,vCPU可以通过时间分片轮流使用线程的方式进行计算。

不过超分模式也并不是十分完美的,它有可能降低vCPU实际算力。比如:原本一个线程是3GHz,即每秒钟计算30亿次,有可能在时间片轮流使用的情况下,平均1秒钟它能够使用到的时间只有0.5s,也就是说:每秒只能计算15亿次。

所以,超分模式下vCPU的最高算力是主频,最低可能是总算力/vCPU个数。

我们在实际的虚拟化中,一般是会使用到超分的,这也是云计算的边际效应。否则,云计算的灵魂也就不复存在了。不过,超分比也不是越高越好,太高了会影响VM的实际算力。

CPU回收

当虚拟机销毁或者暂时不需要这么多计算资源时,就涉及到CPU的回收,以实现物理资源的最大化利用。因为vCPU虚拟化是通过分时复用实现的,所以只要VM结束就会自动将CPU释放掉,其他的虚拟机就可以申请使用空闲区的CPU算力了。

内存虚拟化

在一个资源池中,总的内存资源是每台服务器的内存的累加。内存的虚拟化过程比CPU简单一些,我们重点关注其申请和回收两个过程即可。

每个虚拟机VM可以向资源池申请内存,比如某个虚拟机VM1在创建时设置内存参数为4G,有可能开机的时候给它1G内存,在程序运行较多时再给它2G内存,但总数不超过4G。

a8f64bb99f7701284032533337d5ee0a20fc7f.png

由于VM存在超分的情况,所以不是说虚拟机VM销毁后,它占用的内存立即回收。因为这个内存有可能也在被其他VM使用ing。底层操作系统平台会周期性地扫描判断内存使用情况,来决定回收与否。

比如在v-Sphere虚拟化方案中,当服务器:

  • 6%=<可用内存,hostOS使用“TPS”方式回收;
  • 4%=<可用内存可用内存<6%,使用“TPS”+“气球”回收;
  • 2%=<可用内存可用内存<4%,使用“TPS”+“气球”+“压缩”+“交换文件”加速内存回收;
  • 可用内存<2%,使用“TPS”+"气球“压缩”+“交换文件”加速内存回收,同时禁止所有VM申请更多内存。
d1dac3809e80dc56787603d1d961e602183abf.png

以上是云计算中CPU和内存虚拟化的全部分享,篇幅有限,后续将发文进一步探讨存储虚拟化和网络虚拟化的相关内容。

文章出自:​​IT一指禅​​​,如有转载本文请联系【IT一指禅】今日头条号。

f4943c315baec70e9c5760d3d3c70cff157534.jpg

责任编辑:武晓燕 来源: 今日头条

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK