一种文件处理方法及装置的制造方法

文档序号:9597133阅读:196来源:国知局
一种文件处理方法及装置的制造方法
【技术领域】
[0001]本申请涉及计算机技术领域,尤其涉及一种文件处理方法及装置。
【背景技术】
[0002]网络附属存储(NAS,Network Attached Storage)技术是一种成熟的、高效的、低成本的存储技术,通常包括存储设备、系统软件和文件共享服务等。samba是一个基于信息服务块(SMB,Server Message Block)协议的提供文件共享服务的开源软件。作为一个成熟的开源软件,samba很好的解决了大部分应用场景的需求,但是,对于一些高并发、低延时的场景需求,samba的表现不尽如人意,经常出现延迟、CPU利用率低等情况。
[0003]现有技术不足在于:
[0004]现有samba软件在一些高并发、低延时的场景下经常出现延迟、CPU利用率低等情况。

【发明内容】

[0005]本申请实施例提出了一种文件处理方法及装置,以解决现有技术中samba软件在一些高并发、低延时的场景下经常出现延迟、CPU利用率低等情况的技术问题。
[0006]本申请实施例提供了一种文件处理方法,包括如下步骤:
[0007]主线程接收客户端发送的操作请求;所述操作请求中包括操作的文件标识;
[0008]所述主线程根据操作请求中的文件标识,将所述操作请求挂入所述文件,所述文件在待处理文件队列中依次存放;
[0009]当所述待处理文件队列中有文件需要处理时,工作线程从所述待处理文件队列中获取所述文件,逐个处理所述文件的操作请求。
[0010]本申请实施例提供了一种文件处理装置,包括:
[0011]接收模块,用于主线程接收客户端发送的操作请求;所述操作请求中包括操作的文件标识;
[0012]整合模块,用于所述主线程根据操作请求中的文件标识,将所述操作请求挂入所述文件,所述文件在待处理文件队列中依次存放;
[0013]处理模块,用于当所述待处理文件队列中有文件需要处理时,工作线程从所述待处理文件队列中获取所述文件,逐个处理所述文件的操作请求。
[0014]有益效果如下:
[0015]本申请实施例所提供的文件处理方法及装置,主线程接收客户端发送的操作请求;所述操作请求中包括操作的文件标识;所述主线程根据操作请求中的文件标识,将所述操作请求挂入所述文件,所述文件在待处理文件队列中依次存放;当所述待处理文件队列中有文件需要处理时,工作线程从所述待处理文件队列中获取所述文件,逐个处理所述文件的操作请求。由于本申请实施例中由主线程对操作请求进行了整合,将针对同一文件的操作请求整合在一起,通过对相同文件处理串行化的方式排除写操作的竞态条件,能够充分利用预读与磁盘带宽,既不会对通用场景产生明显的负面影响,又能满足高并发与低延迟场景的性能需求,可以有效的均衡高并发场景下的操作请求。
【附图说明】
[0016]下面将参照附图描述本申请的具体实施例,其中:
[0017]图1示出了本申请实施例中文件处理方法实施的流程示意图;
[0018]图2示出了本申请实施例中samba读写模型的原理示意图;
[0019]图3示出了本申请实施例中文件处理装置的结构示意图。
【具体实施方式】
[0020]为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。
[0021]发明人在发明过程中注意到:
[0022]通过对samba软件代码的分析,发现主要原因出在读写线程模型上;
[0023]对于写操作,多线程写相同文件引入了竞态条件,导致了大量的线程切换,不仅提高了延迟,而且降低了 CPU的利用率;
[0024]对于读操作,多线程读相同文件不能最大限度的利用预读功能与磁盘带宽。
[0025]针对上述不足,本申请实施例提出了一种文件处理方法及装置,下面进行说明。
[0026]图1示出了本申请实施例中文件处理方法实施的流程示意图,如图所示,所述文件处理方法可以包括如下步骤:
[0027]步骤101、主线程接收客户端发送的操作请求;所述操作请求中包括操作的文件标识;
[0028]步骤102、所述主线程根据操作请求中的文件标识,将所述操作请求挂入所述文件,所述文件在待处理文件队列中依次存放;
[0029]步骤103、当所述待处理文件队列中有文件需要处理时,工作线程从所述待处理文件队列中获取所述文件,逐个处理所述文件的操作请求。
[0030]当用户需要对某个文件进行操作时,可以通过客户端显示屏发出命令,由所述客户端向存储系统发送操作请求,所述操作请求中可以携带有需要进行操作的文件的标识。
[0031]主线程接收到所述操作请求后,可以根据其中的文件标识,将所述操作请求挂入所述文件,即,将所有针对同一文件的操作请求进行整合,将这些待处理的文件放入待处理文件队列中。
[0032]当所述待处理文件队列中有文件需要处理时,工作线程可以从所述待处理文件队列中获取所述文件,逐个处理所述文件的操作请求。
[0033]与现有技术相比,本申请实施例的有益效果可以包括:
[0034]1、由于本申请实施例每个工作线程串行处理文件的操作请求,保证对文件的写操作不产生竞态条件。
[0035]2、本申请实施例中通过多个工作线程并行处理多个文件,每个工作线程串行处理相同文件的操作请求,对于高并发场景也可以快速有效的处理,因此,采用本申请实施例所提供的方案,可以支持对高并发场景下的均衡处理。
[0036]3、由于本申请实施例中通过多个工作线程并行处理多个文件,每个工作线程串行处理相同文件的操作请求,大大提高了文件读取速度,因此,采用本申请实施例所提供的方案,可以充分利用文件系统的预渎功能。
[0037]4、采用本申请实施例所提供的方案,读写速度有明显提高,从而可以充分利用磁盘带宽。
[0038]5、由于处理操作请求的速度显著提高,从而可以保证操作的低延迟。
[0039]本申请实施例所提供的文件处理方法及装置,主线程接收客户端发送的操作请求;所述操作请求中包括操作的文件标识;所述主线程根据操作请求中的文件标识,将所述操作请求挂入所述文件,所述文件在待处理文件队列中依次存放;当所述待处理文件队列中有文件需要处理时,工作线程从所述待处理文件队列中获取所述文件,逐个处理所述文件的操作请求。
[0040]由于本申请实施例中由主线程对操作请求进行了整合,将针对同一文件的操作请求整合在一起,通过对相同文件处理串行化的方式排除写操作的竞态条件,能够充分利用预读与磁盘带宽,既不会对通用场景产生明显的负面影响,又能满足高并发与低延迟场景的性能需求,可以有效的均衡高并发场景下的操作请求。
[0041]实施中,在所述主线程接收客户端发送的操作请求之后,所述方法可以进一步包括:
[0042]根据所述操作请求中包括的文件标识判断所述文件是否在待处理文件队列中;
[0043]如果所述文件不在所述待处理文件队列中,将所述文件加入所述待处理文件队列。
[0044]具体实施时,所述主线程接收客户端发送的操作请求之后,可以进一步根据所述操作请求中包括的文件标识判断所要操作的文件是否已经在待处理文件队列中,如果在所述待处理文件队列中,则将所述操作请求挂入所述文件;如果所述文件不在所述待处理文件队列中,则可以先将所述文件加入所述待处理文件队列,再将所述操作请求挂入所述文件。
[0045]实施中,所述工作线程逐个处理所述文件的操作请求具体可以为,所述工作线程根据所述文件的任务队列,对所述任务队列中的操作请求进行逐个处理。
[0046]具体实施中,所述待处理文件队列中可以包括所有待处理的文件,由所述主线程处理;每个待处理的文件均可以包括任务队列,所述任务队列中可以包括所述文件的所有操作请求,由所述工作线程处理。
[0047]实施中,所述工作线程可以为异步输入输出a1线程,所述a1线程为若干个,所述若干个a1线程并行处理若干个文件。
[0048]具体实施中,所述工作线程可以为多个a1线程,若干个a1线程可以并行处理若干个文件,每个a1线程可以分别串行处理当前文件的所有操作请求。
[0049]实施中,所述操作请求可以为读操作请求和/或写操作请求。
[0050]具体实施中,所述操作请求可以为读操作请求、写操作请求等。
[0051]采用本申请实施例所提供的文件处理方法,对于写操作,相同文件可以由一个工作线程负责,避免了大量线程切换,降低延迟的同时提高了 CPU利用率;对于读操作,由一个工作线程读取相同文件,无需多个线程在各文件间切换,提高了读取速度,从而可以最大限度的利用预读功能和磁盘带宽。
[0052]为了便于本申请的实施,下面以实例进行说明。
[0053]本申请实施例提供的一种samba读写模型优化设计方法,根据请求中操作的文件整合操作任务,将操作文件进行排队,由工作线程进行处理;工作线程取得操作文件后,逐个处理文件的所有操作任务。
[0054]其中,主线程是samba用于处理链接中客户端所有请求的线程。主线程的工作包括请求消息的接收、请求的处理、请求的分发、请求结果的发送、定时事件的处理、信号的处理等。对于异步输入输出(10,Input Output)模式下的读写操作,主线程并不会直接处理,而是交给工作线程处理。
[0055]其中,异步输入输出(a1,Asynchronous
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1