一种用户态NFS线程的优化方法、系统及相关组件与流程

文档序号:15850543发布日期:2018-11-07 09:48阅读:364来源:国知局
一种用户态NFS线程的优化方法、系统及相关组件与流程

本发明涉及文件系统管理领域,特别涉及一种用户态nfs线程的优化方法、系统、一种计算机可读存储介质及一种用户态nfs线程的优化装置。

背景技术

随着大数据、云计算、海量存储在企业信息系统中的广泛应用和深入发展,用户的核心存储应用数量越来越多,其中通过网络进行文件数据交互,是人们普遍采用的方式。随着企业数据越来越庞大,用户对数据的传输性能和稳定性要求越来越高,存储服务器各个模块软件的并发能力、读写带宽性能、iops已经成为软件使用者和开发者关注的重点。因此,如何提供一个快速、可靠、易于实施和维护、高性能的网络文件系统显得尤为重要。

nfs(networkfilesystem)即内核态网络文件系统,是freebsd支持的文件系统中的一种,它允许网络中的计算机之间通过tcp/ip网络共享资源。nfs-ganesha是用户态网络文件系统,属于开源项目,在系统服务故障场景下,相比于内核态nfs具有较好管理性和可维护性,因此用户态nfs应用前景很大。

但是,现有技术中尚不存在关于用户态nfs线程的具体的优化方法,在业务操作比较繁忙的应用场景中,大量操作字实际上是用不到的,导致在应用过程中资源浪费,工作效率较低。

因此,如何实现对用户态nfs线程的优化,提高线程的工作效率是本领域技术人员目前需要解决的技术问题。



技术实现要素:

本申请的目的是提供一种用户态nfs线程的优化方法、系统、一种计算机可读存储介质及一种用户态nfs线程的优化装置,能够实现对用户态nfs线程的优化,提高线程的工作效率。

为解决上述技术问题,本申请提供一种用户态nfs线程的优化方法,该优化方法包括:

当接收到客户端发送的请求信息时,将所述请求信息发送至第一目标工作线程;

根据所述请求信息对应的操作类型确定优化请求操作字;其中,所述优化请求操作字具体为nfsv3协议操作字;

根据所述优化请求操作字对所述第一目标工作线程执行过滤优化操作得到第二目标工作线程,以便利用所述第二目标工作线程执行所述请求信息对应的处理操作;其中,所述第二目标工作线程的操作字只包括所述优化操作字。

可选的,将所述请求信息发送至第一目标工作线程包括:

将任务数量最少的工作线程设置为所述第一目标工作线程,并将所述请求信息发送至所述第一目标工作线程。

可选的,所述优化请求操作字具体为宏定义十六进制的操作字。

可选的,根据所述优化请求操作字对所述第一目标工作线程执行过滤优化操作得到第二目标工作线程包括:

判断所述请求信息中的flags标签与配置的操作字的与运算的结果是否为真;

若是,则根据所述优化请求操作字对所述第一目标工作线程执行过滤优化操作得到第二目标工作线程。

可选的,利用所述第二目标工作线程执行所述请求信息对应的处理操作包括:

利用所述第二目标工作线程调用inodecacheapi和filecontentapi执行所述请求信息对应的处理操作。

可选的,所述请求信息由所述客户端通过远程调用协议发送。

本申请还提供了一种用户态nfs线程的优化系统,该系统包括:

请求信息分配模块,用于当接收到客户端发送的请求信息时,将所述请求信息发送至第一目标工作线程;

优化请求操作字确定模块,用于根据所述请求信息对应的操作类型确定优化请求操作字;其中,所述优化请求操作字具体为nfsv3协议操作字;

优化模块,用于根据所述优化请求操作字对所述第一目标工作线程执行过滤优化操作得到第二目标工作线程,以便利用所述第二目标工作线程执行所述请求信息对应的处理操作;其中,所述第二目标工作线程的操作字只包括所述优化操作字。

可选的,所述优化请求操作字具体为宏定义十六进制的操作字。

本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述用户态nfs线程的优化方法执行的步骤。

本申请还提供了一种用户态nfs线程的优化装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述用户态nfs线程的优化方法执行的步骤。

本发明提供了一种用户态nfs线程的优化方法,包括当接收到客户端发送的请求信息时,将所述请求信息发送至第一目标工作线程;根据所述请求信息对应的操作类型确定优化请求操作字;其中,所述优化请求操作字具体为nfsv3协议操作字;根据所述优化请求操作字对所述第一目标工作线程执行过滤优化操作得到第二目标工作线程,以便利用所述第二目标工作线程执行所述请求信息对应的处理操作;其中,所述第二目标工作线程的操作字只包括所述优化操作字。

由于在用户态nfs中线程存在大量的操作字,而在用户态nfs的工作过程中往往用不到大部分的操作字,这是现有技术中导致用户态nfs工作效率低下的根本原因。基于此,本发明根据用户态nfs线程接收到的请求信息,根据请求信息确定关于执行请求信息对应操作的优化请求操作字,将第一目标工作线程中除了优化请求操作字以外的所有操作字过滤掉,得到只包括优化请求操作字的第二目标工作线程。由于第二目标工作线程的额操作字得到了精简,因此利用第二目标工作线程执行请求信息对应的处理操作能够实现对用户态nfs线程的优化,提高线程的工作效率。本申请同时还提供了一种用户态nfs线程的优化系统、一种计算机可读存储介质和一种用户态nfs线程的优化装置,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例所提供的一种用户态nfs线程的优化方法的流程图;

图2为本申请实施例所提供的一种信息传递示意图;

图3为本申请实施例所提供的另一种用户态nfs线程的优化方法的流程图;

图4为本申请实施例所提供的一种用户态nfs线程的优化系统的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

下面请参见图1,图1为本申请实施例所提供的一种用户态nfs线程的优化方法的流程图。

具体步骤可以包括:

s101:当接收到客户端发送的请求信息时,将请求信息发送至第一目标工作线程;

其中,本步骤默认存在客户端向用户态nfs发送请求信息的操作,客户端可以通过远程过程调用协议把请求信息加载到xprt结构中交给dispatcherthread模块(调度线程模块)处理。请参见图2,图2为本申请实施例所提供的一种信息传递示意图,图2中nfs-ganesha线程优化处理就相当于过滤优化操作,作为一种优选的实施方案,调度线程模块可以选择处于最空闲的工作线程(worker线程),即第一目标工作线程,然后将请求信息添加到第一目标工作线程的待处理列表中。第一目标工作线程会保留最近10分钟内的请求答复,如果在10分钟内收到相同指令(位于哈希表并用rpcxid4值寻址),则会返回以前的请求回复。

需要说明的是,上述提到的xprt是指远程过程调用协议通信句柄,上述提到的调度线程模块(dispatcherthread模块)是指用于监听和分发传入的操作字、挂载请求的模块。需要说明的是,本实施例并不限定第一目标工作线程的数目,可以接受多个请求信息,确定多个第一目标工作线程。

s102:根据请求信息对应的操作类型确定优化请求操作字;其中,优化请求操作字具体为nfsv3协议操作字;

其中,请求信息可以包括需要用户态nfs线程执行读、写、重命名、软连接等操作中的一种或多种,由于用户态nfs线程中包括多种操作字,而请求信息对应的操作类型只需要用户态nfs线程中的部分操作字,故在本步骤中根据请求信息对应的操作类型确定优化请求操作字,优化请求操作字就是请求信息需要用户态nfs线程执行的操作。这些优化请求操作局具体为nfs协议操作字。

当然本实施例默认存在确定需要进行优化线程的线程数及每队的线程数来获知需要进行优化操作的范围,即相当于设置优化开关的操作。进行优化线程的线程数目可以用nb_worker_req字段表示、每个队列配置的线程数可以用nb_worker_queue字段标识、指定操作字进行线程优化的开关项可以用op_thread字段标识;

例如优化线程的线程数为32,每个队列4个线程,调度nfsv3所有操作字进行线程优化;

nb_worker_req=32;//优化线程的线程数

nb_worker_queue=4;//每个队列多少线程

op_thread=read,write,access,getattr,setattr,lookup,readlink,create,mkdir,symlink,mknod,remove,rmdir,rename,link,readdir,readdirplus,fsstat,fainfo,pathconf,commit;//调度所有nfsv3协议操作字进行优化。

在上述过程中优化线程的线程数是指优化第一目标工作线程的个数,操作字为nfsv3协议中的标准操作字。

s103:根据优化请求操作字对第一目标工作线程执行过滤优化操作得到第二目标工作线程,以便利用第二目标工作线程执行请求信息对应的处理操作;其中,第二目标工作线程的操作字只包括优化操作字。

举例说明上述操作的意义:例如在读写业务比较频繁的业务场景中,用不到重命名,软连接,获取属性,设置属性的请求操作字,仅对读写操作字进行优化即可,可调度的线程优化,对系统内存、网络资源有很大帮助,具有灵活性本步骤的目的在于找出所有第一目标工作线程的除优化请求操作字以外的其他操作字并将其删除。

经过过滤优化操作得到的第二目标工作线程相对于第一目标工作线程去除了在执行请求信息对应的操作的过程中应用不到的操作字节约了系统资源能够提高工作效率。

进一步的,可以对收到请求信息进行解码,然后通过调用inodecacheapi和filecontentapi来完成请求信息对应的操作。

由于在用户态nfs中线程存在大量的操作字,而在用户态nfs的工作过程中往往用不到大部分的操作字,这是现有技术中导致用户态nfs工作效率低下的根本原因。基于此,本实施例根据用户态nfs线程接收到的请求信息,根据请求信息确定关于执行请求信息对应操作的优化请求操作字,将第一第一目标工作线程中除了优化请求操作字以外的所有操作字过滤掉,得到只包括优化请求操作字的第二目标工作线程。由于第二目标工作线程的额操作字得到了精简,因此利用第二目标工作线程执行请求信息对应的处理操作能够实现对用户态nfs线程的优化,提高线程的工作效率。

下面请参见图3,图3为本申请实施例所提供的另一种用户态nfs线程的优化方法的流程图;

具体步骤可以包括:

s201:当接收到客户端发送的请求信息时,将任务数量最少的工作线程设置为第一目标工作线程,并将请求信息发送至第一目标工作线程。

其中,将任务数量最少的工作线程设置为第一目标工作线程的意义在于,在所有工作线程中查找一个相对最空闲的的作为第一目标工作线程,空闲就是指没有任务的线程处于等待期的线程,选择调度机制基于类unix系统。是unix多线程的基础机制,优化指的是特定操作字使用指定的线程。

s202:根据请求信息对应的操作类型确定优化请求操作字;其中,优化请求操作字具体为nfsv3协议操作字,优化请求操作字具体为宏定义十六进制的操作字。

具体的,对于优化请求操作字的识别可以采用宏定义十六进制八位数进行区分识别;

需要说明的是,设置nfsv3操作字可选配置项结构示例如下:

优化请求操作字采用宏定义十六进制是因为用8位二进制的数字可以方便的转换为2个十六进制的数字,

例如可以定义:

#defineread0x00000020

#definewrite0x00000040

如果对read,write操作进行优化记录的十进制就是96,转化为16进制就是0x00000060只能是0x00000020,0x00000040的和,也就是代表的read和wirte进而实现了操作字的过滤区分。

s203:判断请求信息中的flags标签与配置的操作字的与运算的结果是否为真;若是,则进入s204;若否,则结束流程。

其中,可以对请求信息中的flags标签与配置的操作字进行与运算,判断结果是否为真,若为真则进入s204,即可以执行过滤优化操作;若为假,即不可以执行过滤优化操作。

s204:根据优化请求操作字对第一目标工作线程执行过滤优化操作得到第二目标工作线程;

s205:利用第二目标工作线程调用inodecacheapi和filecontentapi执行请求信息对应的处理操作;其中,第二目标工作线程的操作字只包括优化操作字。

请参见图4,图4为本申请实施例所提供的一种用户态nfs线程的优化系统的结构示意图;

该系统可以包括:

请求信息分配模块100,用于当接收到客户端发送的请求信息时,将请求信息发送至第一目标工作线程;

优化请求操作字确定模块200,用于根据请求信息对应的操作类型确定优化请求操作字;其中,优化请求操作字具体为nfsv3协议操作字;

优化模块300,用于根据优化请求操作字对第一目标工作线程执行过滤优化操作得到第二目标工作线程,以便利用第二目标工作线程执行请求信息对应的处理操作;其中,第二目标工作线程的操作字只包括优化操作字。

可选的,优化请求操作字具体为宏定义十六进制的操作字。

可选的,请求信息分配模块100包括:

当接收到客户端发送的请求信息时,将任务数量最少的工作线程设置为第一目标工作线程,并将请求信息发送至第一目标工作线程。

可选的,优化模块300包括:

判断单元,用于判断请求信息中的flags标签与配置的操作字的与运算的结果是否为真;

过滤单元,用于当与运算的结果为真时,根据优化请求操作字对第一目标工作线程执行过滤优化操作得到第二目标工作线程,以便利用第二目标工作线程执行请求信息对应的处理操作。

由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请还提供了一种用户态nfs线程的优化装置,可以包括存储器和处理器,存储器中存有计算机程序,处理器调用存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然用户态nfs线程的优化装置还可以包括各种网络接口,电源等组件。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1