现实中不同行业场景下,工作流会根据不同的应用出现不同的变化,我们可以看到从软件到硬件的堆栈都会导致工作负载的不断变化,所谓的现实工作负载(real world workload)就是由许多IO流和队列深度的不断变化组合而成。
SNIA固态硬盘技术工作组主席 ,Calypso System CEO Eden Kim的团队开发了IO获取也就是现实工作负载测试工具,能够监控IO流,在文件系统层和块,以及虚拟层上做IO的收集。这个数据获取实际上是一个统计的数据获取,像BTree(多路搜索树)一样,不会涉及用户隐私,可用于5G边缘服务器,3D建模,云存储,大数据等应用,通过工具进行收集和分析然后是测试,应用场景广泛。
所有的这些现实工作负载,有的是合成的,也有从现实应用中获取的,包括IO的数量、随机和顺序块的大小等。
Eden为大家提供了三个真实业务场景。记录24小时营业的零售业门户网站工作负载以及两个GPS卫星定位的门户网站工作负载案例,你所有的IO流、程序、累计的工作负载每周每天24小时每个时间段的变化,以便我们能更好的了解它的运作情况,了解某个时间点有多少用户在使用,通过分析测试实现更好的工作性能。
我们可以做两种测试。一种是从需求强度来测试性能的饱和度,另外是要反复测试,通过IO看IOPS。这里边是三块盘,包括华为的NVMe盘和英特尔的傲腾SSD和DCPMM盘。以下是具体的三个不同产品的测试的数据,纵坐标是IOPS,横坐标是响应时间。
这里边有四个数据集,包括数据中心,还有零售业,还有虚拟桌面,以及GPS定位,可以看到傲腾各方面来讲的性能都是很好的。
这幅图大家可以看到,工具开发完善,有很多的选项,我们可以用这些数据进行AI训练,这也是我一会儿将要详细介绍的部分。
大普微CEO杨亚飞演讲部分
接下来是我这一块,感谢Eden提供了很多数据,我简单介绍一下,大普惠电子在深圳,对标世界上两个头号玩家,英特尔和三星。实际上开发一款企业级SSD,难度系数非常高,它的难度不是一开始把它基本的性能跑通,那个可能很快就可以完成,后期难度在于调优。
我们可以看到,企业级SSD实际上是一个木桶效应,就是这个里面不能有短板,我们可以看到图上有它的带宽,IOPS,它可以分为深度队列和浅度队列,还有低延迟,要保护一致性和稳定性。
所有这些东西都会有自己的基准测试数据,然而这不代表盘送到客户那会让人满意,因为客户有自己的轨迹,一跑以后又会发现你的短板。
所以性能方面,大家宣传自己的产品IOPS非常高,能量功耗也很不错。但这里面有很多的延迟,一致性是不是能一致保持住,包括盘的生命周期等等,有很多的问题需要解决。更多的实际上是自己的BenchMark有很多的区别。
我们的盘是一个系统,为了调优总要开发一些工具,要进行这些工作。我们从端到端对系统进行测试,需要来回调试看看到底是不是真的好用。
作为SSD盘的厂商,在盘出厂之前是非常难拿到用户的真实场景,这也是Real World Workloads带来的一个价值。
左下角的图讲的是我们自己的盘做的IO的统计,包括右下角的盘是我们自己开发的固件Profile的工具,它的测试随着时间,我们可以看到FTL里边的实时负载情况。实际我们自己做了很多的工具,但每一个厂商都会有这样的内部开发工具。
实际开发这些工具以后,我们来调整性能,木桶效应是让每一个板子都不能是一个短板,实际上SSD内部的结构复杂,首先就是你前端进来以后,涉及到Cache,我们有一个比较大的Read buffer(读取缓冲),它要跟后端相连,整个最大的一块是FTL这一块工作的原理。
具体来讲有几块非常重要,一个是Read buffer,一个是FTL,怎么样减少DC,这是非常困难的一个问题。同时怎么样去降低读的延迟。
现在在具体到说是使用每一家不同的闪存颗粒,它有不同的命令,如果把这些命令使用得非常好,在后端也可以对性能有很大的帮助。我们进行真实测试的时候,截了一个图,大家可以看到图上随着时间的推移,现实工作负载发生一个变化,它的队列深度在发生很大的变化,这样我们的IOPS本身要发生变化的。里面有很多的毛刺和抖动,这些是真实的,如果我们想要把这个性能一致性,包括稳定性要搞好,尽量消除这个毛刺和抖动。
另外这一幅图,我选举的这幅图是想说明什么,在原来做企业级SSD开发的时候,实际上大家真正关注的是完全4K的内容,后来我箭头指的是0.5K,就是512 bit的情况,它的数据写入实际在这里面发挥了很多作用,不可忽视。如果你忽视了512 bit的写,最后的性能不会达到最优。使用了真实数据,对产品进行反复的调优,就可以使其达到一个很好的性能。
这里面提到一个问题,我们的主机跟SSD之间实际上是非常标准的命令,大家彼此之间都是黑盒子,主机看SSD也是一个封闭式嵌入系统。
我们来看主机,也认为主机深不可测,它是不可预测的。这时候有没有办法我们进行一些训练,我们拿这些现实工作负载训练,发现一些规律,使得盘更好的了解主机。我们公司率先提出,把这些计算和智能放到企业级固态硬盘里边,所以我们不光是开发企业级固态硬盘,还要开发高端的ETU芯片,数据存储处理器。
我们通过各种各样的深度学习和网络模块,最后发现LSTM这个网络方式比较适合。大家都知道,LSTM可以广泛用在对于气象的预测,以及语音识别。这里实际上存储的IO预测也可以用LSTM来进行。
具体来讲,我们讲一个相对比较简单的模型,这个LSTM可以做到比较准确,但是它的最大缺点是什么?需要算力,而我们SSD作为一个盘,它要低功耗,它本身就缺乏算力,所以这里边是一个矛盾体。
我们原来把它输入有很多参数,输出当时也要有很多的参数,这样让盘提前获得我的主机,或者用户端的需求后,我们来更好的在盘上进行调优和运行。我们最终选了几个包括长度,还有读和写的比例,以及读和写之间的间隔。最后输出的是什么?输出主机端的盘给IO的强度。
我们拿了一些数据,包括真实的一些数据,训练以后,这是一个真实的效果。大家可以看到,红色的是真实的,它的IO强度。蓝色是我们预测的一个强度。
在大多数的情况下,是比较吻合的,这其实证实用机器学习或是深度神经网络在存储方面来做这样的一些对于IO的预测是可能的,而且这个结果在很大程度上是可靠的。
我这里边想接着再延伸一下,我刚才提到因为实际上我们的主机和盘之间大家都是黑盒子,为了更好的相互了解,实质上我们可以用open channel等方式。
这也可以帮助我们解决一部分算力的问题,本身盘上的算力非常有限,有些工作可以接到放到主机上做。对于主机而言,主机希望盘上开放更多的接口命令,对于主机也更好地来掌握这个盘。此外,还有本身作为一个企业级的SSD,实际上有很多不同维度可以定制的做法,包括大家都知道的包括容量点,包括选用的介质,还有功耗,以及刚才演讲嘉宾提到的安全方面功能的定制。
总之,我们和Eden在一起合作了一段时间,我们发现这是一个合作共赢,而且实际上现实工作负载(Real World Workloads)给我们提供了很多的帮助和信息。在这里非常感谢Eden,感谢各位嘉宾和朋友,谢谢大家。
观众提问环节:
提问:应用实践的算法大概消耗多少?
杨亚飞:现在的问题是这样,因为AI是分为训练和推断,目前AI训练还不能放在盘里面做训练,这个消耗比较大,所以我们是线下进行训练,就是拿真正的Real World Workloads,线下用GPU来跑,这样得到很多参数,把参数输到里面去。盘上面现在只能做推断,这是目前的问题。我们开发的第二代产品,自己做了一个12纳米的芯片,这个芯片外面可以外接GPU或者FPGA,未来我们希望把所有的工作都可以实时进行处理。
观众提问:对实际负载的预测率能够达到多少?
杨亚飞:IO强度的准确率,在80%,最好的情况下可以到90%以上。当盘提前获取了强度以后,我们盘上对整个垃圾回收做一系列的规划,接下来就体现在性能上的提升。还有是到了6个9状态下的一个很好的数字,还有就是它的整个盘的一致性和稳定性。
观众提问:对这种测试工具随机测出来的数据,有没有效果?
杨亚飞:随机测试不明显,为什么说要使用Real World Workloads,是因为真正具体到零售业也好,或者说像一些GPS的数据等等,这些是有非常强的模式,因为有了这些模式,它的训练才相对比较有意义。如果是纯随机生成,其实是比较难的。