首页> 中国专利> 分布式文件系统及其中的上层文件系统的访问方法

分布式文件系统及其中的上层文件系统的访问方法

摘要

本发明公开了一种分布式文件系统及其中的上层文件系统的访问方法,其中,访问方法包括:多线程应用中的输入输出IO型线程发出用于请求访问上层文件系统的同步IO请求;上层调度器选择上层文件系统的核心线程来处理同步IO请求,其中,核心线程绑定在虚内核中央处理器CPU上并且具有比非核心线程高的调度优先级;在处理完成后,上层文件系统通知上层调度器对IO型线程进行优先调度;上层调度器优先调度IO型线程并向IO型线程发送同步IO请求的响应消息。本发明缩短上层文件系统响应IO型线程的同步IO请求所需的时间。

著录项

  • 公开/公告号CN101937465A

    专利类型发明专利

  • 公开/公告日2011-01-05

    原文格式PDF

  • 申请/专利权人 中兴通讯股份有限公司;

    申请/专利号CN201010280603.3

  • 发明设计人 朱鹏;夏舰波;江凌生;

    申请日2010-09-10

  • 分类号G06F17/30(20060101);G06F9/46(20060101);

  • 代理机构11240 北京康信知识产权代理有限责任公司;

  • 代理人余刚;吴孟秋

  • 地址 518057 广东省深圳市南山区科技南路55号

  • 入库时间 2023-12-18 01:26:38

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-09-11

    授权

    授权

  • 2012-06-06

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20100910

    实质审查的生效

  • 2011-01-05

    公开

    公开

说明书

技术领域

本发明涉及数据存储领域,具体而言,涉及一种分布式文件系统及其中的上层文件系统的访问方法。

背景技术

随着多媒体产业的迅猛发展,出于成本、可靠性等多方面的考虑,越来越多的厂商选择在产品中部署自主研发的分布式上层存储系统,从而分布式文件系统也因此得到了快速的发展。在现有的分布式文件系统中主要包括内核调度器、上层文件系统、以及多线程应用程序。多线程应用程序中的线程会根据需要去访问上层文件系统,例如多线程应用程序中的IO(输入输出)型线程会发送同步IO请求(如Open请求)来访问上层文件系统中的文件等。

不同于内核文件系统,上层文件系统虽然具有更好的可扩展性,但是,却不能及时地响应部分IO型线程的同步IO请求,从而影响了部分实时性要求比较高的业务。

发明内容

本发明的主要目的在于提供一种分布式文件系统及其中的上层文件系统的访问方法,以至少解决上述的上层文件系统不能及时地响应IO型线程的同步IO请求的问题。

根据本发明的一个方面,提供了一种分布式文件系统中的上层文件系统的访问方法,包括:多线程应用中的输入输出IO型线程发出用于请求访问上层文件系统的同步IO请求;上层调度器选择上层文件系统的核心线程来处理同步IO请求,其中,核心线程绑定在虚内核中央处理器CPU上并且具有比非核心线程高的调度优先级;在处理完成后,上层文件系统通知上层调度器对IO型线程进行优先调度;上层调度器优先调度IO型线程并向IO型线程发送同步IO请求的响应消息。

进一步地,在IO型线程发出同步IO请求之前,还包括:上层文件系统启动后,指定虚内核CPU,并确定核心线程;上层文件系统向上层调度器发送第一配置请求,其中,第一配置请求中包括指定的虚内核CPU的信息、以及确定的核心线程的信息;上层调度器接收到第一配置请求后,确定上层文件系统的第一配置策略并发送给内核调度器,其中,第一配置策略包括:核心线程绑定在虚内核CPU上以及核心线程的调度优先级高于非核心线程的调度优先级;内核调度器以第一配置策略进行设置。

进一步地,在IO型线程发出同步IO请求之前,还包括:多线程应用启动后,根据上层文件系统指定的虚内核CPU确定非虚内核CPU,并确定IO型线程的调度优先级高于多线程应用中的运算型线程的调度优先级;多线程应用向上层调度器发送第二配置请求,其中,第二配置请求中包括确定的非虚内核CPU的信息、以及IO型线程的调度优先级和运算型线程的调度优先级;上层调度器接收到第二配置请求后,确定多线程应用的第二配置策略并发送给内核调度器,其中,第二配置策略包括:多线程应用在非虚内核CPU上调度,并且IO型线程的调度优先级高于运算型线程的调度优先级;内核调度器以第二配置策略进行设置。

进一步地,在IO型线程发出同步IO请求之后,还包括:IO型线程进入阻塞状态以使得内核调度器进行调度;内核调度器进行调度以使得上层调度器选择核心线程来处理同步IO请求。

进一步地,上层文件系统通知上层调度器对IO型线程进行优先调度包括:在处理完成后,核心线程通知上层调度器对IO型线程进行优先调度;上层调度器接收到通知后,标注IO型线程的调度优先级为最高;内核调度器进行调度以使得上层调度器优先调度IO型线程。

进一步地,上层调度器优先调度IO型线程包括:上层调度器选择具有最高的调度优先级的IO型线程进行调度。

根据本发明的另一方面,提供了一种分布式文件系统,包括:多线程应用模块,用于在多线程应用中的输入输出IO型线程启动时,发出用于请求访问上层文件系统的同步IO请求;上层调度器,用于选择上层文件系统的核心线程来处理同步IO请求,其中,核心线程绑定在虚内核中央处理器CPU上并且具有比非核心线程高的调度优先级;以及优先调度IO型线程并向IO型线程发送同步IO请求的响应消息;上层文件系统,用于使用核心线程处理同步IO请求,并在处理完成后通知上层调度器对IO型线程进行优先调度。

进一步地,在上述的分布式文件系统中,还包括:内核调度器,其中:上层文件系统,还用于在多线程应用启动后指定虚内核CPU,并同时确定核心线程;以及向上层调度器发送第一配置请求,其中,第一配置请求中包括指定的虚内核CPU的信息、以及确定的核心线程的信息;上层调度器,还用于接收到第一配置请求后,确定上层文件系统的第一配置策略并发送给内核调度器,其中,第一配置策略包括:核心线程绑定在虚内核CPU上以及核心线程的调度优先级高于非核心线程的调度优先级;内核调度器,用于以第一配置策略进行设置。

进一步地,多线程应用模块,还用于在启动后根据上层文件系统指定的虚内核CPU确定非虚内核CPU,并确定IO型线程的调度优先级高于多线程应用中的运算型线程的调度优先级;以及向上层调度器发送第二配置请求,其中,第二配置请求中包括确定的非虚内核CPU的信息、以及IO型线程的调度优先级和运算型线程的调度优先级;上层调度器,还用于在接收到第二配置请求后,确定多线程应用的第二配置策略并发送给内核调度器,其中,第二配置策略包括:多线程应用在非虚内核CPU上调度,并且IO型线程的调度优先级高于运算型线程的调度优先级;内核调度器,还用于以第二配置策略进行设置。

进一步地,多线程应用模块还用于在发出同步IO请求之后,令IO型线程进入阻塞状态以使得内核调度器进行调度;内核调度器还用于根据IO型线程的阻塞状态进行调度以使得上层调度器选择核心线程来处理同步IO请求。

通过本发明,一方面通过将上层文件系统的核心线程绑定在虚内核CPU上并提高了其调度优先级,提高了上层文件系统的核心线程被调度的能力,提高了单位时间上层文件系统的核心线程的实际运行时间和相应吞吐率,另一方面,上层调度器通过优先调度IO型线程,提高了上层应用的IO型线程的实际调用次数,限制了运算型线程抢占CPU的能力,保证了IO型线程具有足够的被调度能力,通过上述两个方面的作用,上层调度器缩短了由于未能及时调度IO型线程而浪费的时间,提高了同步IO的吞吐量,从而缩短上层文件系统响应IO型线程的同步IO请求所需的时间,解决了相关技术中上层文件系统不能及时地响应IO型线程的同步IO请求的问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的分布式文件系统中的上层文件系统的访问方法的流程图;

图2是根据本发明优选实施例的上层文件系统和多线程应用的注册流程图;

图3是根据本发明实施例的分布式文件系统运行时,上层文件系统的访问过程中的调度流程图;

图4是根据相关技术的CPU占用情况的柱状图;

图5是根据本发明实施例的访问方法的CPU占用情况的柱状图;

图6是根据本发明实施例的分布式系统的示意图;

图7是根据本发明优选实施例的分布式系统的结构示意图;

图8是根据本发明优选实施例的分布式系统的模块示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

图1是根据本发明实施例的分布式文件系统中的上层文件系统的访问方法的流程图,包括以下步骤:

步骤S 102,多线程应用中的IO(Input-Output,输入输出)型线程发出用于请求访问(可以是打开、读、写等访问操作)上层文件系统的同步IO请求;

其中,多线程应用实际是一种多线程应用程序(可以由一种软件模块来实现),多线程应用程序是指其含有的线程的数量大于CPU的核数,并且运算型线程和IO型线程并存的应用程序;其中,运算型线程是指基本不会主动放弃CPU资源,以高强度运算或大量异步响应为主的线程;IO型线程是指会由于同步阻塞或主动休眠而释放CPU资源的线程。

步骤S104,上层调度器选择上层文件系统的核心线程来处理上述同步IO请求,其中,该核心线程绑定在虚内核CPU(CentralProcessing Unit,中央处理器)上并且具有比非核心线程高的调度优先级;

其中,核心线程指的是关键路径上需要处理的线程,则显然,非核心线程即为除核心线程以外的线程。虚内核CPU是指只运行特定的“虚内核”程序的逻辑CPU。

步骤S106,在处理完成后,上层文件系统通知上层调度器对上述IO型线程进行优先调度;

步骤S108,上层调度器优先调度上述IO型线程并向IO型线程发送该同步IO请求的响应消息。

本实施例一方面通过将上层文件系统的核心线程绑定在虚内核CPU上并提高了其调度优先级,提高了上层文件系统的核心线程被调度的能力,提高了单位时间上层文件系统的核心线程的实际运行时间和相应吞吐率,另一方面,上层调度器通过优先调度IO型线程,提高了上层应用的IO型线程的实际调用次数,限制了运算型线程抢占CPU的能力,保证了IO型线程具有足够的被调度能力,通过上述两个方面的作用,上层调度器缩短了由于未能及时调度IO型线程而浪费的时间,提高了同步IO的吞吐量,从而缩短了上层文件系统响应IO型线程的同步IO请求所需的时间,解决了相关技术中上层文件系统不能及时地响应IO型线程的同步IO请求的问题。

上述步骤S102-步骤S108也即上层文件系统响应IO型线程发出的同步IO请求的过程。

在实际应用时,在IO型线程访问上层文件系统之前,上层文件系统和多线程应用需要在启动后进行注册,因此,如图2所示,在步骤S102之前,还包括以下步骤:

步骤S202,上层文件系统启动,根据实际物理配置,指定虚内核CPU以及该虚内核CPU所映射的物理CPU(为多核CPU)的ID,同时确定核心线程,确认需要的配置通过第一配置请求发给上层调度器;

步骤S204,上层调度器接收到上层文件系统的第一配置请求,确定目前的上层文件系统的配置策略(为了与下述的多线程应用的配置策略区分,可称为第一配置策略),检查并将该配置策略传递给内核调度器;其中,配置策略包括:核心线程绑定在虚内核CPU上,并提高其优先级,同时对于非关键非高速响应线程(即非核心线程),降低其调度优先级,并允许其在所有虚CPU上进行调度(即上层文件系统的核心线程的调度优先级高于非核心线程的调度优先级)。

步骤S206,内核调度器根据上层文件系统的配置策略设置相应的配置。具体地,确定各个线程可以调度的CPU和调度优先级;

上述步骤S202-步骤S206为上层文件系统的注册过程。

步骤S208,多线程应用启动,调用上层文件系统的接口,读取当前的上层文件系统的配置策略(限制策略);主要是读取虚内核CPU的信息;

步骤S210,上层文件系统返回配置策略,包括虚内核CPU的ID等信息;

步骤S212,多线程应用确认提高IO型线程的调度优先级,降低运算型线程的调度优先级(即IO型线程的调度优先级高于运算型线程的调度优先级),非虚内核CPU的ID(可由虚内核CPU的ID得到,显然,除虚内核CPU以外的虚CPU即为非虚内核CPU),并将自己的配置通过第二配置请求发送给上层调度器;

步骤S214,上层调度器接收到多线程应用的第二配置请求,确定目前的多线程应用的配置策略(可称为第二配置策略),检查并将该配置策略传递给内核调度器;其中,该配置策略包括:多线程应用在非虚内核CPU上调度,并且IO型线程的调度优先级高于运算型线程的调度优先级。这样,可以控制多线程应用可调度的CPU,避免其在虚内核CPU上调度,从而可以提高响应速度。

步骤S216,内核调度器根据多线程应用的配置策略设置相应的配置。具体地,确定各个线程可以调度的CPU和优先级。

上述步骤S208-步骤S216为多线程应用的注册过程。

在上层文件系统和多线程应用均已注册完毕后,多线程应用中的线程被启动后即可根据需要去访问上层文件系统,其中,当IO型线程(对应于同步业务)需要访问上层文件系统时,会发出用于访问该上层文件系统的同步IO请求,内核调度器和上层调度器进行调度,最终向IO型线程返回该同步IO请求的响应消息,从而完成了整个访问过程,也即上层文件系统响应IO型线程的同步IO请求的整个处理过程,如图3所示,具体包括以下步骤:

步骤S302,多线程应用中的IO型线程发出同步IO请求,之后该IO型线程进入阻塞状态以使得内核调度器进行调度;

该步骤S302对应于图1中的步骤S 102。

步骤S304,内核调度器进行调度;

步骤S306,上层调度器选择上层文件系统的核心路径进行调度(由于上层文件系统的核心线程被单独地绑定到一个虚内核CPU上,所以在这个虚内核CPU上核心线程一定会被调度);

步骤S308,上层文件系统的核心线程开始运行,并处理该同步IO请求,处理完成后通知上层调度器对已经完成的请求的线程(即上述发出同步IO请求的IO型线程)进行优先调度;

步骤S310,上层调度器接收到上层文件系统的通知消息后,标注需要调度的线程,即上述的发出同步IO请求的IO型线程;

步骤S312,当内核调度器可以调度时进行调度(在多个物理CPU上,内核调度队列有多个,所以当上层调度器修改优先级之后就已经生效了);

上述步骤S304-步骤S312对应于图1中的步骤S104-步骤S106。

步骤S314,当上层调度器被调度之后,会选择优先级最高的线程进行优先调度(此时就选择了那个等待IO完成的IO型线程);

步骤S316,IO型线程被调度,完成同步IO请求的响应,即向该IO型线程返回响应消息。

上述步骤S314-步骤S316对应于图1中的步骤S108。

为了验证本发明实施例的上层文件系统的访问方法中上层文件系统相较于相关技术更能够及时地响应IO型线程的同步IO请求,图4和图5分别示出了相关技术中的CPU占用情况和根据本发明实施例的访问方法中的CPU占用情况,以说明海量的同步IO请求(比如,上层文件系统的open请求)到来时,物理CPU的使用率的区别。

从图4和图5中可以看出:使用本发明实施例的访问方法,在海量的同步IO请求到来时,上层文件系统拥有更多的物理CPU使用率,同时上层文件系统的关键路径(即核心线程)的物理CPU使用率更高,处理能力更强(图4中关键路径被内核调度器分配在cpu2上,图5中被上层调度器和内核调度器共同作用分配在cpu7上),因此,能够更加及时地响应同步IO请求。

图6是根据本发明实施例的分布式文件系统的示意图,包括:多线程应用模块10、上层文件系统20、上层调度器30、和内核调度器40,以下对各功能模块进行详细描述。

多线程应用模块10,用于在多线程应用中的IO型线程启动时,发出用于请求访问上层文件系统的同步IO请求;

上层调度器30,用于选择上层文件系统20的核心线程来处理上述同步IO请求,其中,该核心线程绑定在虚内核CPU上并且具有比非核心线程高的调度优先级;以及优先调度上述IO型线程并向该IO型线程发送上述同步IO请求的响应消息;

上层文件系统20,用于使用上述核心线程处理上述同步IO请求,并在处理完成后通知上层调度器30对上述IO型线程进行优先调度。

如图7所示,在实际应用中,分布式文件系统中还包括了多个CPU(可以为多核CPU,该CPU为物理CPU),虚内核CPU与物理CPU具有映射关系。

在实际应用中,IO型线程访问上层文件系统之前,上层文件系统和多线程应用还需要进行注册。因此,在上层文件系统的注册过程中,上层文件系统20,还用于在启动后指定上述虚内核CPU,并确定上述核心线程;以及向上层调度器30发送第一配置请求,其中,该第一配置请求中包括指定的虚内核CPU的信息、以及确定的核心线程的信息;上层调度器30,还用于接收到第一配置请求后,确定上层文件系统20的第一配置策略并发送给内核调度器40,其中,第一配置策略包括:核心线程绑定在虚内核CPU上以及核心线程的调度优先级高于非核心线程的调度优先级;内核调度器40,用于以该第一配置策略进行设置。

并且,在多线程应用的注册过程中,多线程应用模块10,还用于在多线程应用启动后根据上层文件系统指定的虚内核CPU确定非虚内核CPU,并确定IO型线程的调度优先级高于多线程应用中的运算型线程的调度优先级;以及向上层调度器30发送第二配置请求,其中,该第二配置请求中包括确定的非虚内核CPU的信息、以及IO型线程的调度优先级和运算型线程的调度优先级;上层调度器30,还用于在接收到该第二配置请求后,确定多线程应用的第二配置策略并发送给内核调度器40,其中,该第二配置策略包括:多线程应用在非虚内核CPU上调度,并且IO型线程的调度优先级高于运算型线程的调度优先级;内核调度器40,还用于以该第二配置策略进行设置。

在实际应用中,多线程应用模块还用于在发出上述同步IO请求之后,令上述IO型线程进入阻塞状态以使得内核调度器40进行调度;

内核调度器40还用于根据该IO型线程的阻塞状态进行调度以使得上层调度器30选择上层文件系统20的上述核心线程来处理上述同步IO请求。这样,能够使得内核调度器通过上层调度器来选择上层文件系统的核心线程处理IO型线程的同步IO请求,缩短了同步IO请求处理的时间。

在上述如图6所示的实施例中,如图8所示,上层调度器30可以包括:选择模块302,用于选择上层文件系统20的核心线程进行调度;以及接收模块304,用于在接收到来自上层文件系统20的对上述IO型线程进行优先调度的通知后,标注该IO型线程的调度优先级为最高;上层文件系统20包括:处理模块202,用于运行上述核心线程并使用该核心线程处理上述同步IO请求;以及通知模块204,用于在处理模块202处理完成后,通知上层调度器30对上述IO型线程进行优先调度;内核调度器40包括:调度模块402,用于进行调度以使得上层调度器30优先调度上述IO型线程。

在上述如图6所示的实施例中,如图8所示,上层调度器30为了优先调度上述IO型线程,其中的选择模块302还可以用于选择具有最高的调度优先级的上述IO型线程进行调度。

从以上的描述中,可以看出,本发明实现了如下技术效果:一方面通过将上层文件系统的核心线程绑定在虚内核CPU上并提高了其调度优先级,提高了上层文件系统的核心线程被调度的能力,提高了单位时间上层文件系统的核心线程的实际运行时间和相应吞吐率,另一方面,上层调度器通过优先调度IO型线程,提高了上层应用的IO型线程的实际调用次数,限制了运算型线程抢占CPU的能力,保证了IO型线程具有足够的被调度能力,通过上述两个方面的作用,上层调度器缩短了由于未能及时调度IO型线程而浪费的时间,提高了同步IO的吞吐量,从而缩短了上层文件系统响应IO型线程的同步IO请求所需的时间,解决了相关技术中上层文件系统不能及时地响应IO型线程的同步IO请求的问题,上层文件系统在部分要求高的实时业务中可以快速地响应多线程应用程序的同步IO请求,在同步IO请求繁重的系统中,可以明显提高运行的速度。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号