一种缓解磁盘读取瓶颈的数据读取的方法及系统的制作方法

文档序号:7854335阅读:193来源:国知局
专利名称:一种缓解磁盘读取瓶颈的数据读取的方法及系统的制作方法
技术领域
本发明涉及一种解决多线程并发读取多个文件时造成操作系统的CPU的wa值高导致的磁盘IO瓶颈影响服务吐出流量的算法,适用于网络文件发送服务的CPU,特别适用于采用P2P协议提供小块数据发送服务的应用场景中的网络文件发送服务器的CPU,本发明方案采用多线程并发读取多文件的方法及系统,即本发明提供了一种缓解磁盘读取瓶颈的数据读取的方法及系统。
背景技术
网络文件发送服务器是指缓存系统中用于提供数据推送服务的设备,网络文件发送服务是指面向互联网终端用户,通过互联网传输通路作为数据传输媒介,提供文件下载和视频点播等数据发送的服务,且现有技术的网络文件的发送服务方法的具体流程为首
先,用于终端请求数据;然后,网络文件发送服务器接收请求,且其包含的数据发送服务程序从磁盘上将用户请求的数据调入内存或者不调入内存等待用户读取;最后,终端用户接收网络文件发送服务器下发的数据。由于网络文件发送服务的源文件是海量数据,不同终端用户的消费口味和习惯各不相同,因此网络文件发送服务程序接收到的数据下载请求是频繁并且分散的。为了提高数据发送服务程序的数据请求处理和数据发送服务能力,通用的做法是数据发送服务程序采用多线程机制,服务程序采用多线程机制后虽然在处理数据请求上的效率得到了很大的提升,但是由此也带来了数据发送服务程序在同一块磁盘上并发读取多个文件的问题。终端用户的数据请求一般都是小块数据,并且请求非常频繁并且请求的数据比较分散,当一块磁盘上同时存在很多这样的请求时,将会导致提供文件发送服务的操作系统调度磁盘读写操作出现瓶颈,表现为文件发送服务的操作系统的CPU的wa值很高,当系统的CPU的wa值高了以后,磁盘数据将不能被及时获取,自然也不可能将数据及时发送给终端用户,从而造成服务流量的下降。数据不能及时返回给终端用户,又会导致用户新的数据请求不能及时发送给数据发送服务程序,进一步影响到数据发送服务程序的服务吐出流量。基于以上背景,本发明提出一种解决多线程并发读取多个文件时造成磁盘IO瓶颈的算法,这种方法的基本思想是充分利用网络文件发送服务器的操作系统的物理内存,将网络文件发送服务器的磁盘上的数据调度到物理内存中(其中,内存分为物理内存和虚拟内存,物理内存是指内存硬件提供的内存;虚拟内存是操作系统利用磁盘虚拟的内存,相比之下,物理内存要比虚拟内存快很多。本发明中提到的内存均指物理内存。),同时充分利用磁盘数据读取操作的空闲时间,采取智能预测算法将终端用户尚未请求的数据提前从磁盘上调度到物理内存中。通过使用这种方法,一方面通过智能预测机制,使终端用户可以在发送数据请求时直接命中内存中其所需数据,数据发送服务程序可以立即响应用户的数据请求,从而提高系统的服务能力,同时可以提升用户的使用体验;另一方面用户的数据请求直接命中内存后,可以减少磁盘读取的系统操作,达到进一步降低磁盘IO瓶颈的目的。

发明内容
本发明的目的在于,一方面可以克服网络文件发送服务器采用多线程并发读取多个文件时由于频繁移动磁头造成的磁盘读取操作过频的问题;另一方面可以克服现有技术在磁盘数据读取操作的空闲时间过多的问题,从而提供一种多线程并发读取多文件的方法及系统,即本发明提供一种缓解磁盘读取瓶颈的数据读取的方法及系统。本发明的技术方案可以有效解决网络文件发送服务器采用多线程并发读取多个文件时造成的磁盘IO瓶颈问题。为了更加清晰的描述本发明的技术方案,做出如下注释将用户每次实际请求的数据大小定义为一个数据块;将N倍于用户请求数据量的数据定义为“预存数据块序列”;将采用智能预测算法预测的要存入内存中的数据称为预测数据块序列;将所述预存数据块序列和预测数据块序列统称为预存数据。其中,预测数据块序列与预存数据块序列的长度相同。
为了实现第一方面目的,本发明提供了一种缓解磁盘读取瓶颈的数据读取的方法,该方法用于网络文件发送服务器处理用户的P2P类型的数据请求,所述方法包含步骤101)用户向网络文件发送服务器发出数据块请求;步骤102)网络文件发送服务器将N倍于用户请求数据块长度的包含该数据块的预存数据块序列从磁盘存入内存中;步骤103)网络文件发送服务器通过内存命中用户所需的数据块,并向用户发送该数据块;其中,N为大于I的正整数。上述技术方案中,步骤102)进一步包含步骤102-1)用于确定用户请求的数据块在网络文件发送服务器的磁盘文件中的存储位置K的步骤,其中K为在所述文件中的相对排序值;步骤102-2)用于依据终端用户平均每次向网络文件发送服务器发送连续的数据块请求的次数L确定N值的步骤,具体为N取值应大于等于L且为2的正整数次幂;步骤102-3)用于依据下式确定预存数据块序列在磁盘文件中的具体位置预存数据块序列在磁盘中文件中的位置=INT(K/(N*M))*(N*M),其中INT为取整操作;其中,M为P2P协议用户每次请求数据块的长度,单位为字节。上述技术方案中,当在内存中命中用户所需的数据块时采用如下公式计算该数据块在内存中的具体位置首先,根据用户请求的数据块序号确定数据块所在的数据块序列的起始位置;然后,依据数据块序列的起始位置加偏移量的方式命中用户请求的数据块;其中,所述偏移量可以由用户请求数据块的属性计算获得,且具体的计算方式属于现有技术在此不做赘述。上述技术方案中,所述存放预存数据的内存为内存池中取出的内存块。为了实现另一方面的目的本发明在所述步骤103)之后还包含当存放于内存中的数据块序列即将被用户取走时采用预测算法将位于磁盘上的预测数据块利用磁盘读取空闲时间提如存入内存的步骤。
上述技术方案中,所述预测算法采用智能预测算法,具体包含如下步骤将正在为用户终端提供服务的文件作为服务任务,每个服务任务包含多个内存块存放为各用户服务的预存数据块序列;创建一个智能数据调度工作线程,在该线程内不断扫描服务任务,查看每个服务任务包含的所有内存块上的预存数据块序列的使用情况,当发现某服务的数据块序列中的所有数据块即将被全部发送给用户时,主动从磁盘调度该块数据的下一块预存数据块序列到内存块中,且该调度操作仅仅在存放该服务任务的磁盘处于读取操作空闲时隙时才被执行。上述技术方案中,采用用户连续请求的数据块的次数作为判断所述预存数据块序列是否即将被全部发送给用户的依据。上述技术方案中,所述内存池还采用内存池检测释放步骤管理其包含的内存块资源,该步骤具体为 101-1)将位于网络文件发送服务器上的正在为用户终端提供服务的文件作为服务任务,以为每个服务任务的所有用户提供存储数据块序列的服务内存块为对象;101-2)针对每个服务的内存块分别设置一个最后访问时间的标记,当该服务内存块所存放的数据块序列中的某个数据块被用户访问时更新该标记时间;101-3)创建一个智能数据调度工作线程,利用智能数据调度工作线程,在检查每个服务任务的所有服务内存块是否需要调度下一块数据的同时,检查该内存块上一次被访问的时间是否已经超过配置的超时时间,如果发现该内存块已经超时则释放该块内存,以便使该块内存可以被其他服务任务使用;或当网络文件发送服务器需要调度对应某一服务任务的磁盘数据到内存中时,如果发现内存池中已经没有可以使用的空闲内存块时,需要检查该服务任务所有用户正在使用的所有内存块,将这些正在使用的内存块中的当前时间与上次访问时间差值最大的内存块资源释放,并使用该块内存填充新的磁盘数据。基于上述方法本发明还提供了一种缓解网络文件发送服务器的磁盘读取瓶颈的系统,其特征在于,所述系统包含内存申请分配及管理模块,用于申请若干固定大小的内存块组成内存池、从内存池选择内存块向用户的服务任务提供数据存储的服务,并实时管理内存池资源;第一预存数据块序列获取模块,用于基于用户的P2P类型的数据请求选中位于网络发送服务器的磁盘上且N倍于用户请求数据块的预存数据块序列;内存定位模块,用于当网络文件发送服务器收到用户的数据请求时从内存中定位用户所需的数据块的位置;和发送模块,用于将定位模块定位的数据发送给请求该数据块的用户;第二预测数据块序列获取模块,用于采用预测算法,基于第一预存数据块序列的使用情况动态实时预测用户尚未请求的位于磁盘上的对应该服务任务的数据作为预测数据块序列;检测模块,用于实时监测磁盘的空闲时隙,并采用空闲时隙将预测数据块序列由磁盘存入内存。上述技术方案中,所述第二预测数据块序列获取模块进一步包含
工作线程创建子模块,用于创建一个智能数据调度工作线程;扫描子模块,用于在智能数据调度工作线程内不断扫描网络文件发送服务器当前的服务任务,查看每个服务任务上的数据块序列的使用情况;和判断决策子模块,用于当发现某服务的预存数据块序列中的所有数据块即将被全部发送给用户时,主动从磁盘调度该块数据的下一块数据块或者下几块数据块到内存块中,且该调度操作仅仅在存放该服务任务的磁盘处于读取操作空闲时隙时才被执行。
与现有技术相比,本发明的技术优势在于I)本发明提供的N倍于用户的预存技术,根据数据被访问情况进行预测,将用户即将请求的数据提前调度到内存,当用户请求时可以快速命中;使用了该发明方法后,通过使用系统物理内存保存大块的磁盘数据,减少了磁盘读取操作的频度,2)智能调度技术,数据主动调度行为均发生在该块磁盘读写空闲时间,避免由于主动调度增加磁盘IO的压力;使用智能预测算法充分利用磁盘数据读取操作的空闲时间,达到磁盘读写操作行为“削峰填谷”的目的,从而大大降低了磁盘读取IO问题,同时提升了数据发送服务程序的处理能力,达到提高服务数据的吐出流量和极大改善终端用户的使用体验的效果。3)内存块高效利用技术,通过对正在使用的(即存放了数据块序列的)内存块增加访问时间标记,可以将未被使用的内存块快速回收到内存池等待再次被调用,提高内存池中各内存块的使用效率,从而大大提升位于内存块上的数据块序列的利用率,同时当内存池中的内存块被耗尽时,通过该技术可以将未被充分利用的内存块释放出来保存用户急需的数据,进一步提升内存块的利用率。针对内存池的概念属于已有技术,这里不再赘述。总之本发明提供一种解决多线程并发读取多个文件时造成IO瓶颈的算法,使用这种方法后,可以降低或者完全消除磁盘IO瓶颈的问题,同时提高数据发送服务程序的处理能力,从而达到提高系统服务能力和提升用户使用体验的目的。


图I是本发明所采用的缓解网络文件发送服务器的磁盘读取瓶颈的方法的流程图;图2 :本发明的内存块管理分配的具体工作流程图。
具体实施例方式下面结合附图及具体实施例对本发明作进一步的描述。本发明是提供一种解决多线程并发读取多个文件时造成IO瓶颈的算法,使用这种方法后,可以降低或者完全消除磁盘IO瓶颈的问题,同时提高数据发送服务程序的处理能力,从而达到提高系统服务能力和提升用户使用体验的目的。本发明的基本思想是将磁盘数据预先保存到系统物理内存中,同时充分利用磁盘数据读取操作的空闲时间,采用智能预测算法将终端用户尚未请求的数据预先从磁盘上调度到系统内存中保存,将终端用户可能发生的数据请求集中发送导致的磁盘数据读取操作拥塞高峰,分散到磁盘数据读取操作的空闲时间内来执行,从而达到降低磁盘IO的瓶颈的目的,同时由于数据请求会在内存中命中,还可以实现提高系统服务能力,提升用户使用体验的目的。为了实现这些目标,本发明从以下几个方面提供了技术保障。I、建立内存管理机制。当网络文件发送服务器的程序启动时进行内存资源申请,本发明预先申请若干大小固定的物理内存块,形成内存池,用来保存服务数据,其中这里所述的服务数据是指若干保存在网络文件发送服务器的磁盘上的文件,即该处的服务数据指当用户发送数据请求服务时需要从磁盘调入内存中的文件所对应的数据。所述内存池是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。该内存管理机制同时支持根据网络文件发送服务器的操作系统和物理内存的情况,动态调整申请的物理内存大小。综上所述内存池由若干内存块组成,保存数据块序列时使用的是从内存池中选中的某个内存块;而内存池是用来保存未被使用的内存块的,即当某个内存块被使用时,就会从内存池中拿走该内存块供用户使用;当内存块使用完毕时,会被放到内存池中,等待再次被使用。·2、建立数据调度机制。现有技术的终端用户向网络文件发送服务器的数据发送服务程序发送数据请求时,触发数据发送服务程序从磁盘读取数据。对于P2P类型的数据请求,终端用户请求的数据块大小一般都不会太大,并且具有数据请求频繁,请求的数据相对连续的行为特点。为了减少磁盘读取操作的频率,降低网络文件发送服务器CPU的wa值高导致的磁盘IO瓶颈,本发明的改进的技术方案为当网络文件发送服务器上的数据发送服务程序从磁盘上读取数据时,不是按照终端用户请求的数据块大小读取数据,而是一次读取N倍于终端用户请求的数据块数据量的预存数据块序列保存到某个内存块中,等待用户的下次数据请求。例如,假设终端用户请求服务任务A时,每次请求的数据块大小为lk,根据经验值我们设置N取值为64,将64k的数据块序列预先一次性存放在某个内存块中,而当需要读取这些数据块序列中的某数据块时首先确定该数据块序列的第一个数据块存放的起始地址的指针位置,依据第一个数据块序列的位置加偏移量的方式命中用户请求的数据块,比如所述数据块序列包含的第一个数据块存放的内存块的起始位置是1000,当用户要读取该数据块序列的第3个数据块时采用下式计算定位该数据块的起始位置指针为pos=1000+3*1024,然后从pos的位置指针起读取1024字节完成数据块的读取。采用这种起始位置指针加偏移量的方式终端用户后续的数据请求可以直接命中其所请求的数据块对应的位置指针,然后从内存中进行数据读取,这些命中内存块的数据请求将不会触发服务程序从磁盘读取数据。因此就减小了磁盘压力。采用上述方法后,可以在一定程度上降低磁盘的IO瓶颈,但是由于系统的物理内存是有一定限制的,当终端用户的数量增多以后,终端用户数据请求的分散性将导致数据发送服务程序对系统物理内存的需求激增,物理内存的不足将会导致预先调度到内存中的数据在未被充分使用以前,即被其他终端用户的数据请求将其替换掉,从而出现大家竞争内存使用的情况,当终端用户数量进一步增加以后,磁盘数据的内存调度机制的作用将被弱化,当终端用户的数据请求集中发送时,数据发送服务又会出现磁盘IO瓶颈的问题。为了解决这种问题,在增加采用内存存储数据机制的基础上,本发明方法又设计了利用磁盘读取操作空闲时间,将终端用户尚未请求的预测数据预先从磁盘上调度到内存池的某些内存块中进行存储的工作机制,其中所述预测数据可以采用但不仅限于智能预测算法获取,当采用智能预测算法时该工作机制的原理为I)将网络文件发送服务器正在向用户提供服务的每个文件定义为一个服务任务,每个服务任务包含与请求该服务任务的用户数量相同或不同数量的内存块存放各用户的预存数据块序列,比如η个用户同时请求同一块数据,那么仅需要一个内存块存放用户请求的数据块,如果各个用户请求的数据块互不相同时则所需内存块的数量与请求服务的用户数相同;其中,所述服务任务其实就是磁盘上的“文件”在程序中的映射,两者是一一对应的关系。由于使用到了内存,因此服务任务中的数据是磁盘文件数据的子集或者全集。 2)为每个存放预存数据块序列的各内存块增加一个最后访问时间的标记,当该块内存块存放的数据块序列中的任意一个数据块被访问时更新该标记时间;3)创建一个智能数据调度工作线程,在该线程内不断扫描网络文件发送服务器当前的服务任务,查看每个服务任务中各个内存块存放的数据块序列的使用情况。当发现内存块中所存放的数据块序列中的数据块即将被全部发送给终端用户时,主动从磁盘上调度该块数据的下一块数据到内存块中。为了避免该主动调度磁盘数据到内存机制引起的磁盘数据读写操作与终端用户的数据请求触发的磁盘读取数据操作同时发生,从而进一步加大磁盘IO读取的瓶颈的问题,该主动调度磁盘数据到内存机制的数据读取操作将不会在磁盘读取操作忙时进行,而是当线程发现该磁盘上没有数据读取操作时才会执行主动调度数据机制的磁盘数据读取的行为。3、建立内存资源释放机制。内存数据块的释放有两种方式。一种内存数据释放机制是利用智能数据调度工作线程,在检查每个服务任务的所有用户预存的数据块序列是否需要调度下一块数据的同时,检查该内存数据块上一次被访问的时间是否已经超过配置的超时时间,如果发现该内存块存储的数据块序列包含的数据块的最后一次的访问时刻与当前时刻的差值已经超时则释放该块内存,以便使该块内存可以被其他服务任务使用。另外一种内存数据块的释放机制是当系统需要调度磁盘数据到内存中时,如果发现内存池中已经没有可以使用的空闲内存块时,需要检查本服务任务中正在使用的所有内存块,将其中的当前时刻与该内存块存放的数据块序列包含的数据块上次被访问时刻差值最大的内存块资源释放,并使用该块内存填充新的磁盘数据。如图I所示,该图为本发明所采用的缓解网络文件发送服务器的磁盘读取瓶颈的方法的流程图,从图中可知该方法包含如下步骤步骤101,用户向网络文件发送服务器发送数据块请求指令;步骤102,网络文件发送服务器响应该指令,并从内存中查找定位用户所需的数据块,如果用户所需的数据块在内存中时,转入步骤104 ;否则进入下一个步骤;步骤103)确认用户请求的数据块并将数据量N倍于该用户的预存数据块序列从磁盘上定位,并从磁盘存入内存中,转入步骤104 ;其中,该步骤的定位采用如下公式确定用户请求的数据块在网络文件发送服务器的磁盘文件中的存储位置K的步骤,其中K为在所述文件中的相对排序值;依据终端用户平均每次向网络文件发送服务器发送连续的数据块请求的次数L确定N值的步骤,具体为N取值应大于等于L且为2的正整数次幂;依据下式确定预存数据块序列在磁盘文件中的具体位置预存数据块序列在磁盘中文件中的位置=INT (K/ (N*M)) * (N*M),INT为取整操作。其中,M为P2P协议用户每次请求数据块的长度,单位为字节。例如,假设N (即预存数据块大小)取值为64K,M (数据块大小)取值为1K,用户请求第72K的数据时按照上述公式计算预存数据块所在磁盘上的起始具体位置为INT (72/1*64) =1,然后1*64=64,最后将第64K数据开始的64K的数据作为预存数据块由磁盘存入内存。步骤104,用户从内存中读取数据块;
步骤105,当用户又有针对该服务任务的数据块请求时重复上述步骤102-步骤104,同时建立智能工作线程实时监测存放在内存中的数据块序列的使用情况,当发现数据块序列即将使用完毕时,采用预测算法将得到的预测数据块序列在磁盘的读取空闲时间调入内存;其中,所述预测数据块序列的长度与预存数据块序列的长度相同;步骤106,当用户再次发送针对该服务任务的数据块请求时,可以从内存存放的该任务的预测数据块序列中完成读取。改进方法一一次调度N倍用户请求数据块长度的预存数据块序列到内存中通过分析发现本次优化的P2P协议每次请求数据块长度为1K(该处的K为长度单位,其不同于步骤103)中所述的存储位置K)(即1024)字节,且终端用户平均每次向网络文件发送服务器会发送30-50次连续的数据请求,且这里的连续是指请求数据的连续性。根据这个特点,我们将N定义为正整数64,即我们基于该次用户的请求的数据将64倍于用户请求的数据量的预存数据块序列存放入内存块中,当用户又有请求时直接采用起始位置加偏移量的方式从内存块中命中数据块的位置指针,并进行数据读取操作,其中确定64值的理由如下I) 一次调度可以供用户请求几十次,而不需要再次从磁盘读取数据,减少磁盘压力;2) 一次读取磁盘可以减少磁盘磁头的频繁移动,充分利用磁头的每次移动,降低磁盘读写压力;3)将N定义为64而不是50,是考虑到64是2的整数次幂,这样在计算位置时比
较方便。综上所述,上述技术方案中所述的N值为大于I的正整数且最好取2的正整数次幂,N至少取用户可能连续请求数据的次数。改进方法二 加入智能预测技术在改进方法一中已经定义N为正整数64,智能预测线程不停检查已经预先存入内存块中的预存数据块序列的消费情况,当发现用户请求的数据块达到第50个时,即判定用户即将请求第65块以后的数据块,因此将第65块至第128块数据作为智能算法的预测数据块序列利用磁盘读写空闲时间调度入内存块中进行存储。这样当用户请求第65块至第128块数据时就可知直接采用起始值加偏移量的方式从内存块中命中数据。此处以50作为判定条件的原因有两个I)用户一般连续请求的数量在50上下,即依据用户一般连续请求数据块的次数确定数据块序列是否被即将使用完毕;2)由于调度下一块数据块序列(即预测数据块序列)需要在磁盘读写空闲时间完成,因此需要给调度预留一定的时间,避免数据尚未调度到内存时用户的请求已经到达;其中,利用磁盘读写空闲时间执行预测调度机制的实现还依据如下策略为每块磁盘设置一个计数器,并将计数器的初始值设置为0,当有磁盘读写时将给计数器的计数值加I;当磁盘读写操作结束时再对计数器执行减I操作;因此判断磁盘是否空闲的依据是看其对应的计数器的值是否为O。综上所述,本发明的基本思想是将磁盘数据预先保存到系统物理内存中,同时使用智能预测算法充分利用磁盘数据读取操作的空闲时间,达到磁盘读写操作行为“削峰填 谷”的目的,所谓“削峰填谷”是指程序对于数据的读写操作不是均衡的,当用户的请求同时达到时,由于程序采用了多线程,这些请求将同时提交给操作系统进行处理,此时会出现所谓的“峰”,当这个“峰”超过系统承受的极限时就会造成磁盘IO瓶颈,导致服务性能下降。当用户没有请求或者请求非常少时,操作系统就会非常空闲,此时就是所谓的“谷”,由于用户的行为是随机的,因此必然产生峰和谷,所谓的“削峰填谷”就是希望将在“峰”出现时执行的操作放到“谷”中去执行,这样操作系统就不会出现瓶颈,从而达到性能最优。改进方法三提高内存利用率,如图2所示对正在使用的内存块(即存放了预存数据块序列或预测数据块序列的内存块)添加了上次访问时间戳标记,每次有用户访问该块内存中存放的数据块序列中的某个数据块时更新其时间戳的时间,并设置超时时间为10秒,智能工作线程周期检查每块内存的时间戳,当发现该块内存中存放的数据块最后一次的的访问时间超过10秒时,立即释放该内存块,并将其放到内存池中备用。当智能线程检测到内存池空时,而某个服务任务需要从磁盘调度文件数据到内存中,此时查看该服务任务的所有内存块,将访问时间最久的内存块释放,用来保存需要新调度到内存的数据。本发明通过采用以上改进方法后,一方面充分利用了磁头的每一次移动,降低了磁盘读写的次数,另一方面充分利用了磁盘IO操作的空闲时间,从多方面入手,避免了由于磁盘IO读写瓶颈导致的操作系统CPU的wa高而影响服务流量的问题,并借助内存实现了上述方案,这样充分发挥了系统内存的作用,因此显著提升了系统的服务能力,同时也改善了用户的使用体验。采用本发明的技术方案后相对于现有技术具有显著的进步,具体描述如下假设包含网络文件发送服务器的缓存服务系统采用了上述的优化算法。在未使用该优化算法前,当终端用户数目达到到1000个,服务文件数目达到200个以后,网络文件发送服务系统吐出的服务流量可以达到250Mbps,此时该系统的CPU的wa的数值达到80%以上,出现了磁盘数据读取的瓶颈,网络文件发送服务器数据服务的吐出流量将无法得到继续提升。但是如果网络文件发送服务系统采用本发明的优化算法后,在同等终端用户规模的情况下,该系统的CPU的wa数值下降到10%以内,其服务流量提升到450Mbps以上。当进一步增加服务文件数目和终端用户数目后,系统的CPU的wa数值略有上升,缓存系统的服务吐出流量最大可以达到700Mbps以上。需要说明的是,以上介绍的本发明的实施方案而并非限制。本领域的技术人员应当理解,任何对本发明技术方案的修改或者等同替代都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围内。 ·
权利要求
1.一种缓解磁盘读取瓶颈的数据读取的方法,该方法用于网络文件发送服务器处理用户的P2P类型的数据请求,所述方法包含 步骤101)用户向网络文件发送服务器发出数据块请求; 步骤102)网络文件发送服务器将N倍于用户请求数据块长度的包含该数据块的预存数据块序列从磁盘存入内存中; 步骤103)网络文件发送服务器通过内存命中用户所需的数据块,并向用户发送该数据块; 其中,N为大于I的正整数。
2.根据权利要求I所述的缓解网络文件发送服务器的磁盘读取瓶颈数据读取的方法,其特征在于,步骤102)进一步包含 步骤102-1)用于确定用户请求的数据块在网络文件发送服务器的磁盘文件中的存储位置K的步骤,其中K为在所述文件中的相对排序值; 步骤102-2)用于依据终端用户平均每次向网络文件发送服务器发送连续的数据块请求的次数L确定N值的步骤,具体为N取值应大于等于L且为2的正整数次幂; 步骤102-3)用于依据下式确定预存数据块序列在磁盘文件中的具体位置 预存数据块序列在磁盘中文件中的位置=INT (K/ (N*M)) * (N*M),其中INT为取整操作; 其中,M为P2P协议用户每次请求数据块的长度,单位为字节。
3.根据权利要求I所述的缓解网络文件发送服务器的磁盘读取瓶颈数据读取的方法,其特征在于,当在内存中命中用户所需的数据块时采用如下公式计算该数据块在内存中的具体位置 首先,根据用户请求的数据块序号确定数据块所在的数据块序列的第一个数据块在内存中的存放位置; 然后,依据数据块序列的起始位置加偏移量的方式命中用户请求的数据块; 其中,所述偏移量由用户请求数据块的属性获得。
4.根据权利要求I所述的缓解网络文件发送服务器的磁盘读取瓶颈数据读取的方法,其特征在于,所述存放预存数据的内存为内存池中取出的内存块。
5.根据权利要求4所述的缓解网络文件发送服务器的磁盘读取瓶颈数据读取的方法,其特征在于,所述步骤103)之后还包含当存放于内存中的数据块序列即将被用户取走时采用预测算法将位于磁盘上的预测数据块利用磁盘读取空闲时间提前存入内存的步骤。
6.根据权利要求5所述的缓解网络文件发送服务器的磁盘读取瓶颈数据读取的方法,其特征在于,所述预测算法采用智能预测算法,具体包含如下步骤 将正在为用户终端提供服务的文件作为服务任务,每个服务任务包含多个内存块存放为各用户服务的预存数据块序列; 创建一个智能数据调度工作线程,在该线程内不断扫描服务任务,查看每个服务任务包含的所有内存块上的预存数据块序列的使用情况,当发现某服务的数据块序列中的所有数据块即将被全部发送给用户时,主动从磁盘调度该块数据的下一块预存数据块序列到内存块中,且该调度操作仅仅在存放该服务任务的磁盘处于读取操作空闲时隙时才被执行。
7.根据权利要求6所述的缓解网络文件发送服务器的磁盘读取瓶颈数据读取的方法,其特征在于,采用用户连续请求的数据块的次数作为判断所述预存数据块序列是否即将被全部发送给用户的依据。
8.根据权利要求7所述的缓解网络文件发送服务器的磁盘读取瓶颈数据读取的方法,其特征在于,所述内存池还采用内存池检测释放步骤管理其包含的内存块资源,该步骤具体为 101-1)将位于网络文件发送服务器上的正在为用户终端提供服务的文件作为服务任务,以为每个服务任务的所有用户提供存储数据块序列的服务内存块为对象; 101-2)针对每个服务的内存块分别设置一个最后访问时间的标记,当该服务内存块所存放的数据块序列中的某个数据块被用户访问时更新该标记时间; 101-3)创建一个智能数据调度工作线程,利用智能数据调度工作线程,在检查每个服务任务的所有服务内存块是否需要调度下一块数据的同时,检查该内存块上一次被访问的时间是否已经超过配置的超时时间,如果发现该内存块已经超时则释放该块内存,以便使该块内存可以被其他服务任务使用; 或当网络文件发送服务器需要调度对应某一服务任务的磁盘数据到内存中时,如果发现内存池中已经没有可以使用的空闲内存块时,需要检查该服务任务所有用户正在使用的所有内存块,将这些正在使用的内存块中的当前时间与上次访问时间差值最大的内存块资源释放,并使用该块内存填充新的磁盘数据。
9.一种缓解磁盘读取瓶颈的数据读取的系统,其特征在于,所述系统包含 内存申请分配及管理模块,用于申请若干固定大小的内存块组成内存池、从内存池选择内存块向用户的服务任务提供数据存储的服务,并实时管理内存池资源; 第一预存数据块序列获取模块,用于基于用户的P2P类型的数据请求选中位于网络发送服务器的磁盘上且N倍于用户请求数据块的预存数据块序列; 内存定位模块,用于当网络文件发送服务器收到用户的数据请求时从内存中定位用户所需的数据块的位置;和 发送模块,用于将定位模块定位的数据发送给请求该数据块的用户; 第二预测数据块序列获取模块,用于采用预测算法,基于第一预存数据块序列的使用情况动态实时预测用户尚未请求的位于磁盘上的对应该服务任务的数据作为预测数据块序列; 检测模块,用于实时监测磁盘的空闲时隙,并采用空闲时隙将预测数据块序列由磁盘存入内存。
10.根据权利要求6所述的缓解磁盘读取瓶颈的数据读取的系统,其特征在于,所述第二预测数据块序列获取模块进一步包含 工作线程创建子模块,用于创建一个智能数据调度工作线程; 扫描子模块,用于在智能数据调度工作线程内不断扫描网络文件发送服务器当前的服务任务,查看每个服务任务上的数据块序列的使用情况;和 判断决策子模块,用于当发现某服务的预存数据块序列中的所有数据块即将被全部发送给用户时,主动从磁盘调度该块数据的下一块数据块或者下几块数据块到内存块中,且该调度操作仅仅在存放该服务任务的磁盘处于读取操作空闲时隙时才被执行。
全文摘要
本发明提供了一种缓解磁盘读取瓶颈的数据读取的方法及系统,该方法用于网络文件发送服务器处理用户的P2P类型的数据请求,所述方法包含步骤101)用户向网络文件发送服务器发出数据块请求;步骤102)网络文件发送服务器将N倍于用户请求数据块长度的包含该数据块的预存数据块序列从磁盘存入内存中;步骤103)网络文件发送服务器通过内存命中用户所需的数据块,并向用户发送该数据块;其中,N为大于1的正整数。当存放于内存中的数据块序列即将被用户取走时采用预测算法将位于磁盘上的预测数据块利用磁盘读取空闲时间提前存入内存的步骤。本发明采用以上方法后,一方面充分利用了磁头的每次移动,降低了磁盘读写次数,另一方面利用了磁盘IO操作的空闲时间。
文档编号H04L29/08GK102904923SQ20121021307
公开日2013年1月30日 申请日期2012年6月21日 优先权日2012年6月21日
发明者鲁冬林, 董博 申请人:华数传媒网络有限公司, 北京东方网信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1