一种基于持续数据多输入输出流并发写入性能优化方法技术

技术编号:9990816 阅读:120 留言:0更新日期:2014-05-02 03:52
本发明专利技术涉及一种基于持续数据多输入输出流并发写入性能优化方法,属于计算机存储技术领域。本发明专利技术通过接收数据流线程池将数据蓄流到缓存池中,再通过下刷线程池将缓存刷入下层设备中,在接受数据蓄流和下刷缓存时,根据应用优先级进行标记,优先处理优先级最高的应用数据。本发明专利技术通过对上层应用数据IO特性和下层设备的IO访问能力的学习,动态调整线缓存池和线程池的配置,达到对持续数据IO的性能优化和应用优先级的保证。本发明专利技术可减少底层存储设备的IO写入次数,充分发挥下层存储设备的IO能力;合理利用存储设备的带宽,有效地提高应用的性能;降低底层设备的高IOPS需求,降低整个设备的成本;采用功耗更低的部件,落实绿色存储。

【技术实现步骤摘要】
【专利摘要】本专利技术涉及,属于计算机存储
。本专利技术通过接收数据流线程池将数据蓄流到缓存池中,再通过下刷线程池将缓存刷入下层设备中,在接受数据蓄流和下刷缓存时,根据应用优先级进行标记,优先处理优先级最高的应用数据。本专利技术通过对上层应用数据IO特性和下层设备的IO访问能力的学习,动态调整线缓存池和线程池的配置,达到对持续数据IO的性能优化和应用优先级的保证。本专利技术可减少底层存储设备的IO写入次数,充分发挥下层存储设备的IO能力;合理利用存储设备的带宽,有效地提高应用的性能;降低底层设备的高IOPS需求,降低整个设备的成本;采用功耗更低的部件,落实绿色存储。【专利说明】
本专利技术涉及一种基于持续数据多输入输出(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号缓存块大小不够,可从O号开始依次征用低优先级区域的缓存,例如,此时0-2号缓存块没有被使用,则征用0-2号缓存,并把该缓存块优先级标记为“高”。根据步骤三,获取下层设备的多并发IO流和固定IO块大小的最大写入总带宽,根据这些计算出初始条件下的下刷缓存大小,等待IO流接入系统;例如,这时下层设备的最大写入速率为100MB/S,分给4个RAID,下层最大响应时间为0.6毫秒,由此计算出初始条件下的下刷缓存大小为缓存块大小的3/4,即192KB,并等待IO流接入系统。根据步骤四,IO流写入数据后,主模块调度读线程池进行IO数据接收,开始缓存蓄流。并计算缓存池的使用量,若缓存池使用量达到缓存池总容量的70%,即179MB时,缓存池总容量自动扩展到原来的2倍,即512MB ;当缓存池大小扩展到系统缓存的5%时,SP409MB时停止扩展。根据步骤五,判断IO写入特征,根据IO写入特征结合下层设备本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:王道邦钱文孙斌谢红军罗华周泽湘李辉郭毅
申请(专利权)人:北京同有飞骥科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1