CN103761051B - 一种基于持续数据多输入输出流并发写入性能优化方法 - Google Patents
一种基于持续数据多输入输出流并发写入性能优化方法 Download PDFInfo
- Publication number
- CN103761051B CN103761051B CN201310689138.2A CN201310689138A CN103761051B CN 103761051 B CN103761051 B CN 103761051B CN 201310689138 A CN201310689138 A CN 201310689138A CN 103761051 B CN103761051 B CN 103761051B
- Authority
- CN
- China
- Prior art keywords
- stream
- buffer memory
- pool
- priority
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种基于持续数据多输入输出流并发写入性能优化方法,属于计算机存储技术领域。本发明通过接收数据流线程池将数据蓄流到缓存池中,再通过下刷线程池将缓存刷入下层设备中,在接受数据蓄流和下刷缓存时,根据应用优先级进行标记,优先处理优先级最高的应用数据。本发明通过对上层应用数据IO特性和下层设备的IO访问能力的学习,动态调整线缓存池和线程池的配置,达到对持续数据IO的性能优化和应用优先级的保证。本发明可减少底层存储设备的IO写入次数,充分发挥下层存储设备的IO能力;合理利用存储设备的带宽,有效地提高应用的性能;降低底层设备的高IOPS需求,降低整个设备的成本;采用功耗更低的部件,落实绿色存储。
Description
技术领域
本发明涉及一种基于持续数据多输入输出(IO)流并发写入性能优化方法,属于计算机存储技术领域。
背景技术
目前大部分存储系统和应用使用过程中为分离模式,应用和存储各自只关注自身的实现和优化,没有进行有机结合,在遇到性能瓶颈时,优先考虑是否要升级硬件提高其处理能力,实际上并没有将硬件能力充分发挥。
应用和存储的简单结合,造成了以下局限性:无法充分发挥下层存储设备的IO能力;无法有效地提高应用的性能;满足应用IO高峰需求导致对主机与存储端硬件成本居高不下;绿色存储无法落地;高优先级应用服务水平无法得到保证。
基于以上原因,需要针对应用的IO特征和存储IO能力进行有机结合并彻底优化。
发明内容
本发明具体技术方案为:
步骤一、多个并发写IO流写入主模块,系统开辟一组大小可动态扩展的缓存池,为缓存池的管理开辟可按并发IO流数和后端存储设备数分别动态调整的读、写线程池。
步骤二、确定IO流的初始优先级,根据IO流的不同应用场景,每一路IO数据流的应用和下层的卷对应起来,用户可以根据应用IO流实际需求,设置其对应卷设备的缓存优先级属性;相应地,将缓存池划分为N个区域,每个区域对应一种优先级,并根据优先级策略写缓存,多IO流时,高优先级应用数据IO可征用低优先级的IO流所使用的缓存块,同时将其优先级调整为高优先级;
步骤三、获取下层设备的多并发IO流和固定IO块大小的最大写入总带宽,根据这些计算出初始条件下的下刷缓存大小,等待IO流接入系统;
下层存储设备包括块设备,如RAID、卷组、文件系统等,其IO能力指在。
步骤四、IO流接入系统后,系统调度读线程池进行IO数据接收,开始缓存蓄流;缓存池的大小随着应用的个数动态增加,当缓存池使用率达到较高的水平时,缓存池总容量自动扩展;当缓存池大小扩展到系统缓存的一定比例时,容量停止扩展;
步骤五、在缓存池的N个区域中,每个IO流根据缓存下刷的大小又划分为M块,以“块”作为下刷的基本单位;“块”填满,置下刷标记,释放读线程回读线程池,从缓存下刷线程中找一个空闲的线程进行缓存下刷处理,下刷完成后,将下刷线程归还线程池。
缓存下刷的大小采用一种动态学习和动态调整的自适应机制,通过读写下层的设备,测试出写入设备的IO最优值时,计算出初始条件下每IO流的下刷缓存的大小,当IO流真实写入后,可根据IO特征进行动态学习,结合初始值,适当调整每个IO流下刷缓存的大小,使得IO流和设备本身的IO能力得到有机结合。IO特征包括IO读写比例,IO块最大和平均大小,IO流数,顺序与随机比例、最大延时等,通过向下层设备读取和写入不同大小的数据块采集这些IO特征的数据。此学习过程不局限一次,根据下层设备的固有属性,在设备因为某些属性而导致性能达到临界值时,为缓存池中的空闲缓存块设置阈值,超过此阈值时,触发动态学习机制,调整下刷缓存的大小,使得N个区域中各自空闲缓存块的数量保持平衡。
读线程池中将优先级较高的IO流优先写入缓存,写线程池中的线程也将优先级较高的缓存下刷到下层设备。只有在优先级较高的应用IO数据被响应完成后,才去考虑优先级较低的IO流响应,从而能够充分利用下层设备的IO性能,提高应用本身的性能,将应用的IO请求变得更为平滑,减少IO流的超时重试的情况,降低实时IO流为保证实时性而丢弃部分数据的可能性,提高系统的可靠性,保障优先级较高的IO流得到优先响应和充分处理。
为减少缓存不停地分配和释放造成的资源调度和内存碎片,只将动态扩展时新分配的内存通过新的指针进行指向,和老缓存池进行线性组合,不将老缓存池归还系统。同时缓存下刷后,缓存释放只是回到缓存池,不释放回整个系统。同时,读线程池和缓存下刷缓存池也不会直接归还系统,只是返回到各自的池中等待新的调度。
有益效果
本发明减少了底层存储设备的IO写入次数,充分发挥下层存储设备的IO能力;合理利用存储设备的带宽,减少单个缓存的情况下的数据丢弃有效地提高应用的性能;固定设备上增加持续数据应用的个数,应用IO持续平滑写入;降低底层设备的高IOPS需求,降低整个设备的成本;采用功耗更低的部件,绿色存储实际落地;优先响应和处理较高优先级的应用请求。
附图说明
图1为设计原理图
具体实施方式
下面结合具体实施案例对本发明进行详细说明。
在存储系统中部署一个新的模块,下层设备可以为文件系统,也可为单颗硬盘或者磁盘阵列等存储设备卷,在下例中,下层共有4个RAID,每个RAID为15块盘组成的RAID5,每块盘的容量为2TB,每个RAID的平均容量为25TB,系统总容量为100TB。而上层共有30路IO流,这30路IO流由WebServer应用,数据库应用,和视频应用组成,流程如图1所示。
根据步骤一,模块启用后,开辟一组大小可动态配置的缓存池,系统总缓存大小为8GB,设置缓存池的初始容量为256MB,并开辟读、写线程池用于管理缓存池,读写线程分别设置30、4个。
根据步骤二,进行缓存池及读、写线程池的初始化工作。将缓存池分为1024个缓存块,每一个缓存块大小为256KB,这1024个缓存块编号为0-1023,分为三个区域。0-340号缓存块优先级设置为“低”,应用于诸如WebServer等对响应时间要求不高的应用场景,;341-682号缓存块优先级设置为“中”,应用于诸如视频码流等对响应时间要求适中的应用场景;683-1023号缓存块优先级设置为“高”应用于诸如数据库应用等对响应时间要求较高的应用场景。当属于数据库应用的IO流到来时,从683-1023号缓存块中分出若干块给该IO流,若此时683-1023号缓存块大小不够,可从0号开始依次征用低优先级区域的缓存,例如,此时0-2号缓存块没有被使用,则征用0-2号缓存,并把该缓存块优先级标记为“高”。
根据步骤三,获取下层设备的多并发IO流和固定IO块大小的最大写入总带宽,根据这些计算出初始条件下的下刷缓存大小,等待IO流接入系统;例如,这时下层设备的最大写入速率为100MB/s,分给4个RAID,下层最大响应时间为0.6毫秒,由此计算出初始条件下的下刷缓存大小为缓存块大小的3/4,即192KB,并等待IO流接入系统。
根据步骤四,IO流写入数据后,主模块调度读线程池进行IO数据接收,开始缓存蓄流。并计算缓存池的使用量,若缓存池使用量达到缓存池总容量的70%,即179MB时,缓存池总容量自动扩展到原来的2倍,即512MB;当缓存池大小扩展到系统缓存的5%时,即409MB时停止扩展。
根据步骤五,判断IO写入特征,根据IO写入特征结合下层设备的IO能力,计算出下刷缓存大小,对初始下刷缓存大小进行动态调整。例如,此时底层设备为15块盘创建的RAID5,采用顺序写的方式,块大小为512KB,获得此时写入的带宽为112MB/s,结合当前IO流的速率2Mb/s,以及此IO流所使用的缓存块大小256KB,计算出下刷缓存大小为缓存块大小的1/2,即128KB,并将下刷缓存大小调整至此大小。蓄流完成后,置下刷标记,释放读线程回读线程池,从缓存下刷线程池中找一个空闲的线程进行缓存下刷处理,下刷完成后,将下刷线程归还线程池。同时主模块计算下层设备的空闲容量,当不足20%时,即20T时,强制获取下层设备的IO能力,将下刷缓存块大小进行调整,减少至当前下刷大小的一半,若此时缓存块大小动态调整为128KB,则减少到64KB。
此为一个周期的工作。
Claims (4)
1.一种基于持续数据多输入输出流并发写入性能优化方法,其特征在于:
步骤一、多个并发写IO流写入主模块,系统开辟一组大小可动态扩展的缓存池,为缓存池的管理开辟可按并发IO流数和后端存储设备数分别动态调整的读、写线程池;
步骤二、确定IO流的初始优先级,根据IO流的不同应用场景,每一路IO数据流的应用和下层的卷对应起来,用户可以根据应用IO流实际需求,设置其对应卷设备的缓存优先级属性;相应地,将缓存池划分为N个区域,每个区域对应一种优先级,并根据优先级策略写缓存,多IO流时,高优先级应用数据IO可征用低优先级的IO流所使用的缓存块,同时将其优先级调整为高优先级;
步骤三、获取下层设备的多并发IO流和固定IO块大小的最大写入总带宽,根据这些计算出初始条件下的下刷缓存大小,等待IO流接入系统;
步骤四、IO流接入系统后,系统调度读线程池进行IO数据接收,开始缓存蓄流;缓存池的大小随着应用的个数动态增加,当缓存池使用率达到缓存池总容量的70%时,缓存池总容量自动扩展;当缓存池大小扩展到系统缓存的5%时,容量停止扩展;
步骤五、在缓存池的N个区域中,每个IO流根据缓存下刷的大小又划分为M块,以“块”作为下刷的基本单位;“块”填满,置下刷标记,释放读线程回读线程池,从缓存下刷线程中找一个空闲的线程进行缓存下刷处理,下刷完成后,将下刷线程归还线程池。
2.如权利要求1所述的一种基于持续数据多输入输出流并发写入性能优化方法,缓存下刷的大小采用一种动态学习和动态调整的自适应机制,通过读写下层的设备,测试出写入设备的IO最优值时,计算出初始条件下每IO流的下刷缓存的大小,当IO流真实写入后,可根据IO流的频率和数据量大小,进行动态学习,结合初始值,适当调整每个IO流下刷缓存的大小,使得IO流和设备本身的IO能力得到有机结合;此学习过程不局限一次,根据下层设备的固有属性,在设备因为某些属性而导致性能达到临界值时,为缓存池中的空闲缓存块设置阈值,超过此阈值时,触发动态学习机制,调整下刷缓存的大小。
3.如权利要求1所述的一种基于持续数据多输入输出流并发写入性能优化方法,其特征还在于:读线程池中将优先级较高的IO流优先写入缓存,写线程池中的线程也将优先级较高的缓存下刷到下层设备;只有在优先级较高的应用IO数据被响应完成后,才去考虑优先级较低的IO流响应,从而能够充分利用下层设备的IO性能,提高应用本身的性能,将应用的IO请求变得更为平滑,减少IO流的超时重试的情况,降低实时IO流为保证实时性而丢弃部分数据的可能性,提高系统的可靠性,保障优先级较高的IO流得到优先响应和充分处理。
4.如权利要求1所述的一种基于持续数据多输入输出流并发写入性能优化方法,其特征还在于:只将动态扩展时新分配的内存通过新的指针进行指向,和老缓存池进行线性组合,不将老缓存池归还系统;同时缓存下刷后,缓存释放只是回到缓存池,不释放回整个系统;同时,读线程池和缓存下刷缓存池也不会直接归还系统,只是返回到各自的池中等待新的调度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310689138.2A CN103761051B (zh) | 2013-12-17 | 2013-12-17 | 一种基于持续数据多输入输出流并发写入性能优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310689138.2A CN103761051B (zh) | 2013-12-17 | 2013-12-17 | 一种基于持续数据多输入输出流并发写入性能优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103761051A CN103761051A (zh) | 2014-04-30 |
CN103761051B true CN103761051B (zh) | 2016-05-18 |
Family
ID=50528296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310689138.2A Active CN103761051B (zh) | 2013-12-17 | 2013-12-17 | 一种基于持续数据多输入输出流并发写入性能优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103761051B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9430401B2 (en) | 2015-01-16 | 2016-08-30 | International Business Machines Corporation | Implementing paging optimization to avoid populate on page fault during an IO read |
CN105095112B (zh) * | 2015-07-20 | 2019-01-11 | 华为技术有限公司 | 控制缓存刷盘方法、装置及非易失性计算机可读存储介质 |
CN106886368B (zh) * | 2016-12-30 | 2019-08-16 | 北京同有飞骥科技股份有限公司 | 一种块设备写io整形和多控制器同步系统及同步方法 |
CN107172037B (zh) * | 2017-05-11 | 2020-01-07 | 华东师范大学 | 一种多路多通道高速数据流的实时分包解析方法 |
CN107678692B (zh) * | 2017-10-09 | 2020-09-22 | 苏州浪潮智能科技有限公司 | 一种io流速控制方法及系统 |
CN115543187A (zh) * | 2017-11-10 | 2022-12-30 | 成都华为技术有限公司 | 一种数据处理方法及设备 |
CN110309257B (zh) * | 2018-03-14 | 2021-04-16 | 杭州海康威视数字技术股份有限公司 | 一种文件读写打开方法及装置 |
CN110300138B (zh) * | 2018-03-22 | 2022-04-08 | 浙江宇视科技有限公司 | 图片业务调度方法、装置、管理节点及计算机可读存储介质 |
CN108681469B (zh) * | 2018-05-03 | 2021-07-30 | 武汉斗鱼网络科技有限公司 | 基于Android系统的页面缓存方法、装置、设备及存储介质 |
CN108664412A (zh) * | 2018-05-18 | 2018-10-16 | 广州优视网络科技有限公司 | Io数据流处理方法、装置、存储介质和终端 |
CN109032512A (zh) * | 2018-07-10 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种实现数据追加写的方法、装置及设备 |
CN109062505A (zh) * | 2018-07-13 | 2018-12-21 | 南瑞集团有限公司 | 一种缓存策略写入分层硬件架构下的写性能优化方法 |
CN109582244B (zh) * | 2018-12-05 | 2022-08-12 | 广东浪潮大数据研究有限公司 | 一种元数据落盘方法、装置、终端及计算机可读存储介质 |
CN110674064B (zh) * | 2019-09-05 | 2021-06-29 | 苏州浪潮智能科技有限公司 | 一种数据传输方法、装置、设备及计算机可读存储介质 |
CN110943936A (zh) * | 2019-11-08 | 2020-03-31 | 中国科学院信息工程研究所 | 一种高效的基于动态数组的网络流量处理方法及系统 |
CN111008157B (zh) * | 2019-11-29 | 2022-02-18 | 北京浪潮数据技术有限公司 | 存储系统写缓存数据下发方法及相关组件 |
CN111984407B (zh) * | 2020-08-07 | 2022-12-23 | 苏州浪潮智能科技有限公司 | 一种数据块读写性能优化方法、系统、终端及存储介质 |
CN114489519B (zh) * | 2022-04-18 | 2022-07-12 | 创新科技术有限公司 | 一种io请求的处理方法、装置、设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6687765B2 (en) * | 2001-01-16 | 2004-02-03 | International Business Machines Corporation | System, method, and computer program for explicitly tunable I/O device controller |
CN1617100A (zh) * | 2003-08-20 | 2005-05-18 | 微软公司 | 确定连续介质优先级的存储调度程序 |
CN101616174A (zh) * | 2009-07-09 | 2009-12-30 | 浪潮电子信息产业股份有限公司 | 一种存储系统io处理路径动态跟踪实现优化系统性能的方法 |
CN103106043A (zh) * | 2011-06-29 | 2013-05-15 | 国际商业机器公司 | 用于管理存储服务器的资源的方法和计算机系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001166993A (ja) * | 1999-12-13 | 2001-06-22 | Hitachi Ltd | 記憶制御装置およびキャッシュメモリの制御方法 |
-
2013
- 2013-12-17 CN CN201310689138.2A patent/CN103761051B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6687765B2 (en) * | 2001-01-16 | 2004-02-03 | International Business Machines Corporation | System, method, and computer program for explicitly tunable I/O device controller |
CN1617100A (zh) * | 2003-08-20 | 2005-05-18 | 微软公司 | 确定连续介质优先级的存储调度程序 |
US7206866B2 (en) * | 2003-08-20 | 2007-04-17 | Microsoft Corporation | Continuous media priority aware storage scheduler |
CN101616174A (zh) * | 2009-07-09 | 2009-12-30 | 浪潮电子信息产业股份有限公司 | 一种存储系统io处理路径动态跟踪实现优化系统性能的方法 |
CN103106043A (zh) * | 2011-06-29 | 2013-05-15 | 国际商业机器公司 | 用于管理存储服务器的资源的方法和计算机系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103761051A (zh) | 2014-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103761051B (zh) | 一种基于持续数据多输入输出流并发写入性能优化方法 | |
CN103810113B (zh) | 一种非易失存储器和动态随机存取存储器的融合内存系统 | |
CN110226157A (zh) | 用于减少行缓冲冲突的动态存储器重新映射 | |
CN102831088A (zh) | 基于混合存储器的数据迁移方法和装置 | |
CN105339910B (zh) | 在混合驱动器中的虚拟nand容量扩展 | |
CN104375895B (zh) | 用于多种存储器间的数据存储调度方法以及装置 | |
CN103823765B (zh) | 一种动态调整缓存刷新策略的方法和装置 | |
CN105528299B (zh) | 读取命令排程方法以及使用该方法的装置 | |
CN103049216B (zh) | 固态硬盘及其数据处理方法、系统 | |
CN110377224A (zh) | 具有主机启动缓存区刷新的大容量存储设备 | |
CN103106150B (zh) | 一种实现存储系统自动精简配置和精简分配的方法 | |
TW200907789A (en) | Phased garbage collection and house keeping operations in a flash memory system | |
CN106469126A (zh) | 处理io请求的方法及其存储控制器 | |
CN103858092A (zh) | 一种数据迁移方法和装置 | |
CN107515728A (zh) | 发挥闪存设备内部并发特性的数据管理方法和装置 | |
CN101620569A (zh) | 一种逻辑卷存储空间的扩展方法 | |
CN109814811A (zh) | 一种减小NVMe SSD响应延迟影响高速数据存储设备写入速度的方法 | |
CN109491592A (zh) | 存储设备及其数据写入方法、存储装置 | |
CN109144885A (zh) | 固态存储设备的垃圾回收方法与固态存储设备 | |
CN103559145B (zh) | 一种数据读取、写入方法和电子设备 | |
CN109558334A (zh) | 垃圾数据回收方法及固态存储设备 | |
CN108255595A (zh) | 一种数据任务的调度方法、装置、设备及可读存储介质 | |
CN105512051A (zh) | 一种自学习型智能固态硬盘缓存管理方法和装置 | |
CN104503924B (zh) | 一种分层存储系统中的区域分配方法及装置 | |
CN104951242B (zh) | 用于在存储阵列之间自动重定位数据的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |