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

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

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

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

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

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

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

CPU虚拟化

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

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

未开启超线程时

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

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

开启超线程时

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

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

3*24*2=144GHz

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

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

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

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

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

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

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

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

答案是:

YES!

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

资源超分

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

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

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

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

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

CPU回收

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

内存虚拟化

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

内存申请

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

内存回收

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

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

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

总结

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

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


责任编辑:武晓燕 来源: 今日头条
相关推荐

2009-09-14 09:04:17

CCNA考试CCNA

2011-03-25 09:56:40

Nagios 安装

2017-04-11 09:07:20

互联网

2017-02-07 14:50:39

华为

2010-07-17 01:12:31

Telnet服务

2010-09-26 14:39:40

DHCP故障分析

2011-03-09 09:30:52

Mina

2016-09-27 15:48:57

华为

2010-09-06 09:22:26

CSS语法

2013-06-28 09:35:04

Hypervisor虚拟化成本

2022-10-10 09:10:51

家庭网络网络

2011-03-21 09:22:46

Tomcat

2015-04-28 17:57:51

戴尔云计算

2015-05-12 10:42:53

程序员代码

2012-09-10 16:19:00

云计算公共云

2012-11-19 09:36:35

虚拟化云计算核心

2018-03-08 16:04:19

2011-08-29 16:26:50

魔兽世界LUA

2018-03-18 15:51:59

人工智能潜力首席数据官

2010-09-14 16:54:18

点赞
收藏

51CTO技术栈公众号