分享

“按需应用'(2)——虚拟机就是X86

 王宇w3j0f3o2vv 2016-08-29
来点蛋糕

一个蛋糕一个人吃不完,大家分着吃而已。只要还是这点胃口,就不会是因为分着吃了,会吃不饱;分蛋糕的时候,刀上总会沾点奶油和蛋糕屑,这就是损耗,但损耗微不足道。被分的蛋糕还是蛋糕,只不过变小了,可以让多个人吃了,不再浪费。



    X86服务器主要是由CPU、内存和I/O设备通过共享“总线”构成的(如图1)。总线的英语是“BUS”,为什么是“公共汽车”呢?数据可以在任何一个车站(即I/O设备)上车,通过总线的“仲裁,请求,侦听,响应”到目的“车站”下车,完成相应的工作。实际上总线就是服务器内控制有序的网络,和外部通过以太网交换机或FC交换机等相连的网络是一样的。两者最大的区别只是带宽和速率。

1

    北桥、南桥是主板上芯片组中最重要的两块了,它们都是总线控制器。北桥连接系统总线,担负着 CPU访问内存的重任。同时连接这AGP插口,控制PCI总线,在这一段上速度是最快的。南桥不和CPU直接连接,通常用来作I/O IDE设备的控制,速度比较慢。

资源池内常用的中国电信定制化服务器采用的Intel E5-2630v32.4Ghz8核)CPU为例展开讨论(如图2)。

随着需求的发展,北桥的“前端总线”(FSBFront side bus)成为瓶颈,这个芯片将北桥的功能集成的CPU中。通过内置的内存管理器连接内存,采用QPI总线,速率达到了8GT/s

南桥芯片连接了相对低速的I/O设备,比如网卡、硬盘、USB设备、HBA卡、PCIe设备等等。对于云计算资源池来说,连接外部网络的网卡、HBA卡、内部的硬盘、PCIe SSD等是重点要关注的设备。


图2(单击打开放大看更清楚)

我们要重新认识几个常见的时间单位,这个用的少,常常被遗忘的:

1纳秒=十亿分之一秒 1毫秒=一千分之一秒

 

CPU的频率等于2.4Ghz的时候,其周期就是频率的倒数,即0.4纳秒。一般情况下,绝大多数的CPU指令是可以在不到一个周期内完成。0.4纳秒是什么概念呢?如果换算成为光走的距离,也只有12厘米。CPU的运算速度如“闪电”这句话真不夸张!

为了便于表达,定义t=0.4纳秒;

   CPU核内的时延=1t0.4ns   光跑出0.12

   CPU L1缓存的时延长>=3t1.2ns)光跑出0.36

   CPU L2缓存的时延长>=14t5.6ns)光跑出1.68

   从内存的时延长>=240t96ns)光跑出28.8

   在内网的时延长>=250t1ms)光跑出300千米

   在机械磁盘的时延长>=2500t10ms)光跑出3000千米

 

如果大家还没有感觉,我们把t这个时间放大,t=1秒的时候。执行的命令从CPU L1缓存中读取需要3秒,好比从地上捡起一张纸张;从L2缓存的时延14秒,好比从身后的书架上拿了一本书;从内存中取数据4分钟,好比去隔壁上买了杯咖啡;内网的时延29天,好比出差一个月;而从磁盘中读数据289天,好比去外地交流工作了一年。

从程序优化角度考虑,将经常使用的计算指令常驻在CPU的缓存中,这样的计算效率是最高的,其次是放在在内存中,需要等待240个周期。如果指令还要从磁盘中开始发起,对于CPU来说已经等待了2500万的处理周期了。这段等待的时间内,CPU是没有事情可以做,处于“停机”状态中。

如果计算压力又很小,一直没有计算指令发给CPU,这样CPU休息的时间就更长。这就是计算虚拟化可以实现的需求基础。当物理机的利用率很低,大量的CPU资源闲置,就催生了计算虚拟化。

计算虚拟化实际上就是一个调度员,根据一定的算法,将CPU计算资源调度给不同的指令发送器(虚拟内存)来执行。所谓的虚拟内存简单的说其实就是真实的内存,只是把内存分割成为一段一段的,并把每段分配后内存的物理地址映射为从0开始的虚拟物理地址,作为每个虚拟机的内存。将一个或若干个计算周期“捆绑”给不同的虚拟机内存来执行计算命令,就是虚拟机。

虚拟机的CPU是根据时间复用的方式进行“共享”的。每次CPU在分配给不同虚拟机使用前,都必须清空缓存,这样数据就不会被污染。所以,每次虚拟机获得了CPU计算资源执行周期,指令的发起点是内存,需要将内存的数据写入CPU的缓存中去,240t的时延是不可避免的。CPU每次在 “切换”虚拟机的时候“停顿”是不可避免的,这就是CPU“共享”后带来的额外损耗之一。但是这种损耗对于应用来说是微不足道的,因为应用的时延是毫秒级甚至是秒级的,而CPU共享带来的时延是纳秒级别的,相差千万倍以上。

物理服务器的硬盘是整个系统中很慢的设备。上文为了便于计算,将机械磁盘最小时延定义在10ms,其实一般机械磁盘读写平均时延在15ms以上。虚拟机本来就可以利用本地硬盘作为它的硬盘。但是如果物理机“挂了”,那硬盘也就停止工作了,虚拟机不能迁移了。虚拟机一般会通过网络(包括以太网或FC网络)来外接一个“独立”的存储设备。从表面上看网络带来的时延增加了1ms,但实际上存储的优化特性(如raid、缓存技术等),会使存储设备自己的时延降低。从整体上看利用“共享”存储是减少“时延”的,但还是一个级别的时延。

对于应用来说,不管是承载在物理机还是虚拟机带来的时延,都是同一个数量级,这种差别对于计算机系统来说,是完全没有区别。

  一个蛋糕一个人吃不完,大家分着吃而已。只要还是这点胃口,就不会是因为分着吃了,会吃不饱;分蛋糕的时候,刀上总会沾点奶油和蛋糕屑,这就是损耗。被分的蛋糕还是蛋糕,只不过变小了,被多个人吃了,不再浪费。虚拟机就是这个道理。为了多吃几种不同口味的蛋糕,也可以分着吃,这又是另外一种应用的表现,这个后续再详细阐述。


从架构上来看,物理机和虚拟机的架构完全是一样,虚拟化层只是对原来的硬件做了点“手脚”。CPU、网络等资源是按照“时分”外,其他的如内存、存储等都按照“空分”来实现。虚拟化层的“魔术”完全会让操作系统完全区分不出用的是物理机还是虚拟机,更何况是在操作系统之上的应用呢!

所以,虚拟机就是X86服务器!因为使用独立的存储,所以虚拟机在功能上又超越了X86服务器。

 

华山派气宗保守派主要集中在研发人员中和传统的IT人士,开发和使用IT的“上层建筑”,对底层不解不够,想当然了,以为虚拟机是个怪物。

华山派剑宗走火入魔派往往是“研究”人士,只看到了虚拟机的好,而忽视了其他,认为所有的应用都该用虚拟机。

我们要给气宗人士“洗脑”,但现阶段主要还是要提防“走火入魔”让这个世界全变成了虚拟机,那是另外一种浪费。记住上一篇的标题“X86一统江湖”而不是虚拟机一统江湖。因为虚拟机也是X86服务器的一种。

 

下一回合,主要讲虚拟机是个“浪费”的东西。

   


致力于云计算普及和应用


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多