傲腾持久内存成就性能偏执狂SmartX

在2019年Gartner中国超融合厂商竞争格局报告中,Gartner把中国的超融合厂商分为三类,一类是已有市场基础覆盖的老牌硬件厂商,比如Dell EMC,比如华为,一类是能私有化部署的云提供商,再一类就是纯粹靠超融合吃饭的厂商,比如Nutanix,比如SmartX。这类厂商唯有依赖极致的产品和服务方能在竞争中胜出。

自主研发成就不一样的超融合厂商

如何打造差异化是近来超融合市场上讨论较多的话题,但对于有些厂商来说,这其实并不是问题,这类厂商有超强的研发能力,能做到别人做不到的,能为超融合方案打造人无我有的产品指标,对于部分客户,尤其是清楚真实需求的用户来说,这些指标是鉴定厂商专业性重要的试金石。

作为纯粹的超融合厂商,SmartX很清楚,只有努力把超融合的潜力挖到极致,才有可能突出重围,因为没作业可抄。所以,一直以来,SmartX都坚持在分布式存储等核心模块上持续自主研发,重点突破,并逐渐形成独特的竞争力。

SmartX CMO兼战略合作总监 库依楠表示,单是凭借自主研发这一点,SmartX就与90%的中国厂商区别开来了。从根儿上,SmartX就跟别人不一样。

SmartX面向的客户群也不一样,它主打的是中高端市场,在人人羡慕的金融领域做的比较出彩,比如,作为五大行之一的交通银行就在用SmartX的超融合,而且,交通银行近期在首次采购的基础上又进行了几十个节点的扩容,据库依楠介绍说,SmartX是唯一一家在五大国有银行形成批量部署的国产超融合厂商。

另外,值得着重强调的一点是,在SmartX的重复购买率高达50%。这一数字,是产品实力和服务质量的最好证明之一。

SmartX的成功秘诀:做一个性能偏执狂

中高端市场用户需要中高端的性能,而SmartX从成立开始就非常关注性能,一直以来,SmartX在追求性能极致的路上从未停止。因为对用户来说,性能是一个非常有价值的指标,它决定了超融合可以支撑的业务类型,因为许多核心业务系统对性能要求非常高,性能不够就无法迁移到超融合上。

确实,在许多用户看来,虽然超融合在敏捷性、便捷性、易用性、可运维等方面有很明显的优势,但由于虚拟化技术不可避免地造成了性能上的影响,这决定了超融合无法在许多关键应用中出现,而SmartX追求的超融合在性能上的突破则让超融合承载核心应用成为可能。

最近的SmartX发布的新品的测试数据来看,SmartX超融合性能上已经达到甚至超越了传统中高端存储,包括甲骨文数据库、SQL Server数据库等用户最核心的应用系统也能迁移到超融合上了。

从2015年发布以来,SmartX超融合系统就在不断提升性能,而2019年到2020年的此次性能上的飞跃,效果还是非常可观的。

SmartX联合创始人兼CTO张凯介绍说,2019年,当英特尔发布傲腾持久内存之后,SmartX启动了一个叫Sailfish(旗鱼)的项目,Sailfish是已知海洋中最快的一种鱼,SmartX决定利用傲腾来优化性能,为的是能更好地承载核心系统,为了替代传统裸金属和传统中高端磁盘阵列的架构。

解决用户对于性能的硬性需求,或者说突破超融合能力的上限,就是SmartX成功的重要秘诀之一。

超融合用傲腾的难点和局限性

SmartX利用创新的介质特性,以及对系统底层的开发能力最终完成了这次大的性能优化。但作为首家在超融合中使用傲腾内存作为缓存加速的厂商,SmartX知道这事儿很难。

上图可见,从内存到SSD再到磁盘,不同介质的容量以及性能表现可以用上图来表示,内存的访问延迟在0.1微秒的级别,SSD大概是不到100微秒的水平,而磁盘则是不到1000微秒的水平,当两个层级之间性能差异较大时,就会带来体性能上的瓶颈。

英特尔傲腾则是在DRAM和NAND SSD之间加入了新的存储层级,可以使存储层级间的性能差异变小,因为,傲腾有接近DRAM的性能,DRAM内存时延非常接近,另外,傲腾还具有SSD的非易失性,掉电不丢数据,而且,它的介质本身可靠性很高。还有一点,傲腾支持字节寻址,就是每次可以只访问部分字节,而不是512字节或者4KB那么多。

2019年,SmartX发布了采用傲腾持久内存的一体机,该一体机已用于某国内金融企业的VDI场景中,这里用的是内存模式,就是直接把傲腾当内存插上去,而把真正的DRAM内存当做傲腾内存的缓存,这是一种比较简单的模式,不需要做太多开发,但实际上傲腾还有另外一种模式,叫做App Direct模式,需要在超融合的系统层次上做一些开发,这是SmartX这次主要的使用方式。

但超融合系统想充分利用App Direct模式其实有很多限制,由于超融合系统和用户应用同时运行在相同的设备上,系统和应用共同占用资源,如果系统资源占用较多,这意味着应用性能就会受限,这是超融合的特殊之处,超融合虽然有存储服务能力,但功能特性的设计要考虑性能占用,想要将傲腾性能发挥出来,无异于戴着脚镣跳舞。

更重要的是,由于傲腾本身很快,但如果只有傲腾快,系统别的组成部分都很慢的话,傲腾也完全发挥不了作用。

优化性能的黄金套路——化繁为简做减法

为了减少资源占用,为了发挥傲腾的性能,SmartX做了许多化繁为简的操作。据我个人观察,近年来的性能优化空间很大程度上都是化繁为简做减法,比如上图中NVMe相比SAS/SATA就做了减法,少了中间多个步骤,NVMe硬盘的延迟和IOPS有大幅提升,SmartX的做法也类似。

在看具体做法前,我们看到上图中,用户的应用运行在一个个虚拟机里,虚拟机里的延迟高的一个重要原因是IO路径长。如上图,一个请求从guest虚拟机发出到hypervisior,再到存储软件,再到内核,然后再告诉另外几个节点,最后写到磁盘上,一共需要五个步骤,每个步骤都会增加额外的延迟,最终影响到性能。如果没有虚拟机的话,起码可以省掉hypervisior这一层,所以,裸金属的方式比虚拟化的性能好。

为了优化性能,为高速傲腾扫清道路,SmartX在三个层次下手优化了IO路径。

第一个,就是在计算虚拟化层绕过hypervisior,做法是在虚拟机和存储软件之间建立了一个Shared memory,虚拟机的请求直达存储软件,化繁为简,性能up。

第二个是网络层的优化,绕开内核(Kernal)和TCP协议。SmartX采用RoCE的方式来实现RDMA网络,这种方案能复用原有的以太网设备,而且因为做了一些定制化的工作,网络的传输过程绕开了整个Kernal。另外,由于UDP、TCP协议都是由硬件网卡来计算的,没有用CPU的资源,减轻了CPU的负担,最终,整个网络速度非常高,延迟非常低,化繁为简,性能up。

第三个是存储层的优化,绕开了Kernal。存储层的优化看的也非常清楚,就是通过走DMA绕开了Kernal,从而提升效率和性能。

第四层优化,利用了傲腾的字节寻址特性优化SSD Journal系统,也是化繁为简的操作。众所周知,SSD是以4KB为单位来进行数据写入的,如果不够4KB的话,也要进行一次4KB的写入操作,如果大于4KB的话,会把数据切成多个4KB来写入,以4KB的方式写入是由NAND SSD的特性决定的。

问题在于,如果有大量小于4KB的数据的话,就会有大量的4KB写入操作,这种情形叫做写放大,它会极大地浪费性能,而傲腾因为支持以最小64字节的写入方式,所以适合大量小数据写入的情形,极大地降低了写放大,减少了写入的数据量,意味着性能上会有很大提升。

以傲腾持久内存来支撑的Journal系统的性能能大大提升,整体系统的性能也就水涨船高了。

用搭载了英特尔傲腾持久内存的三节点SmartX Halo P系列一体机进行实测数据显示,IO性能提升了3.2倍,延迟上有85%的降低,三个节点可以提供120万的IOPS和100微秒的延迟。这都是Sailfish项目带来的价值,它让超融合有了媲美中高端全闪存存储的能力。

总结一下

我们看到,SmartX对性能的极致追求解决了许多超融合解决不了的问题,让用户在享受超融合带来的种种便利的同时,也能体验到超高的性能,也让超融合开始承载核心业务,这种突破不仅成就了SmartX,对超融合市场本身也有很大的鼓舞作用,让许多超融合厂商相信,只要在一些方面把产品做到极致,差异化的优势水到渠成。