发明内容
为解决上述技术问题,本发明提出了一种优化处理资源的方法及装置,该方法以访问局部化,资源平均化为原则实现分布式处理框架,提高存储系统IOPS性能。
本发明提供了一种优化处理资源的方法,该方法包括:
将数据按照磁盘阵列Raid条带进行划分,划分后的数据子集分别分派到不同的CPU进行处理并分派到与之对应的CPU的专用cache中;
分别将所述划分后的数据子集绑定到所述与之对应的CPU的线程中异步执行,并将划分后的数据保存到所述CPU的专用cache中。
优选地,所述将数据按照Raid条带进行划分之前还包括:
获取所述数据的Raid条带占用信息。
优选地,所述线程设有与之对应的页内存管理。
优选地,所述线程对保存在之对应的CPU的专用cache中的数据采用无并发的单线程数据处理模式进行数据处理。
优选地,所述方法还包括:
将当前没有进行数据子集绑定的CPU设置为冗余CPU。
相应的,本发明还提出了一种优化处理资源的装置,所述装置包括:
数据拆分模块,用于将数据按照磁盘阵列Raid条带进行划分,划分后的数据子集分别分派到不同的CPU进行处理并分派到与之对应的CPU的专用cache中;
资源绑定模块,用于分别将所述划分后的数据子集绑定到所述与之对应的CPU的线程中异步执行,并将划分后的数据保存到所述CPU的专用cache中。
优选地,所述装置还包括:
获取模块,用于在将数据按照Raid条带进行划分之前,获取所述数据的Raid条带占用信息。
采用本发明提出的一种优化处理资源的方法及装置,通过数据拆分,相当于先对数据做了均衡的Hash,将大数据拆分为小数据分而治之;资源绑定,将多线程并发处理模型简化为单线程数据处理模型;从顶层整体分配所有资源(CPU资源和内存资源),以均衡和减少冲突为原则达成的存储系统,具有很高的IOPS吞吐能力,资源使用平衡,不冲突,因为顶层设计清晰,系统具有很好的可靠性和扩展性。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
存储系统要具有极高的IOPS能力,并且支持双控乃至集群,必须分布式并行处理,降低数据访问冲突、资源占用冲突,将访问局部化,资源平均化。在系统框架设计上,很好的用以上原则融合多种技术的设计框架,才是好的框架。
图1为本发明实施例一提出的一种优化处理资源的方法流程图,如图1所示,该方法包括以下步骤:
S101,将数据按照磁盘阵列Raid条带进行划分,划分后的数据子集分别分派到不同的CPU进行处理并分派到与之对应的CPU的专用cache中;
S102,分别将所述划分后的数据子集绑定到所述与之对应的CPU的线程中异步执行,并将划分后的数据保存到所述CPU的专用cache中。
其中,线程对保存在之对应的CPU的专用cache中的数据采用无并发的单线程数据处理模式进行数据处理。本发明实施例中,线程要处理的数据是自己独有的,所以数据处理模式是单线程,不用考虑并发访问数据。
本发明实施例中,在所述将数据按照Raid条带进行划分之前,本方法还包括:
获取所述数据的Raid条带占用信息。
其中,所述线程设有与之对应的页内存管理,每个Per_CPU work有本地化的页内存管理。
本发明实施例中,所述方法还包括:
将当前没有进行数据子集绑定的CPU设置为冗余CPU,将剩余的CPU核用于系统中其他上层模块。
本发明实现的构架方案如下:
1.数据拆分
将数据按照Raid条带进行划分,分派到不同的CPU核(可扩展到双控制器乃至集群)上去处理(CPU资源),分派到不同的CPU的专用cache即Per_CPU cache中(内存资源)。
数据拆分相当于先对数据做了均衡的Hash,将大数据拆分为小数据分而治之。
2.资源绑定
将拆分后的数据子集(sub_io)分派(绑定)到某个CPU核的Per_CPU work中异步执行,存储到CPU对应的Per_CPU cache中。
这样,每个CPU核的Per_CPU work都有自己局部化的内存资源Per_CPU cache(以及Per_CPU页内存管理);Per_CPU work都是无并发的单线程模型。
资源绑定后自然达成的好的效果是,将多线程并发处理模型简化为单线程数据处理模型。
本发明实施例的具体工作流程,如下:
1.将双控通讯设定到一个真CPU核心上执行;
2.将异步双控范围锁(包括IO锁和条带锁)设定到一个真CPU核心上执行;
3.将cache的IO处理,产生flush io等work设定到一组CPU核心上执行;
外部的IO拆分到双控的每个cache Per_CPU work上执行;flush在每个Per_CPU本地产生;
4.将Raid的IO处理等work设定到一组CPU核心上执行,与cache有M比N的关系;
5.剩余CPU核用于系统中其他上层模块;
6.每个Per_CPU work有本地化的页内存管理。
图2为拆分bio的流程图,具体包括:
初始化task_array、start_pos等信息;获取cache的条带大小;
遍历next_range,将bio拆分为pcpu_bio_task,并初始化,放入局部变量task_array中;
出现错误则根据task_array数组rollback所有pcpu_bio_task;
无错误则将task_array中所有pcpu_bio_task放入对应的pcpu_work中执行。
其中,task_array是任务数组,pcpu_bio_task是每CPU的bio任务,bio是存储系统中专用的数据,保存了一个数据块的访问请求的所有信息。
图3为本发明实施例二提出的一种优化处理资源的装置模块图,如图3所示,该装置包括:
数据拆分模块301,用于将数据按照磁盘阵列Raid条带进行划分,划分后的数据子集分别分派到不同的CPU进行处理并分派到与之对应的CPU的专用cache中;
资源绑定模块302,用于分别将所述划分后的数据子集绑定到所述与之对应的CPU的线程中异步执行,并将划分后的数据保存到所述CPU的专用cache中。
本发明实施例中所述的优化处理资源的装置还包括:
获取模块,用于在将数据按照Raid条带进行划分之前,获取所述数据的Raid条带占用信息。
本发明提出的一种优化处理资源的方法及装置取得了以下有益效果:
1.设计达成的存储系统,具有很高的IOPS吞吐能力;
2.资源使用平衡,不冲突;
3.因为顶层设计清晰,系统具有很好的可靠性和扩展性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。