数据库应用是企业系统中较为常见的应用类型,绝大部分企业的ERP、CRM等关键业务应用都属于此种类型。与视频点播等文件型应用的IO特征截然不同,数据库应用往往在单位时间内产生一系列频繁的离散IO,尽管每次所读写的数据块一般只有4KB,或者8KB。
数据库的存储性能优化问题一直以来都是企业运维人员和数据中心经理关注的热点话题,甚至也是整个数据中心乃至计算机世界的性能之痛。
关键业务应用的性能之痛
原来,在摩尔定律以及英特尔“Tick-Tock”战略推动下,服务器处理能力近年来有了飞速的提高,计算能力越来越强,与此形成对比的则是传统存储技术发展的停滞不前。
实际上,传统的硬盘结构受限于温切斯特原理,内部硬盘磁片的转动速度受温度和稳定性物理定律的限制无法进一步提高,而磁头的读写速率和寻道模式在不断的优化之后(包括48位寻址、NCQ原生指令序列等),也到了极致——大约120MB左右的持续读取速率。传统的磁盘存储在今天海量数据冲击的压力下,已经面临巨大的存储瓶颈,在应对关键型数据库应用的情况下则尤其严重。
▲温切斯特硬盘结构包括盘片、机械马达、机械臂,机械马达带动盘片高速旋转,与此同时,机械臂驱动磁头运动到相应的数据存取区域读取数据。由于数据库的IO特征是短时间内产生大量的离散IO,磁头需要频繁的寻址与换道来读取数据,传统的磁盘在大量离散IO情况下往往捉襟见肘
关键业务数据库的读写IO通常由4-8KB大小的数据块构成,这些数据块一般被随机访问。正是因为每个数据块大小都极其微小,而数据库读写模式又是随机读取,因而磁头需要频繁的寻址和换道来读取数据,实际上,关键业务数据库的应用性能很大程度上取决于磁盘IO读写延时。在某些运行速度较慢的数据库应用中,CPU甚至需要长时间等待磁盘I/O操作的完成。
数据库应用对磁盘IO能力的需求本身已经很苛刻,而不断增加的磁盘容量又给这个局面雪上加霜。长期以来,制造工艺的进步不断推动磁盘容量飞速扩张,然而磁盘I/O能力的增加却相对缓慢,跟不上磁盘容量的急剧增加。这样造成的问题就是,同样的数据库的应用容量,以往可能需要多块磁盘来满足存储需求,现在则通常倾向拥有更少的磁盘,使得原本就捉襟见肘的磁盘IO更加力不从心。
根据英特尔估测数据:2009年服务器数据负荷中,超过50%的情况是受制于输入/输出(IO)性能,为了获得整体性能的同步提升,存储硬件已经成为数据中心的最大单项资本投入。
不同场景下的SSD应用性能
面对数据库的高并发、高IOPS的存储需求,固态硬盘(SSD)给出了完美的解决方案。尽管如此,采用不同工艺制程的SSD提供了不同等级的性能,我们针对不同技术的固态硬盘(如基于Flash、基于DRAM的固态硬盘),以及传统硬盘应用标准工具进行性能评测,结果如下表:
▲图:传统HDD在不同数据块大小下的性能表现
▲图:Flash SSD在不同数据块大小下的性能表现
▲图:DRAM SSD在不同数据块大小下的性能表现
经过一组测试数据的分析,我们认为DRAM SSD是当之无愧的性能冠军,在任何数据块大小的测试环境下,DRAM SSD都保持了良好的性能表现。不过硬币的另一面则是,DRAM的成本也极其昂贵,目前看来很难获得普遍性应用。
基于Flash的SSD则较好的实现了性能和成本的平衡,我们看到,在4K到8K数据块大小下,Flash SSD性能相比HDD提升显著。这是因为SSD消除了传统HDD内部磁头寻道的机械运动时间所致。
HDD的各项测试指标毫不意外的居于最后,我们甚至可以计算一下这个成绩的由来——磁盘平均寻道时间与旋转延迟的和大概可被估算为5~10毫秒,由此造成了传统磁盘与固态硬盘之间显著的性能差异。不过当数据块大小增大的时候,传统磁盘的读写速度也有所提升,当数据块大小为128KB的时候,提升效果甚至十分明显。遗憾的是,关键业务数据库通常的数据块大小是图上红色标注出来的4~8KB。
数据中心中SSD的应用场景
上图显示了SSD在小数据块离散读写的情况下获得的显著性能提升,英特尔则为我们总结了在数据中心中,通过SSD获得性能提升的场景还有多种情况。
▲数据中心SSD的应用场景
无论在SAN存储网络还是CAS归档存储,无论是服务器端还是网络端,都存在应用SSD发挥强大性能优势的舞台。例如,上图显示了应用SSD作为系统启动盘的情况下,由于系统的启动过程往往也涉及到大量小文件小IO读写,应用SSD同样能够显著提高系统的启动速度,这一点相信在笔记本中应用SSD的个人消费级用户已经早有体会。
DRAM SSD尽管成本高昂,但在一些对性能要求极为苛刻的环境下,应用DRAM作为缓存,同样对提高系统整体性能有着“四两拨千钧”的功效。有经验的系统维护人员在数据库日常使用中会发现,之所以数据库运行性能状况不佳,往往是因为系统中存在一小部分热点数据块被频繁使用,磁盘的机械磁头频繁的来回读写这部分热区数据,给整个系统拖了后腿。
如果将这部分I/O请求最多、最热的数据块存储到基于DRAM的缓存中,就能够极大的提升整体系统的应用性能。当然,同时也需要考虑到,基于DRAM的SSD目前成本仍然居高不下,不过,如果只是少量的高IO需求数据存储到DRAM缓存中,而其余大部分较 “冷”的,读写并不十分频繁的数据仍然存储到传统的硬盘上,同样能够在可接受的成本范围内获得最大的性能提升。
英特尔企业级SSD战略剖析
主导X86服务器技术和产品更迭与创新的幕后巨人英特尔,在推动摩尔定律不断向前发展的同时积累了微电子半导体领域的顶尖技术和生产工艺,因而做起SSD闪存芯片起来也是得心应手。英特尔推出的面向企业级应用的SSD产品目前包括两个系列,基于SLC闪存芯片的SATA接口SSD:X25-E,以及基于MLC闪存芯片的 SATA接口SSD:X25-M。技术指标规格如下表所示。
今年秋季Intel IDF上,下一代企业级产品710、720系列产品已经正式推出。据称,新一代企业级SSD在闪存芯片方面改用了25nm工艺的HET MLC NAND技术,容量规格包括100GB、200GB和300GB,缓存容量64MB。接口仍然采用了3Gbps SATA接口。
此外,更高端的720系列SSD首度采用了PCI-E接口,拥有200/400GB基于34nm工艺的SLC闪存芯片,缓存达到512MB,读写性能十分惊人。顺序读和顺序写速度分别达到2.2GB/s和1.8GB/s,随机读写也达到了180000及56000 IOPS,上图为最新Intel 710/720 SSD规格指标。
▲Gartner预计不同接口的SSD市场份额
此外,英特尔与美光合作的基于20nm制程的NAND芯片也呼之欲出,有望使闪存芯片密度在现有基础上加倍,进一步降低SSD(固态硬盘)存储成本。
推动SSD标准化进程
不过,提高闪存工艺标准并不是英特尔唯一在做的事情,擅长推行标准化的英特尔也将标准化进程引入了SSD领域。一方面推行标准化降低闪存及固态硬盘工艺成本,另一方面也借此巩固其在固态硬盘领域的领导地位。
英特尔从2006年开始就组建了开放式闪存接口组织(ONFi),目前已有90多个成员,共同推动闪存接口标准化。目前,ONFi正在下列两个方面积极努力:ONFi 3.0标准致力于进一步提升NAND接口性能,从200MT/s提升至400MT/s,此外,ONFi 3.0版本还将与ONFi 1.x与2.x完全兼容。
此外,ONFi组织还致力于发展零纠错码NAND,将依赖于NAND制程的功能从控制器中剥离出去,ECC(和其他功能)可以转由内建于NAND的 ASIC芯片来执行,而传统的NAND协议(写、擦除等)则完全不变。从而降低主控的负担,使其轻松跟上极速发展的NAND性能。
此外,英特尔认为,基于PCI-E接口的SSD可以保证足够的有效带宽,为未来更高性能的固态硬盘甚至固态硬盘阵列提供足够的数据通道,并且直插的方式同时减少了外围组件的成本。英特尔也在积极的推进企业级NVMHCI(非易失性存储主机控制器接口,Non-Volatile Memory Host Controller Interface,简称NVMHCI)标准。
目前NVMHCI标准的1.0版本已经在制定过程中,致力于解决目前PCI-E接口存在的性能瓶颈,支持高效的新型命令组,支持信号中断(MSI-X)和中断聚集,支持虚拟IO,高效的错误处理模式,并能将驱动程序转换成业界流行的SCSI管理架构。NVMHCI接口将充分考虑企业级服务器的应用情形,建立高效的接口标准以胜任高IOPS应用,使OS供应商能够推出一种适用于所有PCIe SSD的标准的高校驱动器,简化OEM验证过程,每个OS只需一个驱动器,并缩短PCIe SSD的上市时间。