关注高性能服务器的存储I/O瓶颈

服务器技术与性能正在迅速的发展与提高,而这其中主要的推动力,毫无疑问就是CPU,许多周边设备的技术发展与进步是与CPU密切相关的,比如内存、网络I/O以及存储设备等。而在当前,处理器的多核化已经不可阻挡,这又将给周边的数据设备带来新的挑战。

由于处理器内核的增加,也必将加剧对服务器资源的争夺,这里包括了内存容量、内存带宽、网络带宽以及存储I/O带宽等等。现在去衡量一个采用多核处理器的服务器的基本能力时,一个基本的指标就是每核所分配的到资源,如果资源不够,每个核心的性能也将不能充分的发挥。而且,随着服务器虚拟化的不断普及,在单台服务器上承载多个应用虚拟机已经趋于常态,而这种显而易见的多任务的压力也就分摊在相应的I/O设备上了。

为此,厂商在不断的给内存增加通道数量,提高内存的传输率,网络I/O也从Mbps向10Gbps级迈进,这些基本都是可以通过电子电路设计的改进来实现,因此慢慢的,人们就感觉到最终的性能瓶颈开始向存储集中,即传统的硬盘(或称磁盘)系统。

传统硬盘的优势与劣势

硬盘(全称硬盘驱动器,HDD–Hard Disk Drive)已经有了很悠久的历史了,最早可以追溯到50多年前,所以发展至今已经千锤百炼,在技术上已经相当的成熟,伴随着垂直磁记录等技术的普及与发展,硬盘现在容量已经发展到TB的级别,每GB的成本不过几毛钱,这在当前的服务器系统中的优势无可比拟,但是由于硬盘的原理性限制,它的劣势在CPU性能突飞猛进的今天也就越发明显。

我们知道硬盘的存储是基于旋转的磁盘,在工作时有一个磁头臂带着磁头在旋转的磁盘上做径向的寻址,然后再读写数据,这里就存在着较大的访问延迟。由于磁头在开始读写数据前要先找到相应的磁道,再找到相应的扇区,所以其平均寻址时间由平均寻道时间+平均潜伏期得来,以当前最高性能的15000RPM(每分钟15000转)的传统硬盘产品为例,其平均寻道时间为3.2ms,平均潜伏期(盘片旋转半圈的时间)为 2ms,两者相加为5.2ms,这就意味着它对寻址命令的平均响应能力是192IOPS,IOPS就是指硬盘在每秒里可执行的I/O操作数,由于必须先找到地址才能进行I/O操作,所以IOPS也基本可以理解为对寻址命令的响应能力,这对于CPU的事务处理非常关键,尤其是非常常见的随机访问操作(如数据库)。

虽然现在有较为成熟的命令排队技术来优化硬盘的寻址操作,但理论的上它的实际性能很难超过单一的平均潜伏期的水平,比如平均潜伏期为2ms,那么IOPS的最大值就在500左右,这就是传统硬盘传统硬盘的最理想的水平,而实际测试成绩一般在200至300 之间。在传统的单核服务器上,这样的IOPS表现似乎问题不大,但如果是在多路多核的系统上,尤其是多虚拟机环境下,这无疑将成为最明显的性能瓶颈。可是,基于机械的硬盘在这方面是力不从心的,因为转速很难再提升,所以它的响应速度最终就落在ms(毫秒)的级别。

另一方面,由于是在旋转的磁盘上进行数据的读写,所以其数据传输率将随磁道的位置产生变化,最外圈的磁道数据传输率最高,但越往里数据传输率越低,这从其数据传输曲线图上就能看出来,它是一个呈阶梯状的从高向低的曲线,也就是说硬盘无法做到数据传输的恒定,这也对其有效带宽造成了致命影响。

基于闪存的固态盘 高性能服务器的必然之选

当我们了解到了传统硬盘的优势与劣势后,再结合业界的发展趋势就能较为容易的找破解服务器存储I/O瓶颈之道,那就是正在迅猛发展的,基于闪存的固态盘(SSD, Solid-State Drive)。

闪存(Flash Memory)是一种非易失性的半导体存储器(NVRAM),这里就有两个特点,第一它是非易失的,可以像硬盘那样永久的保存数据,第二它是半导体存储器,就意味着更快的访问速度。

当前主流的存储用闪存就是NAND闪存,若算上页面寄存器的数据传输时间,基本是20us(微秒)左右,理论的IOPS可达50000,是传统硬盘传统硬盘的100倍,这就是当前SSD相对于硬盘的领先水平,而如此高的响应能力再加上可通过多通道设计来成倍提高I/O带宽的能力, 使得SSD迅速成为了高性能服务器的首选。而且,SSD的数据由于是类似于内存的平行传输,不存在硬盘的外圈与内圈的问题,所以可以做到恒定保持在最高的数据传输率上。

从SSD的传输曲线图中可以看出,基本处在同一水平线上,没有硬盘的内外圈之分,在全容量范围内都可获得最高的传输速率

有人可能会说,SSD的容量不够呀,的确与当前的硬盘容量上比,SSD还差不少,但上面也提到除了技术的进步外,更先进的应用理念已经让高性能服务器不再需要大规模的本地存储,它只需提供关键应用的生产工作卷即可,而大规模的数据存储可以交给外接的专用的存储系统(网络),所以对于本地的容量需求不再苛刻。

而与容量相比,相对于多核高性能处理器,其响应能力更值得关注。在这方面,IBM最新的eX5服务器所采用的eXFlash SSD(IBM称之为"极速存储套件"),就非常能说明问题。IBM eX5服务器中最高端的3850 X5服务器采用了8块2.5英寸规格的eXFlash SSD,而该服务器具备4个英特尔最先进的8核心处理器,共32个核心,此时每个核心所能分配到的IOPS性能达到了近12500,如果按一个典型的数据库容量为100GB,IOPS平均需求为15000计算,这8块eXFlash SSD就能支持30个这样的数据库的运行,而用传统的硬盘,至少需要800块(还是理论上的理想情况),这800块硬盘无疑就意味着更高的电源消耗、更多的容量浪费(因为为了增加IOPS所带来的新增加的硬盘容量并不是必须的),更多的运维成本(800块硬盘不可能放在服务器里,所以需要额外的阵列占用机房空间,并需要专门的维护)。事实上,经过IBM的试验表明,以这种平均45万 IOPS的访问规模运行3年后,eXFlash SSD所节省的电力与运维成本就将近230万美元,而它仅以硬盘阵列3%的成本就可实现同等的IOPS性能,能耗只有硬盘阵列的1%。

采用传统硬盘应对高密度的数据库访问时,所需要付出的代价是昂贵的

8块eXFlash SSD相当于800块传统硬盘的IOPS响应能力,而成本则节约了97%,功耗只有后者的1%,优势明显,而借助后端的专业存储系统,则可以更合理的分配存储资源,而不必为了满足IOPS而低效率的添加硬盘

综上所述,当我们在采购高性能服务器来承载我们的关键应用或建立一个虚拟化基础架构时,不要忽视其中的瓶颈所在,否则高性能的处理性能必将会大打折扣,虚拟化的优势也无法完全释放,服务器越高端这一反差也就越明显,所以我们完全有必要关注内存SSD在高性能服务器中的重要作用,而在这方面,IBM的eXFlash SSD无疑给了我们很好的启示。