数据存储产业服务平台

Eden Kim:真实环境中的固态硬盘测试

Eden Kim是从美国特地赶来出席中国存储峰会的嘉宾,他是SNIA主席,Chairman of the Solid State Storage Technical Work Group,演讲的题目为“数据中心负载适用的SSD性能——应用IO数据分析构建真实应用环境中的SSD测试”。他谈到什么是测试,测试的主要种类,以及结合实例介绍了在真实环境中对固态硬盘所进行的测试。

以下为演讲实录:

大家好!我是固态硬盘技术工作组的主席,也是Calypso系统的创始人,主要做固态硬盘测试设备的。今天主要讲固态硬盘的测试,结合一个案例谈谈数据中心的工作负荷。这个案例是一家2000多家门店的零售企业,我们要看它24小时内的工作负荷的情况。

什么是测试,什么是虚拟化

这是一个软件、硬件堆栈。最上层是用户层,最下层是存储,中间是很虚拟化、KERNEL  MODE、硬件、软件、硬盘,还有驱动等很多的层。数据中心存储的性能由什么来决定呢?它是由三个东西来决定:第一、怎么测试,在什么地方测试?在输入层,在最底层存储层,还是在中间某个层次?第二、怎么定义这个性能,是访问方式,还是数据传输,还是不一样的定义方法。第三、采用哪种方法来测试,这些都决定你最后一个数据中心最后性能的值。

比如要存储一个文件,是都记录在底层吗?不一定。比如可能到中间的KERNEL MODE,然后需要提取的时候,中间层KERNEL MODE可能会进行协调,然后再看到你存储的东西,但是并不是都进入到最底层。

所以,当我们从顶层,用户层存储内容,然后进入到底层,叫做输入输出流。内容存进去之后,可能会分成几个不同的块,也可能会聚合到不同的块,其中还包括其他的,比如数据的缩减等等。所有的这些都会影响到IO流。

我们都在讲虚拟化,对于存储来说,虚拟化意味着什么?意味着变成很小很小的小部分,然后进入到存储。需要提取的时候,再通过很小的分散的小部分组合起来,这就是从存储角度所说的虚拟化。

三类典型的固态硬盘测试

对于固态硬盘的测试有很多,基本上分成大的三类:第一、机械测试;第二、人工应用的工作负荷测试;第三、实际情况,实际世界真实的输入输出IO捕捉的工作负荷测试,一共三类。

那么,在什么时候用什么样的测试呢?这是有区别,比如我是设计固态硬盘的,可能用KERNEL MODE,就是某一类型的一个应用,比如高强度的书写、读取、视频、混合,就看设计这个固态硬盘的性能是怎么样,来验证它的性能,如果是设计人员,对它进行Corner Case。这是第一步。Corner Case很好测,很好比较,但是它和实际的世界脱节,因为真实世界有各种不同类型的。

第二、人工应用的工作负荷测试。如果在固态硬盘运转某些应用,它的性能会怎么样?IO流是怎么样?比如我从YouTube下载视频,128K下载到硬盘上,它的性能怎么样,没问题,这个硬盘很好,这是一个应用,这个YouTube。为什么它也不是非常好,刚才我们看到比如用户存1M的一个东西,下到中间层,可能会分散,可能加上4K,变成132k回到底层应用。也就是我们预设的128K可能不是实际情况,所以IO流也可能和实际情况有所出入。

第三、真实世界IO捕捉的工作负荷测试,我们有工具,有软件,可以把它放到服务器上,能够看有多少IO的流到存储层,就是128K能够实际的记录有多少IO流进入到存储层。实时的IO捕捉工作负荷测试,确实能看真实的你的计算机和内存之间的交互,有多少工作流进来还有出去,但是每次测试不一样,现在测一次,一个小时之后再测一次,可能结果不一样,因为硬盘还在做别的事情,后台还在运行别的程序,清扫垃圾,或者干什么,所以每次测试,效果不是完全一样的。
为什么我们要用实际世界的工作负荷测试,第一、我们能测,有这个能力。第二,我们确实想知道固态硬盘究竟运转情况怎么样,有工程师设计好固态硬盘给我,我想知道它用在笔记本电脑是具体什么样的工作状态,放在数据库的服务器是什么状态?如果把它作为一个虚拟化的资源池是一个什么状态。第三、我确实想测试一下SSD,到市场上买,A品牌好,速度非常快,我想知道确实究竟怎么样,用在Windows环境怎么样,Linux环境怎么样,究竟每个环境中怎么样,我想知道。

一家零售连锁企业实测

现在开始讲这个案例了。2000多家门店的零售连锁企业,早上八点开门,全部系统登录Web  服务器,然后上传、下载,晚上九点关门,夜里服务器做备份。我们的目标是四个:第一、捕捉24小时数据库  Web服务器的OI的特点。第二、观察所有OI流究竟流量有多少。第三、创建真实世界的工作流的分隔。第四、找三块固态硬盘对于工作流进行测试,我们看哪个更适合。

捕捉这些数据来源,第一、它是零售行业,2000多家便利店,早上八点到晚上九点,所有数据都上传到总公司Web服务器上,服务器的一些指标、虚拟化存储,24小时进行捕捉,所有的数据都存储IO。

大家猜一下,24小时究竟多少不同类型的IO流进入。不同的IO流,比如4K的写入,8K的读取,8K的混合、输入+读取,类似于不同类型。是0-100种,还是101-500种,还是501-1000种,还是超过1000种?大家都很聪明,很多人选对了,超过1000种。这是24小时捕捉之后形成的这一个画面。

大家看上面它的信息表,记录的开始时间2015年7月14日夜里23点,结束时间是2015年7月16日零点零六分,持续时间24.1小时,总的IO是1520681,不同的IO流是4197。横轴是时间,从凌晨到早上开门八点,三点到十二点,这是横轴时间,黑颜色是每秒的输入输出,不同的颜色代表不同类型的IO流,比如SEQ  0.5K写入,RND  8K的读取等等,不同的颜色代表每个时间段,哪些的IO流最多。

我们看不同的工作负荷,先看第一个工作负荷A,一共9个IO  Stream,刚才讲一共4197个IO  Stream,但是只有9个能代表4000多个,这9个是最重要的IO  Stream。左下角小的表,第一个0.5K的写入,占所有IO的33.5%,累计的工作负荷,排第二位的RND的读取,这两个占了40%多。A是24小时的工作负荷,我们再选择其他几种类型的工作负荷。B是夜里两点,主要是备份的时间,八点开门,晚上六点,九点关门歇业,一共选了六种不同类型的负荷。

刚才A工作负荷是看24小时,最多是0.5K的写入和RND 8K的读取,可能不同时间段,不同的工作负荷所呈现出来的IO流的特点是不一样的。

比如我们看B,就是晚上两点,备份的时间,最主要89.1%是线性64K的读取。大家可以看不同的时间段,不同的负荷,从每一个的描述,大家可以看到总体的IO种类有多少?比如夜里两点,占80%的是SEQ  64K的读取,早上八点,哪些可以读取,这都可以一目了然。

再问大家一个问题,上面没写的就是一天读取和写入的数据量是多少,10G、40G、100G,谁猜一下?这个是它应用在硬盘当中的地址,假如有1000个地址,这个记录读取和写入主要发生在什么位置,在第几个。为什么这个重要呢?因为我们有数据资源池,有不同硬盘,有英特尔特别贵的可以放热数据,可以把算法分层,比如地址0-10放热数据,10-50放混合型数据,10-100放备份性的数据,如果有监控,可以验证一下,比如有一个备份数据,跑到地址10上去了,跑到昂贵的英特尔固态硬盘热数据所在的地址,可能是算法的问题,可以进行验证。

刚才一共平均是1个,6个时间段用7个工作负荷,我们用三个不同的固态硬盘进行测试和比较。测试的流程,先清理,然后预设,然后写入,一共是7个不同的工作流,每个休息10分钟的时间,就这7个进行比较。这是三个硬盘,刚才我们说过,数据中心是5寸的,还有PCIE的企业级的固态硬盘。大家看测试结果,最左边A的工作流,24小时平均的那个,从B夜里两点,然后C早上开门,一共7个不同的工作负荷的测试结果。

大家看绿颜色的就是刚才说的比较贵的企业级的U.2的固态硬盘的性能。红色的是数据库的固态硬盘,蓝色的就是A-SATA  Power。这是IO的速度,响应时间,功耗,有贵的硬盘,功耗比较大。第一个功耗是浮动的,不一样。第二个B的固态硬盘功耗比较稳定。这就是试验的总结。

我们可以通过观察实际的工作负荷,来看在每个不同时间,不同情景情况下,固态硬盘的性能究竟是怎么样。最直观的例子就是备份,比如一般的硬盘就可以了,传统的硬盘,如果一些热数据,比如速度比较快的,使用性能比较好的固态硬盘。这个是总结,大家自己读一读,谢谢!

 

未经允许不得转载:存储在线-存储专业媒体 » Eden Kim:真实环境中的固态硬盘测试