您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[ODCC]:2023存储系统时延问题分析与测量白皮书 - 发现报告
当前位置:首页/行业研究/报告详情/

2023存储系统时延问题分析与测量白皮书

电子设备2023-10-13ODCC起***
2023存储系统时延问题分析与测量白皮书

存储系统时延问题分析与测量ODCC-2023-0500B 1 [编号ODCC-2023-0500B] 存储系统时延问题分析与测量 开放数据中心委员会2023-09发布 存储系统时延问题分析与测量ODCC-2023-0500B 版权声明 ODCC(开放数据中心委员会)发布的各项成果,受《著作权法》保护,编制单位共同享有著作权。 转载、摘编或利用其它方式使用ODCC成果中的文字或者观点的,应注明来源:“开放数据中心委员会ODCC”。 对于未经著作权人书面同意而实施的剽窃、复制、修改、销售、改编、汇编和翻译出版等侵权行为,ODCC及有关单位将追究其法律责任,感谢各单位的配合与支持。 I 存储系统时延问题分析与测量ODCC-2023-0500B 编写组 项目经理: 李军深圳忆联信息系统有限公司工作组长: 郭亮中国信息通信研究院 贡献专家: 张华深圳忆联信息系统有限公司 樊文慧深圳忆联信息系统有限公司豆坤三星半导体有限公司 冯方三星半导体有限公司 胡泽志美团 张亮东芝电子(中国)有限公司 张北宁东芝电子(中国)有限公司 王浩博东芝电子(中国)有限公司梁文俊浪潮电子信息产业股份有限公司 路明远浪潮电子信息产业股份有限公司 周春法浪潮电子信息产业股份有限公司 张希伟浪潮电子信息产业股份有限公司胡振国联想(北京)有限公司 黄福帅联想(北京)有限公司 吴福磊联想(北京)有限公司林峰江波龙 王晋强深圳大普微电子科技有限公司 王俊鹿深圳大普微电子科技有限公司李斌希捷 II 存储系统时延问题分析与测量ODCC-2023-0500B 刘佳希捷 刘涛西部数据 霍锐西部数据 张岸西部数据 林润斌SK海力士半导体(中国)有限公司 李朝兰北京忆恒创源科技股份有限公司 孙英达北京忆恒创源科技股份有限公司 III 存储系统时延问题分析与测量ODCC-2023-0500B 前言 带宽和时延不仅是服务器网络系统的性能指标,也是存储部件的基础性能指标。存储系统的时延作为服务器系统从客户端输入到获得客户端输出总响应时间的一个重要组成部分,与网络系统的时延表现一样,一直受到高度的关注。 在数据中心客户端反映的问题中,与时延有关的问题的比例占总问题数量的三分之一以上。尤其是在网络系统,运算系统的性能以几何级数增长的今天,时延问题往往成为存储系统需要解决的首要问题。 近年来,和CPU核数的增加,网卡端口数的增加和带宽的增加,以及GPU运算单元数的增加的技术进步相反,存储系统的时延随着技术复杂度的增加并没有同等的减少,而且一些新的存储技术的实现是以时延的增加为代价的。硬盘更高的存储密度导致的对振动的更加敏感,固态硬盘的每存储单元的电平数的增加导致的写时间延长都在一定程度上增加了存储系统的时延。 数据中心的时延问题一直被高度重视,一个首要的原因是问题发生的范围是几千台服务器,数万个存储部件,从几天发生一次到一天发生几次,这个发生频率是实验室测试中用几个到几百个测试样品无法测到的。而成为故障的Latencystall-长尾延时,是一种单个IO的完成时间远大于预期而导致的问题。但是长尾延时问题的定位以及随后的故障分析,目前业界没有一个系统的测试方法。 IV 存储系统时延问题分析与测量ODCC-2023-0500B 存储部件的时延问题是数据中心性能表现的一个基础问题。需要有一套与时俱进的测试,评估和优化的方法。 V 存储系统时延问题分析与测量ODCC-2023-0500B 目录 版权声明I 编写组II 前言IV 一、存储系统时延问题的历史和现状1 二、存储器时延的产生原因2 三、时延测试方法,测试模型6 四、时延测试结果分析15 五、减低时延的技术路线以及技术发展展望21 六、结语1 VI 存储系统时延问题分析与测量ODCC-2023-0500B 存储系统时延问题分析与测量 一、存储系统时延问题的历史和现状 存储系统的时延,在客户-服务模型上表现为服务请求端发出命 令到服务端完成命令所需要的时间。 数据中心应用对时延的感知是在应用层。 可能发生时延的部分,存在于存储系统的层级结构中的所有传递节点。 由于每一个传递节点都有数据的封装、解封,数据重排,队列,访问控制,资源的申请/释放,纠错,重传等行为,由此导致的时延问题的测量就成为一个复杂的系统问题。 而对于时延问题的解法更多地表现为一个取舍的行为,这样就更加增添了测试和问题复现的复杂度。 1 存储系统时延问题分析与测量ODCC-2023-0500B 在以硬盘为主要载体的时期,存储系统的读写命令时延在10毫 秒到30秒之间,这个时间主要由于切换读写操作位置需要进行磁盘的寻道操作,而寻道操作需要硬盘至少旋转一周才能完成。在SSD中由于没有硬盘那样的寻道过程,两个读写指令之间的时延会减小,但是减小的幅度仍然受限于存储介质的响应时间。目前的SSD这个响应时间在50微秒到5毫秒的范围。 用户对时延的感知并非是直接的。由于用户是通过文件打开,关闭,读写的操作使用硬盘和SSD,通常的文件操作需要的时间远大于一个单一的读写指令完成的时间,因此用户对存储器的时延的感觉首先来自于存储部件的带宽。如拷贝一个文件尺寸为1G的文件通常需要10秒左右的时间。而此时主机与存储部件的命令和数据 交换的实际时延平均在1毫秒以下。 二、存储器时延的产生原因 硬盘和SSD的命令时延的发生机理,与用户的普遍感知是不同的。在绝大多数状况下,硬盘和SSD的单个读写命令响应时间在1秒以内,但是硬盘和SSD的设计的最长命令响应时间并不是如此。使用sg_opcoeds-R指令可以看到SASSSD的每个指令的标准响应时间以及最大响应时间,如下图所示,指令的标准响应时间是1秒, 多数指令的最长响应时间为5秒,但是很多指令的最长响应时间能 达到60秒甚至更长。 2 存储系统时延问题分析与测量ODCC-2023-0500B 这些最长命令响应时间发生几率很低,但是却是存储部件设计的必须。硬盘和SSD的数据存储机制的底层物理机制是一些模拟量的生成,保持和测量过程。这些过程远比数字世界的0-1状态复杂。 3 userid:414195,docid:142640,date:2023-10-13,sgpjbg.com 存储系统时延问题分析与测量ODCC-2023-0500B 这些模拟量的生成,保持和测量对应的是存储器的写入,存储和读取操作。这些操作对应的是大量连续的电压和电流的模拟量的信号处理过程,这些过程都会在各个环节发生抖动,偏移并在数模转换和模数转换过程中发生误码,这些误码需要相应的纠错机制进行处理。大多数的情况下处理过程是不会造成可测量到的时延,但是如果瞬时的误码较大,就会激发一系列的重试过程。这些重试过程对于硬盘和SSD的数据可靠性是必需的,但是也会发生相应的可感知的时延。 下图示意的是一个硬盘的一次重试的流程图。这个重试的过程在设计中可以重复255次,如果每次平均是12毫秒的话,最长就会 超过30秒。 实际应用中的问题在于,大多数的应用程序和驱动程序对这些硬盘和SSD设计中需要的命令最长响应时间的处理机制并不完善, 4 存储系统时延问题分析与测量ODCC-2023-0500B 常见的处理方法就是几次重试之后就丢弃文件或者丢弃存储卷,这样就会随之产生数据丢失甚至应用程序的崩溃。 在绝大多数的测试场景和用户使用场景,这些命令所对应的最长命令响应时间是不会遇到的。但是如果驱动程序的设计以及应用程序的设计没有考虑到对这些最大时延进行恰当处理,就会出现丢失数据甚至丢失存储卷的严重问题。在读写操作时根据可能的最大响应时间设计响应的延时处理机制和等待机制,是驱动程序设计和软件系统设计需要关注的问题。 这种由于存储部件基于对数据读写一致性,数据安全性的保证而发生的时延是硬盘和SSD固件设计必须做的,因为读出和写入数据如果不一致是比一个指令的响应时间相应较长更加不能接受的。 5 存储系统时延问题分析与测量ODCC-2023-0500B 三、时延测试方法,测试模型 对时延的测试首先是测试与用户感知对应的文件操作的时延。在操作系统中对硬盘和SSD时延的测试工具分为内核态的测试工具软件和用户态的测试工具软件。 在工程中还会采用分析仪来测量数据通道的指令,数据和状态转换时间对应的时延。 在用户态基于文件系统读写指令完成时间的工具软件的测量原理是对某一个或一个系列的打开文件,进行文件读写,关闭文件等操作指令计时,或者打开一个裸设备进行读写操作并对指令完成时间计时。常用的工具有iozone,fio等。 在内核态的测试工具是由操作系统提供的计数器接口实现的。 在linux中有iostat,iotop以及blktrace等常用工具。 6 存储系统时延问题分析与测量ODCC-2023-0500B 其中,iozone可以测量文件系统下的文件操作命令响应时间。fio可以对通过文件系统的文件操作以及不通过文件系统直接调用内核的块设备读写过程来测试硬盘和SSD的命令响应时延。 Linux系统中现有的测试工具是可以用来收集时延有关问题的状态和现场的。 以下工具包是时延测试方法需要的。 sysstat工具包:iostat,saratop工具包 blocktrace工具包 debugfssmartlogtelemetrylog SYSSTAT工具包 sysstat工具里有iostat和sar工具可以用来监控读写的等待时间, 查看r-await和w-await的数值来实时监控系统块设备的latency. 我们可以使用sysstat工具来监视Linux系统的性能,包括磁盘I/O性能。sysstat是一个强大的日志记录和监视工具,可用于监视系统性能并解决问题。它可以记录和跟踪Linux系统中发生的几乎所有事情。我们可以使用以下命令安装sysstat:` sudoapt-getinstallsysstat` 要查看磁盘I/O性能,可以使用`iostat`命令。例如,要查看每秒读取和写入的字节数,使用以下命令: 7 存储系统时延问题分析与测量ODCC-2023-0500B `iostat-d-k1` 我们可以使用sysstat的iostat以及sar工具获得文件访问的时延数据分布状况,这个时延是从文件系统调用开始到设备的读写操作和数据传输操作结束。 同时,我们可以从atop的历史测试数据获得主机到设备间的数据读写操作和数据传输操作对应的时延。 使用blktrace可以获得更加详细的单步骤的命令响应时间。 使用debugfs里面的nvmeeventtrace可以获得单个nvme指令的指令码以及命令执行时间。 iostat-x可以看到从系统加电以来的io状况。 iostat-xmdn可以实时每n秒间的io状况。 8 存储系统时延问题分析与测量ODCC-2023-0500B iostat是一个用于监控CPU利用率和磁盘I/O活动的工具,它 可以显示每个设备的平均服务时间(svctm)和平均等待时间 (await),但这些指标并不是直接测量设备时延的。 平均服务时间(svctm)表示设备完成I/O请求所需的平均时间,包括寻道时间、旋转延迟和数据传输时间。平均等待时间(await)表示I/O请求在队列中等待和在设备上被服务所需的总时间。 我们可以使用sar工具来监控磁盘I/O活动并获取有关设备的平均等待时间(await)的信息。sar是sysstat工具包中的一个实用程序,它可以收集、报告和保存系统活动信息。 要使用sar来监控磁盘I/O活动并获取有关设备的平均等待时间 (await)的信息,我们可以使用以下命令: sar-d-p1 9 存储系统时延问题分析与测量ODCC-2023-0500B 这个命令会每秒运行一次sar,并显示磁盘I/O活动的信息。在输出中,我们可以找到名为await的列,它表示I/O请求在队列中等待和在设备上被服务所需的总时间。 请注意,要使用sar工具,用户需要

你可能感兴趣

hot

量子测量技术与产业发展白皮书(2022)

基础化工
量子信息网络产业联盟2024-02-17