CN106527959A - 刷新磁盘输入输出请求的处理方法及设备 - Google Patents
刷新磁盘输入输出请求的处理方法及设备 Download PDFInfo
- Publication number
- CN106527959A CN106527959A CN201510572319.6A CN201510572319A CN106527959A CN 106527959 A CN106527959 A CN 106527959A CN 201510572319 A CN201510572319 A CN 201510572319A CN 106527959 A CN106527959 A CN 106527959A
- Authority
- CN
- China
- Prior art keywords
- output request
- input output
- disk
- refreshing
- disk input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种刷新磁盘输入输出请求的处理方法及设备,通过判断所述到来的刷新磁盘输入输出请求是否满足预设条件,及将落地的磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,可以根据判断结果能够快速处理刷新磁盘输入输出请求,高效使用CPU,满足在缓存存在场景下大量的磁盘写输入输出请求与刷新磁盘输入输出请求并发时,仍然能够高效的处理刷新磁盘输入输出请求与磁盘写输入输出请求,实现磁盘输入输出请求处理模块高效率低功耗的处理刷新磁盘输入输出请求。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种刷新磁盘输入输出请求的处理方法及设备
背景技术
在虚拟化技术的(Xen)虚拟机环境的宿主机(domain0)中,当客户机虚拟机(domainU)发来的磁盘输入输出请求(IO)经过domain0的磁盘输入输出请求处理模块(如TDC)继续处理时,需要能够正确处理刷新磁盘输入输出请求(Flush IO),处理方法为:当一个刷新磁盘输入输出请求来临时,之前未完成的磁盘写输入输出请求(write IO)必须全部完成后,才能够处理这个刷新磁盘输入输出请求。
刷新磁盘输入输出请求分为带数据与不带数据2种,处理刷新磁盘输入输出请求时,对带数据的刷新磁盘输入输出请求,需要将待写入的磁盘输入输出请求数据处理完,才能向虚拟机返回刷新磁盘输入输出请求处理完毕,对不带数据的刷新磁盘输入输出请求,则直接向虚拟机返回成功即可。
在一个刷新磁盘输入输出请求来临且未处理完成时,之后到来的磁盘写输入输出请求仍然能够继续处理。在一个刷新磁盘输入输出请求未处理完成时,允许更多的刷新磁盘输入输出请求继续到达模块。一个刷新磁盘输入输出请求开始处理的必要条件是:之前的所有磁盘写输入输出请求全部处理完成且返回虚拟机;之前的所有刷新磁盘输入输出请求全部处理完成且返回虚拟机。
若宿主机的磁盘输入输出请求处理模块支持缓存(cache),将会导致磁盘输入输出请求处理模块中会有数以万计的磁盘写输入输出请求和刷新磁盘输入输出请求都处于未完成状态(飞行状态)。
现有的刷新磁盘输入输出请求处理方式有如下2个明显的问题:
问题一:当刷新磁盘输入输出请求到达时,需要遍历包含全部的飞行中磁盘输入输出请求的链表(OngoingIOList),使用链表中的磁盘写输入输出请求个数以求得上一个刷新磁盘输入输出请求与当前的刷新磁盘输入输出请求之间的磁盘写输入输出请求个数即累计间隙数值;
问题二:当磁盘写输入输出请求完成时,需要遍历包含全部刷新磁盘输入输出请求的链表(FlushIOList),以降低刷新磁盘输入输出请求的等待时间,试图触发刷新磁盘输入输出请求的处理。
上述问题一要求飞行中的磁盘输入输出请求个数不能过大,上述问题二要求刷新磁盘输入输出请求个数不能过大。一旦上述包含全部的飞行中磁盘输入输出请求的链表和包含全部刷新磁盘输入输出请求的链表数目开始从几十上升到数百、数千、数万时,由于遍历链表这种O(N)的算法复杂度,将会导致最基础的磁盘输入输出请求处理流程损耗大量的CPU在计算累计间隙数值上,而且处理时间还会增加。
所以,上述现有的处理方式使得核心的磁盘输入输出请求流程在大量刷新磁盘输入输出请求开始出现时,性能出现不必要的损耗,尤其随着缓存技术的出现,缓存回写模式(writeback)模式下缓存大量磁盘写输入输出请求更会导致性能的快速下降。
发明内容
本申请的一个目的是提供一种刷新磁盘输入输出请求的处理方法及设备,能够解决在大量的磁盘写输入输出请求与刷新磁盘输入输出请求并发时,处理刷新磁盘输入输出请求的效率下降的问题。
一种刷新磁盘输入输出请求的处理方法,其中,该方法包括:
在每一个磁盘输入输出请求到来时,为每个磁盘输入输出请求递增地分配唯一的标识号,其中,所述磁盘输入输出请求包括磁盘写输入输出请求和刷新磁盘输入输出请求中的任一种;
判断所述到来的磁盘输入输出请求的种类,
若为刷新磁盘输入输出请求,则判断所述到来的刷新磁盘输入输出请求是否满足预设条件,根据判断结果确定是否处理所述到来的刷新磁盘输入输出请求。
进一步的,上述方法中,判断所述到来的刷新磁盘输入输出请求是否满足预设条件,根据判断结果确定是否处理所述到来的刷新磁盘输入输出请求包括:
判断所述到来的刷新磁盘输入输出请求是否携带数据,
若携带数据,将实时磁盘写输入输出请求的累计个数记录为原始累计个数后,将实时磁盘写输入输出请求的累计个数更新为1;若没有携带数据,将实时磁盘写输入输出请求的累计个数记录为原始累计个数后,将实时磁盘写输入输出请求的累计个数更新为0,其中,所述实时磁盘写输入输出请求的累计个数每次记录从上一个刷新磁盘输入输出请求至当前时刻所到达的磁盘写输入输出请求的累计个数;
根据所述原始累计个数确定是否处理所述到来的刷新磁盘输入输出请求。
进一步的,上述方法中,根据所述原始累计个数确定是否处理所述到来的刷新磁盘输入输出请求,包括:
判断所述原始累计个数是否为0,且此时键码键值关联容器是否为空,其中,所述键码键值关联容器用于存放刷新磁盘输入输出请求的标识号和对应的节点信息,每个节点信息包括一个刷新磁盘输入输出请求和该刷新磁盘输入输出请求的累计间隙数,所述累计间隙数的初始值为所述原始累计个数;
若所述原始累计个数为0,且此时键码键值关联容器为空,立即处理该刷新磁盘输入输出请求;
若所述原始累计个数不为0,或此时键码键值关联容器不为空,则将该到来的刷新磁盘输入输出请求的标识号和对应的节点信息插入所述键码键值关联容器中。
进一步的,上述方法中,所述键码键值关联容器为红黑树容器。
进一步的,上述方法中,判断所述到来的磁盘输入输出请求的种类之后,还包括:
若为磁盘写输入输出请求,将所述到来的磁盘写输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号比较,
若该磁盘写输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则将所述实时磁盘写输入输出请求的累计个数加1;
若该磁盘写输入输出请求的标识号小于上一个刷新磁盘输入输出请求的标识号,则从所述键码键值关联容器中找到恰大于该磁盘写输入输出请求的标识号的刷新磁盘输入输出请求,并将该找到的刷新磁盘输入输出请求的累计间隙数加1。
进一步的,上述方法中,根据判断结果确定是否处理所述到来的刷新磁盘输入输出请求之后,还包括:
当一个磁盘输入输出请求的数据成功转发到实际存储介质中后,将该磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,根据比较结果处理该磁盘输入输出请求,其中,磁盘输入输出请求包括磁盘写输入输出请求或带数据的刷新磁盘输入输出请求。
进一步的,上述方法中,将该磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,根据比较结果处理该磁盘输入输出请求,包括:
若该磁盘输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则将实时磁盘写输入输出请求的累计个数减1。
进一步的,上述方法中,将该磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,根据比较结果处理该磁盘输入输出请求,还包括:
若该磁盘输入输出请求的标识号小于等于上一个刷新磁盘输入输出请求的标识号,则在所述键码键值关联容器中查找恰大于该磁盘输入输出请求的标识号的刷新磁盘输入输出请求,并将该找到的刷新磁盘输入输出请求的累计间隙数减1后,判断该找到的刷新磁盘输入输出请求的当前的累计间隙数是否为0,
如果为0,判断该找到的刷新磁盘输入输出请求的标识号是否是所述键码键值关联容器中最小的标识号,
若是,处理该找到的刷新磁盘输入输出请求后,从键码键值关联容器中删除该找到的刷新磁盘输入输出请求的标识号和对应的节点信息;
重复如下步骤,直至查找到的刷新磁盘输入输出请求的累计间隙数大于0:
查找所述键码键值关联容器中标识号紧随于最近删除的刷新磁盘输入输出请求的标识号之后的刷新磁盘输入输出请求,判断该查找到的刷新磁盘输入输出请求的累计间隙数是否也为0,若为0,则处理该查找到的刷新磁盘输入输出请求后,从所述键码键值关联容器中删除该查找到的刷新磁盘输入输出请求的标识号和对应的节点信息。
根据本申请的一个方面,提供了一种刷新磁盘输入输出请求的处理设备,其中,该设备包括:
分配标识号装置,用于在每一个磁盘输入输出请求到来时,为每个磁盘输入输出请求递增地分配唯一的标识号,其中,所述磁盘输入输出请求包括磁盘写输入输出请求和刷新磁盘输入输出请求中的任一种;
种类判断装置,用于判断所述到来的磁盘输入输出请求的种类,
条件判断装置,用于若为刷新磁盘输入输出请求,则判断所述到来的刷新磁盘输入输出请求是否满足预设条件,根据判断结果确定是否处理所述到来的刷新磁盘输入输出请求。
进一步的,上述设备中,所述条件判断装置,用于判断所述到来的刷新磁盘输入输出请求是否携带数据,
若携带数据,将实时磁盘写输入输出请求的累计个数记录为原始累计个数后,将实时磁盘写输入输出请求的累计个数更新为1;若没有携带数据,将实时磁盘写输入输出请求的累计个数记录为原始累计个数后,将实时磁盘写输入输出请求的累计个数更新为0,其中,所述实时磁盘写输入输出请求的累计个数每次记录从上一个刷新磁盘输入输出请求至当前时刻所到达的磁盘写输入输出请求的累计个数;
根据所述原始累计个数确定是否处理所述到来的刷新磁盘输入输出请求。
进一步的,上述设备中,所述条件判断装置,用于判断所述原始累计个数是否为0,且此时键码键值关联容器是否为空,其中,所述键码键值关联容器用于存放刷新磁盘输入输出请求的标识号和对应的节点信息,每个节点信息包括一个刷新磁盘输入输出请求和该刷新磁盘输入输出请求的累计间隙数,所述累计间隙数的初始值为所述原始累计个数;
若所述原始累计个数为0,且此时键码键值关联容器为空,立即处理该刷新磁盘输入输出请求;
若所述原始累计个数不为0,或此时键码键值关联容器不为空,则将该到来的刷新磁盘输入输出请求的标识号和对应的节点信息插入所述键码键值关联容器中。
进一步的,上述设备中,所述键码键值关联容器为红黑树容器。
进一步的,上述设备中,所述设备还包括:
磁盘写输入输出请求处理装置,用于若为磁盘写输入输出请求,将所述到来的磁盘写输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号比较,
若该磁盘写输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则将所述实时磁盘写输入输出请求的累计个数加1;
若该磁盘写输入输出请求的标识号小于上一个刷新磁盘输入输出请求的标识号,则从所述键码键值关联容器中找到恰大于该磁盘写输入输出请求的标识号的刷新磁盘输入输出请求,并将该找到的刷新磁盘输入输出请求的累计间隙数加1。
进一步的,上述设备中,所述设备还包括:
标识号比较装置,用于当一个磁盘输入输出请求的数据成功转发到实际存储介质中后,将该磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,根据比较结果处理该磁盘输入输出请求,其中,磁盘输入输出请求包括磁盘写输入输出请求或带数据的刷新磁盘输入输出请求。
进一步的,上述设备中,所述标识号比较装置,用于若该磁盘输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则将实时磁盘写输入输出请求的累计个数减1。
进一步的,上述设备中,所述标识号比较装置,还用于若该磁盘输入输出请求的标识号小于等于上一个刷新磁盘输入输出请求的标识号,则在所述键码键值关联容器中查找恰大于该磁盘输入输出请求的标识号的刷新磁盘输入输出请求,并将该找到的刷新磁盘输入输出请求的累计间隙数减1后,判断该找到的刷新磁盘输入输出请求的当前的累计间隙数是否为0,
如果为0,判断该找到的刷新磁盘输入输出请求的标识号是否是所述键码键值关联容器中最小的标识号,
若是,处理该找到的刷新磁盘输入输出请求后,从键码键值关联容器中删除该找到的刷新磁盘输入输出请求的标识号和对应的节点信息;
重复查找所述键码键值关联容器中标识号紧随于最近删除的刷新磁盘输入输出请求的标识号之后的刷新磁盘输入输出请求,判断该查找到的刷新磁盘输入输出请求的累计间隙数是否也为0,若为0,则处理该查找到的刷新磁盘输入输出请求后,从所述键码键值关联容器中删除该查找到的刷新磁盘输入输出请求的标识号和对应的节点信息,直至查找到的刷新磁盘输入输出请求的累计间隙数大于0。
与现有技术相比,本申请通过判断所述到来的刷新磁盘输入输出请求是否满足预设条件,可以根据判断结果能够快速处理刷新磁盘输入输出请求,高效使用CPU,满足在缓存存在场景下大量的磁盘写输入输出请求与刷新磁盘输入输出请求并发时,仍然能够高效的处理刷新磁盘输入输出请求与磁盘写输入输出请求,实现磁盘输入输出请求处理模块高效率低功耗的处理刷新磁盘输入输出请求。
进一步的,本申请通过判断所述到来的刷新磁盘输入输出请求是否携带数据,能够根据判断结果更精确确定是否处理所述到来的刷新磁盘输入输出请求。
进一步的,本申请通过判断是否满足所述原始累计个数为0,且此时键码键值关联容器为空,可以高效地判断地当前这个刷新磁盘输入输出请求是否可以立即执行。
进一步的,本申请通过将所述到来的磁盘写输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号比较,可以精确计算出所述到来的磁盘输入输出请求种类是磁盘写输入输出请求,对未来刷新磁盘输入输出请求的影响。
进一步的,本申请通过将磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,能够精确判断出落地的磁盘输入输出请求是否会触发其他刷新磁盘输入输出请求的完成,满足在缓存存在场景下大量的磁盘写输入输出请求与刷新磁盘输入输出请求并发时,仍然能够高效的处理刷新磁盘输入输出请求与磁盘写输入输出请求,从而实现磁盘输入输出请求处理模块高效率低功耗的处理刷新磁盘输入输出请求。
进一步,本申请当磁盘写输入输出请求或者刷新磁盘输入输出请求完成时,通过在键码键值关联容器中查找恰大于该磁盘输入输出请求的标识号的刷新磁盘输入输出请求,可以O(logN)的算法复杂度处理,其中N是指刷新磁盘输入输出请求的数目,而不是指所有磁盘输入输出请求的数目,可以提高处理速度。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种刷新磁盘输入输出请求的处理方法的流程图;
图2示出本申请一个优选实施例的刷新磁盘输入输出请求的处理方法流程图;
图3示出本申请另一个优选实施例的刷新磁盘输入输出请求的处理方法流程图;
图4示出本申请再一个优选实施例的刷新磁盘输入输出请求的处理方法流程图;
图5示出本申请又一个优选实施例的刷新磁盘输入输出请求的处理方法流程图;
图6示出本申请一具体的应用实施例的原理流程图;
图7示出本申请另一具体的应用实施例的原理流程图;
图8示出根据本申请另一个方面的一种刷新磁盘输入输出请求的处理设备的结构图;
图9示出本申请一个优选实施例的刷新磁盘输入输出请求的处理设备的结构图;
图10示出本申请另一个优选实施例的刷新磁盘输入输出请求的处理设备的结构图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本发明作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
根据本申请的一个方面,如图1所示,提供一种刷新磁盘输入输出请求的处理方法,包括:
步骤S1,在每一个磁盘输入输出请求(磁盘输入输出请求)到来时,为每个磁盘输入输出请求递增地分配唯一的标识号,其中所述磁盘输入输出请求包括磁盘写输入输出请求(磁盘写输入输出请求)和刷新磁盘输入输出请求中的任一种;在此,通常磁盘输入输出请求包括磁盘写输入输出请求、磁盘读输入输出请求(read IO)和刷新磁盘输入输出请求,由于本申请中磁盘读输入输出请求与刷新磁盘输入输出请求处理无关,所以这里可以忽略磁盘读输入输出请求,所述刷新磁盘输入输出请求用于将缓存中的写数据最终存储到实际存储介质中;
步骤S2,判断所述到来的磁盘输入输出请求的种类,
步骤S3,若所述到来的磁盘输入输出请求种类是刷新磁盘输入输出请求,则判断所述到来的刷新磁盘输入输出请求是否满足预设条件,根据判断结果确定是否处理所述到来的刷新磁盘输入输出请求。在此,通过判断所述到来的刷新磁盘输入输出请求是否满足预设条件,可以根据判断结果能够快速处理刷新磁盘输入输出请求,高效使用CPU,满足在缓存存在场景下大量的磁盘写输入输出请求与刷新磁盘输入输出请求并发时,仍然能够高效的处理刷新磁盘输入输出请求与磁盘写输入输出请求,实现磁盘输入输出请求处理模块高效率低功耗的处理刷新磁盘输入输出请求。
本申请刷新磁盘输入输出请求的处理方法一优选的实施例中,如图2所示,步骤S3,若所述到来的磁盘输入输出请求种类是刷新磁盘输入输出请求,则判断所述到来的刷新磁盘输入输出请求是否满足预设条件,根据判断结果确定是否处理所述到来的刷新磁盘输入输出请求,包括:
步骤S31,判断所述到来的刷新磁盘输入输出请求是否携带数据;
步骤S32,若携带数据,将实时磁盘写输入输出请求的累计个数(PendingsFromLastFlush)记录为原始累计个数后,并将实时磁盘写输入输出请求的累计个数更新为1后,转到步骤S34,其中,所述实时磁盘写输入输出请求的累计个数每次记录从上一个刷新磁盘输入输出请求至当前时刻所到达的磁盘写输入输出请求的累计个数;在此,由于磁盘输入输出请求处理模块(如TDC)每收到1个磁盘输入输出请求都有独一无二的标识号,这个标识号是可由1开始递增,所以上一个刷新磁盘输入输出请求的标识号(LastFlushIOId)是个变量,上一个刷新磁盘输入输出请求的标识号可初始化为0,即如果一直没有刷新磁盘输入输出请求,则上一个刷新磁盘输入输出请求的标识号一直是0;
步骤S33,若没有携带数据,将实时磁盘写输入输出请求的累计个数记录为原始累计个数后,将实时磁盘写输入输出请求的累计个数更新为0后,转到步骤S34;在此,将实时磁盘写输入输出请求的累计个数重新赋值为1表示当前的刷新磁盘输入输出请求也必须把数据下发成功;
步骤S34,根据所述原始累计个数确定是否处理所述到来的刷新磁盘输入输出请求,从而根据所述原始累计个数能够更精确、快速处理刷新磁盘输入输出请求,高效使用CPU。
本申请刷新磁盘输入输出请求的处理方法一优选的实施例中,如图3所示,步骤S34,根据所述原始累计个数确定是否处理所述到来的刷新磁盘输入输出请求,包括:
步骤S341,判断所述原始累计个数是否为0,且此时键码键值关联容器是否为空,即没有未完成的刷新磁盘输入输出请求,其中,所述键码键值关联容器用于存放刷新磁盘输入输出请求的标识号和对应的节点信息,每个节点信息包括该刷新磁盘输入输出请求和该刷新磁盘输入输出请求的累计间隙数(gap),所述累计间隙数的初始值为所述原始累计个数,具体来说,可在键码键值关联容器存放各个刷节点(FlushNode),每个刷节点用于描述一个刷新磁盘输入输出请求的标识号和对应的节点信息,每个节点信息可包括2个成员:累计间隙数和磁盘输入输出请求指针,累计间隙数就是这个刷新磁盘输入输出请求与它前面的刷新磁盘输入输出请求之间,还有多少个未完成的磁盘写输入输出请求,而磁盘输入输出请求指针则指向所属的刷新磁盘输入输出请求;
步骤S342,若所述原始累计个数为0,且此时键码键值关联容器为空,在此,这2个条件用于判断当前这个刷新磁盘输入输出请求是否可以立即执行,即这2个条件均为真时,则立即处理该刷新磁盘输入输出请求,比如,如果未携带数据,直接返回执行成功,如果携带数据则立即下发,通过该2个条件的判断,可实现刷新磁盘输入输出请求到达时,以O(1)的算法复杂度快速处理;
步骤S343,若所述原始累计个数不为0,或此时键码键值关联容器不为空,即2个条件中只要有其中一个条件不满足,则将该到来的刷新磁盘输入输出请求的标识号和对应的节点信息插入所述键码键值关联容器中。在此,需要在所述键码键值关联容器中构造一个新的刷节点结构体,该刷节点的累计间隙数的原始值记为所述原始累计个数,即步骤S32、步骤S33中更新前的实时磁盘写输入输出请求的累计个数。具体可以设置好该刷新磁盘输入输出请求的指针,以刷新磁盘输入输出请求的标识号作为键码,将刷节点插入所述键码键值关联容器中后,流程处理完毕。本实施例中通过判断是否满足所述原始累计个数为0,且此时键码键值关联容器为空,可以高效地判断当前这个刷新磁盘输入输出请求是否可以立即执行。
本申请刷新磁盘输入输出请求的处理方法一优选的实施例中,所述键码键值关联容器为红黑树容器。在此,红黑树可作为一个存放刷新磁盘输入输出请求的键码-键值(key-value)关联容器,它的键码可以是刷新磁盘输入输出请求的标识号,而键值则是刷节点。另外,所述键码键值关联容器还可替换为任何支持按元素键码大小遍历的、时间复杂度在O(logn)以内的、可查询刚好大于给定键码元素的容器。
本申请刷新磁盘输入输出请求的处理方法一优选的实施例中,如图4所示,步骤S2,判断所述到来的磁盘输入输出请求种类,之后还包括:
步骤S4,若所述到来的磁盘输入输出请求种类是磁盘写输入输出请求,则将所述到来的磁盘写输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号比较,
步骤S5,若该磁盘写输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则将实时磁盘写输入输出请求的累计个数加1后,刷新磁盘输入输出请求的相关即逻辑处理完毕;
步骤S6,若该磁盘写输入输出请求的标识号小于上一个刷新磁盘输入输出请求的标识号,则从所述键码键值关联容器中找到恰大于该磁盘写输入输出请求的标识号的刷新磁盘输入输出请求,并将该刷新磁盘输入输出请求的累计间隙数加1。在此,不存在该磁盘写输入输出请求的标识号等于上一个刷新磁盘输入输出请求的标识号的场景。正常情况下,不会有该磁盘写输入输出请求的标识号小于上一个刷新磁盘输入输出请求的标识号步骤的执行,只有多磁盘输入输出请求的写输入输出请求和刷新磁盘输入输出请求并发执行时,才有可能走到本步骤。例如,可从红黑树中找到大于磁盘写输入输出请求的标识号的刷节点,将其累计间隙数值加1后,刷新磁盘输入输出请求相关逻辑即处理完毕。在此,通过将所述到来的磁盘写输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号比较,可以精确计算出所述到来的磁盘输入输出请求种类是磁盘写输入输出请求,对未来刷新磁盘输入输出请求的影响。
当一个磁盘输入输出请求的数据落地后(由TDC模块成功转发到实际存储介质中),可称为磁盘输入输出请求处理完成,这里包括磁盘读输入输出请求、磁盘写输入输出请求、带数据的刷新磁盘输入输出请求。其中,当磁盘写输入输出请求、带数据的刷新磁盘输入输出请求完成时,需要判断是否触发到刷新磁盘输入输出请求的处理,本申请刷新磁盘输入输出请求的处理方法一优选的实施例中,根据判断结果确定是否处理所述到来的刷新磁盘输入输出请求之后,还包括:
步骤S7,当一个磁盘输入输出请求的数据成功转发到实际存储介质中(落地)后,将该磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,根据比较结果处理该磁盘输入输出请求,其中,磁盘输入输出请求包括磁盘写输入输出请求或带数据的刷新磁盘输入输出请求。在此,本实施例通过将磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,能够精确判断出落地的磁盘输入输出请求是否会触发其他刷新磁盘输入输出请求的完成,满足在缓存存在场景下大量的磁盘写输入输出请求与刷新磁盘输入输出请求并发时,仍然能够高效的处理刷新磁盘输入输出请求与磁盘写输入输出请求,从而实现磁盘输入输出请求处理模块高效率低功耗的处理刷新磁盘输入输出请求。
本申请刷新磁盘输入输出请求的处理方法一优选的实施例中,步骤S7,将该磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,根据比较结果处理该磁盘输入输出请求,包括:
步骤S71,若磁盘输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则将实时磁盘写输入输出请求的累计个数减1后,从而为后续的刷新磁盘输入输出请求触发流程作好准备。在此,磁盘输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则说明这个磁盘输入输出请求是磁盘写输入输出请求。
本申请刷新磁盘输入输出请求的处理方法一优选的实施例中,如图5所示,步骤S7,将该磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,根据比较结果处理该磁盘输入输出请求,还包括:
步骤S72,若该磁盘输入输出请求的标识号小于等于上一个刷新磁盘输入输出请求的标识号,则在键码键值关联容器中查找恰大于该磁盘输入输出请求的标识号的刷新磁盘输入输出请求,并将该找到的刷新磁盘输入输出请求的累计间隙数减1后,判断该找到的刷新磁盘输入输出请求的当前的累计间隙数是否为0,如果为0,转到步骤S73,如果不为0,转到步骤S77,在此,若该磁盘输入输出请求的标识号小于上一个刷新磁盘输入输出请求的标识号,则说明该磁盘输入输出请求为磁盘写输入输出请求,若该磁盘输入输出请求的标识号等于上一个刷新磁盘输入输出请求的标识号,则说明该磁盘输入输出请求为带数据的刷新磁盘输入输出请求,磁盘写输入输出请求或者刷新磁盘输入输出请求完成时,通过在键码键值关联容器中查找恰大于该磁盘输入输出请求的标识号的刷新磁盘输入输出请求,可以O(logN)的算法复杂度处理,其中N是指刷新磁盘输入输出请求的数目,而不是指所有磁盘输入输出请求的数目,所以处理速度很快;
步骤S73,判断该找到的刷新磁盘输入输出请求的标识号是否是所述键码键值关联容器中最小的标识号,若是,转到步骤S74,若不是,转到步骤S76,
步骤S74,这个刷新磁盘输入输出请求就是所有未完成的刷新磁盘输入输出请求中的第1个磁盘输入输出请求,处理该找到的刷新磁盘输入输出请求后,从键码键值关联容器中删除该找到的刷新磁盘输入输出请求的标识号和对应的节点信息,在此,可以正常处理该刷新磁盘输入输出请求,例如,如果不携带数据,则直接向虚拟机返回成功;如果携带数据,则将数据下发到存储介质落地,既然已经处理完毕,就从键码键值关联容器中删除这个刷节点;
步骤S75,重复如下步骤,直至紧随于最近删除的刷新磁盘输入输出请求的标识号之后的刷新磁盘输入输出请求的累计间隙数大于0,流程结束:
查找所述键码键值关联容器中标识号紧随于最近删除的刷新磁盘输入输出请求,判断查找到的刷新磁盘输入输出请求的标识号之后的刷新磁盘输入输出请求的累计间隙数是否也为0,也满足了触发条件,若为0,则处理该找到的刷新磁盘输入输出请求后,从键码键值关联容器中删除该找到的刷新磁盘输入输出请求的标识号和对应的节点信息;
步骤S76,如果该找到的刷新磁盘输入输出请求的标识号不是所述键码键值关联容器中最小的标识号,则说明这个磁盘输入输出请求虽然导致它之后的刷新磁盘输入输出请求的累计间隙数值降为0,但是由于这个刷新磁盘输入输出请求前还有未完成的刷新磁盘输入输出请求,所以刷新磁盘输入输出请求并不能执行;
步骤S77,若找到的刷新磁盘输入输出请求的标识号之后的刷新磁盘输入输出请求的累计间隙数不为0,则没有触发其他刷新磁盘输入输出请求的执行,流程结束。
详细的,本申请总体流程包含两部分:磁盘输入输出请求到达TDC后flush相关逻辑的处理流程,如果是写磁盘输入输出请求需要计算出对未来刷新磁盘输入输出请求的影响,如果是刷新磁盘输入输出请求则需要计算什么时候才可以处理它;磁盘输入输出请求数据落地后的处理流程,即磁盘写输入输出请求和带数据的刷新磁盘输入输出请求完成时,是否会触发其他刷新磁盘输入输出请求的完成。
本发明一具体应用实施例中,磁盘输入输出请求到达处理流程如图6所示,包括如下步骤:
步骤21,每一个磁盘输入输出请求到来时,递增的分配标识号,包括磁盘读输入输出请求、磁盘写输入输出请求、刷新磁盘输入输出请求;
步骤22,如果这个磁盘输入输出请求是磁盘写输入输出请求,则跳到第23步执行;如果是刷新磁盘输入输出请求,则跳到第26步执行;如果是磁盘读输入输出请求,因为与刷新磁盘输入输出请求处理无关,忽略;
步骤23,将第21步分配到的标识号与上一个刷新磁盘输入输出请求的标识号比较,如果该标识号大于上一个刷新磁盘输入输出请求的标识号,则跳到第24步执行;如果小于上一个刷新磁盘输入输出请求的标识号,则跳到第25步执行,不存在等于的场景;
步骤24,将实时磁盘写输入输出请求的累计个数计数加1,刷新磁盘输入输出请求相关逻辑处理完毕;
步骤25,正常情况下不会有这个步骤的执行,只有多磁盘输入输出请求的第1步与第11步并发执行时,才有可能走到本步骤。从红黑树中找到大于请求ID的刷节点(可对应于c++stl的map的upper_bound方法),将其累计间隙数值加1。刷新磁盘输入输出请求相关逻辑处理完毕;
步骤26,判断这个刷新磁盘输入输出请求是否携带数据,如果携带数据,则跳到第28步执行;如果没有携带数据,则继续执行第27步;
步骤27,将实时磁盘写输入输出请求的累计个数这个计数变量清0;
步骤28,将实时磁盘写输入输出请求的累计个数这个计数变量设置为1,这个1表示当前的刷新磁盘输入输出请求也必须把数据下发成功;
步骤29,在第27、28步执行前,原先的实时磁盘写输入输出请求的累计个数计数判断是否为0,且没有未完成的刷新磁盘输入输出请求(判断存放刷新磁盘输入输出请求的红黑树容器是否为空即可),这一步是用于判断当前这个刷新磁盘输入输出请求是否可以立即执行,如果上述2个条件为真,则继续执行第30步;否则,跳到31步执行;
步骤30,立即处理这个刷新磁盘输入输出请求,比如,如果未携带数据,直接返回执行成功;如果携带数据则立即下发。
步骤31,构造刷节点结构体,累计间隙数值记为原实时磁盘写输入输出请求的累计个数(第27、28步执行前的原实时磁盘写输入输出请求的累计个数),同时设置好该刷新磁盘输入输出请求的指针,以刷新磁盘输入输出请求的标识号作为键码,将刷节点插入红黑树容器中,流程处理完毕。
另外,当一个磁盘输入输出请求的数据落地后(由TDC模块成功转发到实际存储介质中),可称为磁盘输入输出请求处理完成,这里包括读磁盘输入输出请求、写磁盘输入输出请求、带数据的刷新磁盘输入输出请求。其中,当写磁盘输入输出请求、带数据的刷新磁盘输入输出请求完成时,需要判断是否触发到刷新磁盘输入输出请求的处理,如图7所示,当一个磁盘输入输出请求的数据落地后,后续的判断是否触发到刷新磁盘输入输出请求的处理步骤包括:
步骤41,当一个写磁盘输入输出请求或者带数据的刷新磁盘输入输出请求落地后,首先将磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号比较,如果标识号小于等于上一个刷新磁盘输入输出请求的标识号,则跳到第3步执行;如果标识号大于上一个刷新磁盘输入输出请求的标识号,则继续执行第42步。
步骤42,将实时磁盘写输入输出请求的累计个数计数减1,刷新磁盘输入输出请求触发流程处理完毕。
步骤43,在红黑树容器中查找恰大于该磁盘输入输出请求的标识号的刷节点结点(可对应于c++stl的map的upper_bound方法)。
步骤44,将第43步找到的刷节点结点的累计间隙数计数值减去1,再判断累计间隙数值是否为0,如果为0,继续执行第45步;如果大于0,则没有触发其他刷新磁盘输入输出请求的执行,流程结束;
步骤45,检查当前的刷节点是否为红黑树中ID最小的结点(可中序遍历的第1个结点,对应于c++的stl库中map的begin方法),如果不是则说明这个磁盘输入输出请求虽然导致它之后的刷新磁盘输入输出请求的累计间隙数值降为0,但是由于这个刷新磁盘输入输出请求前还有未完成的刷新磁盘输入输出请求,所以刷新磁盘输入输出请求并不能执行;反之,这个刷新磁盘输入输出请求就是所有未完成的刷新磁盘输入输出请求中的第1个磁盘输入输出请求,继续执行第46步处理。
步骤46,正常处理该刷新磁盘输入输出请求,例如,如果不携带数据,则直接向虚拟机返回成功;如果携带数据,则将数据下发到存储介质落地。
步骤47,既然已经处理完毕,就从红黑树中删除这个刷节点;
步骤48,接着需要查看红黑树中紧随其后的刷新磁盘输入输出请求(可对应于c++的stl库中map的++重载方法)中是否累计间隙数值也为0,也满足了触发条件,如果累计间隙数为0,则继续执行第46步;否则,流程结束。
根据本申请的另一面,还提供一种刷新磁盘输入输出请求的处理设备,如图8所示,该设备100包括:
分配标识号装置1,用于在每一个磁盘输入输出请求到来时,为每个磁盘输入输出请求递增地分配唯一的标识号,其中所述磁盘输入输出请求包括磁盘写输入输出请求和刷新磁盘输入输出请求(刷新磁盘输入输出请求)中的任一种;在此,通常磁盘输入输出请求包括磁盘写输入输出请求、磁盘读输入输出请求和刷新磁盘输入输出请求,由于本申请中磁盘读输入输出请求与刷新磁盘输入输出请求处理无关,所以这里可以忽略磁盘读输入输出请求,所述刷新磁盘输入输出请求用于将缓存中的写数据最终存储到实际存储介质中;
种类判断装置2,用于判断所述到来的磁盘输入输出请求的种类,
条件判断装置3,用于若所述到来的磁盘输入输出请求种类是刷新磁盘输入输出请求,则判断所述到来的刷新磁盘输入输出请求是否满足预设条件,根据判断结果确定是否处理所述到来的刷新磁盘输入输出请求。在此,通过判断所述到来的刷新磁盘输入输出请求是否满足预设条件,可以根据判断结果能够快速处理刷新磁盘输入输出请求,高效使用CPU,满足在缓存存在场景下大量的磁盘写输入输出请求与刷新磁盘输入输出请求并发时,仍然能够高效的处理刷新磁盘输入输出请求与磁盘写输入输出请求,实现磁盘输入输出请求处理模块高效率低功耗的处理刷新磁盘输入输出请求。
本申请刷新磁盘输入输出请求的处理设备一优选的实施例中,所述条件判断装置3,用于判断所述到来的刷新磁盘输入输出请求是否携带数据,
若携带数据,将实时磁盘写输入输出请求的累计个数记录为原始累计个数后,将实时磁盘写输入输出请求的累计个数(实时磁盘写输入输出请求的累计个数)更新为1,其中,所述实时磁盘写输入输出请求的累计个数每次记录从上一个刷新磁盘输入输出请求(LastFlushIOId)至当前时刻所到达的磁盘写输入输出请求的累计个数;在此,由于磁盘输入输出请求处理模块(如TDC)每收到1个磁盘输入输出请求都有独一无二的标识号,这个标识号是可由1开始递增,所以上一个刷新磁盘输入输出请求的标识号是个变量,上一个刷新磁盘输入输出请求的标识号可初始化为0,即如果一直没有刷新磁盘输入输出请求,则上一个刷新磁盘输入输出请求的标识号一直是0;若没有携带数据,将实时磁盘写输入输出请求的累计个数记录为原始累计个数后,将实时磁盘写输入输出请求的累计个数更新为0,其中,所述实时磁盘写输入输出请求的累计个数每次记录从上一个刷新磁盘输入输出请求至当前时刻所到达的磁盘写输入输出请求的累计个数,在此,将实时磁盘写输入输出请求的累计个数重新赋值为1表示当前的刷新磁盘输入输出请求也必须把数据下发成功;
根据所述原始累计个数确定是否处理所述到来的刷新磁盘输入输出请求,从而根据所述原始累计个数能够更精确、快速处理刷新磁盘输入输出请求,高效使用CPU。
本申请刷新磁盘输入输出请求的处理设备一优选的实施例中,所述条件判断装置3,用于判断所述原始累计个数是否为0,且此时键码键值关联容器是否为空,即没有未完成的刷新磁盘输入输出请求,其中,所述键码键值关联容器用于存放刷新磁盘输入输出请求的标识号和对应的节点信息,每个节点信息包括一个刷新磁盘输入输出请求和该刷新磁盘输入输出请求的累计间隙数(gap),所述累计间隙数的初始值为所述原始累计个数,具体来说,可在键码键值关联容器存放各个刷节点(FlushNode),每个刷节点用于描述一个刷新磁盘输入输出请求的标识号和对应的节点信息,每个节点信息可包括2个成员:累计间隙数和磁盘输入输出请求指针,累计间隙数就是这个刷新磁盘输入输出请求与它前面的刷新磁盘输入输出请求之间,还有多少个未完成的磁盘写输入输出请求,而磁盘输入输出请求指针则指向所属的刷新磁盘输入输出请求;
若所述原始累计个数为0,且此时键码键值关联容器为空在此,这2个条件用于判断当前这个刷新磁盘输入输出请求是否可以立即执行,即这2个条件均为真时,则立即处理该刷新磁盘输入输出请求,比如,如果未携带数据,直接返回执行成功,如果携带数据则立即下发,通过该2个条件的判断,可实现刷新磁盘输入输出请求到达时,以O(1)的算法复杂度快速处理;
若所述原始累计个数不为0,或此时键码键值关联容器不为空,即2个条件中只要有其中一个条件不满足,则将该到来的刷新磁盘输入输出请求的标识号和对应的节点信息插入所述键码键值关联容器中。在此,需要在所述键码键值关联容器中构造一个新的刷节点结构体,该刷节点的累计间隙数的原始值记为所述原始累计个数,即更新前的实时磁盘写输入输出请求的累计个数(PendingsFromLastFlush)。具体可以设置好该刷新磁盘输入输出请求的指针,以刷新磁盘输入输出请求的标识号作为键码,将刷节点插入所述键码键值关联容器中后,流程处理完毕。本实施例中通过判断是否满足所述原始累计个数为0,且此时键码键值关联容器为空,可以高效地判断当前这个刷新磁盘输入输出请求是否可以立即执行。
本申请刷新磁盘输入输出请求的处理设备一优选的实施例中,所述键码键值关联容器为红黑树容器。在此,红黑树可作为一个存放刷新磁盘输入输出请求的键码-键值(key-value)关联容器,它的键码可以是刷新磁盘输入输出请求的标识号,而键值则是刷节点。另外,所述键码键值关联容器还可替换为任何支持按元素键码大小遍历的、时间复杂度在O(logn)以内的、可查询刚好大于给定键码的容器。
本申请刷新磁盘输入输出请求的处理设备一优选的实施例中,如图9所示,所述设备100还包括:
磁盘写输入输出请求处理装置4,用于若为磁盘写输入输出请求,将所述到来的磁盘写输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号比较,
若该磁盘写输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则将所述实时磁盘写输入输出请求的累计个数加1,刷新磁盘输入输出请求的相关即逻辑处理完毕;
若该磁盘写输入输出请求的标识号小于上一个刷新磁盘输入输出请求的标识号,则从所述键码键值关联容器中找到恰大于该磁盘写输入输出请求的标识号的刷新磁盘输入输出请求,并将该找到的刷新磁盘输入输出请求的累计间隙数(gap)加1。在此,不存在该磁盘写输入输出请求的标识号等于上一个刷新磁盘输入输出请求的标识号的场景。正常情况下,不会有该磁盘写输入输出请求的标识号小于上一个刷新磁盘输入输出请求的标识号步骤的执行,只有多磁盘输入输出请求的写输入输出请求和刷新磁盘输入输出请求并发执行时,才有可能走到本步骤。例如,可从红黑树中找到大于磁盘写输入输出请求的标识号的刷节点,将其累计间隙数值加1后,刷新磁盘输入输出请求相关逻辑即处理完毕。在此,通过将所述到来的磁盘写输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号比较,可以精确计算出所述到来的磁盘输入输出请求种类是磁盘写输入输出请求,对未来刷新磁盘输入输出请求的影响。
当一个磁盘输入输出请求的数据落地后(由TDC模块成功转发到实际存储介质中),可称为磁盘输入输出请求处理完成,这里包括磁盘读输入输出请求、磁盘写输入输出请求、带数据的刷新磁盘输入输出请求。其中,当磁盘写输入输出请求、带数据的刷新磁盘输入输出请求完成时,需要判断是否触发到刷新磁盘输入输出请求的处理,本申请刷新磁盘输入输出请求的处理设备一优选的实施例中,如图10所示,所述设备100还包括:
标识号比较装置5,用于当一个磁盘输入输出请求的数据成功转发到实际存储介质中后,将该磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,根据比较结果处理该磁盘输入输出请求,其中,磁盘输入输出请求包括磁盘写输入输出请求或带数据的刷新磁盘输入输出请求。在此,本实施例通过将磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,能够精确判断出落地的磁盘输入输出请求是否会触发其他刷新磁盘输入输出请求的完成,满足在缓存存在场景下大量的磁盘写输入输出请求与刷新磁盘输入输出请求并发时,仍然能够高效的处理刷新磁盘输入输出请求与磁盘写输入输出请求,从而实现磁盘输入输出请求处理模块高效率低功耗的处理刷新磁盘输入输出请求。
本申请刷新磁盘输入输出请求的处理设备一优选的实施例中,所述标识号比较装置5,用于若该磁盘输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则将实时磁盘写输入输出请求的累计个数减1,从而为后续的刷新磁盘输入输出请求触发流程作好准备。在此,磁盘输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则说明这个磁盘输入输出请求是磁盘写输入输出请求。
本申请刷新磁盘输入输出请求的处理设备一优选的实施例中,所述标识号比较装置5,还用于若该磁盘输入输出请求的标识号小于等于上一个刷新磁盘输入输出请求的标识号,则在所述键码键值关联容器中查找恰大于该磁盘输入输出请求的标识号的刷新磁盘输入输出请求,并将该找到的刷新磁盘输入输出请求的累计间隙数减1后,判断该找到的刷新磁盘输入输出请求的当前的累计间隙数是否为0,在此,若该磁盘输入输出请求的标识号小于上一个刷新磁盘输入输出请求的标识号,则说明该磁盘输入输出请求为磁盘写输入输出请求,若该磁盘输入输出请求的标识号等于上一个刷新磁盘输入输出请求的标识号,则说明该磁盘输入输出请求为带数据的刷新磁盘输入输出请求,磁盘写输入输出请求或者刷新磁盘输入输出请求完成时,通过在键码键值关联容器中查找恰大于该磁盘输入输出请求的标识号的刷新磁盘输入输出请求,可以O(logN)的算法复杂度处理,其中N是指刷新磁盘输入输出请求的数目,而不是指所有磁盘输入输出请求的数目,所以处理速度很快;
如果为0,判断该找到的刷新磁盘输入输出请求的标识号是否是所述键码键值关联容器中最小的标识号,
若是,这个刷新磁盘输入输出请求就是所有未完成的刷新磁盘输入输出请求中的第1个磁盘输入输出请求,处理该找到的刷新磁盘输入输出请求后,从键码键值关联容器中删除该找到的刷新磁盘输入输出请求的标识号和对应的节点信息,在此,可以正常处理该刷新磁盘输入输出请求,例如,如果不携带数据,则直接向虚拟机返回成功;如果携带数据,则将数据下发到存储介质落地,既然已经处理完毕,就从键码键值关联容器中删除这个刷节点;
重复查找所述键码键值关联容器中标识号紧随于最近删除的刷新磁盘输入输出请求的标识号之后的刷新磁盘输入输出请求,判断该查找到的刷新磁盘输入输出请求的累计间隙数是否也为0,若为0,则处理该查找到的刷新磁盘输入输出请求后,从所述键码键值关联容器中删除该查找到的刷新磁盘输入输出请求的标识号和对应的节点信息,直至查找到的刷新磁盘输入输出请求的累计间隙数大于0。
综上所述,本申请通过判断所述到来的刷新磁盘输入输出请求是否满足预设条件,可以根据判断结果能够快速处理刷新磁盘输入输出请求,高效使用CPU,满足在缓存存在场景下大量的磁盘写输入输出请求与刷新磁盘输入输出请求并发时,仍然能够高效的处理刷新磁盘输入输出请求与磁盘写输入输出请求,实现磁盘输入输出请求处理模块高效率低功耗的处理刷新磁盘输入输出请求。
进一步的,本申请通过判断所述到来的刷新磁盘输入输出请求是否携带数据,能够根据判断结果更精确确定是否处理所述到来的刷新磁盘输入输出请求。
进一步的,本申请通过判断是否满足所述原始累计个数为0,且此时键码键值关联容器为空,可以高效地判断地当前这个刷新磁盘输入输出请求是否可以立即执行。
进一步的,本申请通过将所述到来的磁盘写输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号比较,可以精确计算出所述到来的磁盘输入输出请求种类是磁盘写输入输出请求,对未来刷新磁盘输入输出请求的影响。
进一步的,本申请通过将磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,能够精确判断出落地的磁盘输入输出请求是否会触发其他刷新磁盘输入输出请求的完成,满足在缓存存在场景下大量的磁盘写输入输出请求与刷新磁盘输入输出请求并发时,仍然能够高效的处理刷新磁盘输入输出请求与磁盘写输入输出请求,从而实现磁盘输入输出请求处理模块高效率低功耗的处理刷新磁盘输入输出请求。
进一步,本申请当磁盘写输入输出请求或者刷新磁盘输入输出请求完成时,通过在键码键值关联容器中查找恰大于该磁盘输入输出请求的标识号的刷新磁盘输入输出请求,可以O(logN)的算法复杂度处理,其中N是指刷新磁盘输入输出请求的数目,而不是指所有磁盘输入输出请求的数目,可以提高处理速度。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (16)
1.一种刷新磁盘输入输出请求的处理方法,其中,该方法包括:
在每一个磁盘输入输出请求到来时,为每个磁盘输入输出请求递增地分配唯一的标识号,其中,所述磁盘输入输出请求包括磁盘写输入输出请求和刷新磁盘输入输出请求中的任一种;
判断所述到来的磁盘输入输出请求的种类,
若为刷新磁盘输入输出请求,则判断所述到来的刷新磁盘输入输出请求是否满足预设条件,根据判断结果确定是否处理所述到来的刷新磁盘输入输出请求。
2.如权利要求1所述的方法,其中,判断所述到来的刷新磁盘输入输出请求是否满足预设条件,根据判断结果确定是否处理所述到来的刷新磁盘输入输出请求包括:
判断所述到来的刷新磁盘输入输出请求是否携带数据,
若携带数据,将实时磁盘写输入输出请求的累计个数记录为原始累计个数后,将实时磁盘写输入输出请求的累计个数更新为1;若没有携带数据,将实时磁盘写输入输出请求的累计个数记录为原始累计个数后,将实时磁盘写输入输出请求的累计个数更新为0,其中,所述实时磁盘写输入输出请求的累计个数每次记录从上一个刷新磁盘输入输出请求至当前时刻所到达的磁盘写输入输出请求的累计个数;
根据所述原始累计个数确定是否处理所述到来的刷新磁盘输入输出请求。
3.如权利要求2所述的方法,其中,根据所述原始累计个数确定是否处理所述到来的刷新磁盘输入输出请求,包括:
判断所述原始累计个数是否为0,且此时键码键值关联容器是否为空,其中,所述键码键值关联容器用于存放刷新磁盘输入输出请求的标识号和对应的节点信息,每个节点信息包括一个刷新磁盘输入输出请求和该刷新磁盘输入输出请求的累计间隙数,所述累计间隙数的初始值为所述原始累计个数;
若所述原始累计个数为0,且此时键码键值关联容器为空,立即处理该刷新磁盘输入输出请求;
若所述原始累计个数不为0,或此时键码键值关联容器不为空,则将该到来的刷新磁盘输入输出请求的标识号和对应的节点信息插入所述键码键值关联容器中。
4.如权利要求3所述的方法,其中,所述键码键值关联容器为红黑树容器。
5.如权利要求3所述的方法,其中,判断所述到来的磁盘输入输出请求的种类之后,还包括:
若为磁盘写输入输出请求,将所述到来的磁盘写输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号比较,
若该磁盘写输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则将所述实时磁盘写输入输出请求的累计个数加1;
若该磁盘写输入输出请求的标识号小于上一个刷新磁盘输入输出请求的标识号,则从所述键码键值关联容器中找到恰大于该磁盘写输入输出请求的标识号的刷新磁盘输入输出请求,并将该找到的刷新磁盘输入输出请求的累计间隙数加1。
6.如权利要求3至5所述的方法,其中,根据判断结果确定是否处理所述到来的刷新磁盘输入输出请求之后,还包括:
当一个磁盘输入输出请求的数据成功转发到实际存储介质中后,将该磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,根据比较结果处理该磁盘输入输出请求,其中,磁盘输入输出请求包括磁盘写输入输出请求或带数据的刷新磁盘输入输出请求。
7.如权利要求6所述的方法,其中,将该磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,根据比较结果处理该磁盘输入输出请求,包括:
若该磁盘输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则将实时磁盘写输入输出请求的累计个数减1。
8.如权利要求7所述的方法,其中,将该磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,根据比较结果处理该磁盘输入输出请求,还包括:
若该磁盘输入输出请求的标识号小于等于上一个刷新磁盘输入输出请求的标识号,则在所述键码键值关联容器中查找恰大于该磁盘输入输出请求的标识号的刷新磁盘输入输出请求,并将该找到的刷新磁盘输入输出请求的累计间隙数减1后,判断该找到的刷新磁盘输入输出请求的当前的累计间隙数是否为0,
如果为0,判断该找到的刷新磁盘输入输出请求的标识号是否是所述键码键值关联容器中最小的标识号,
若是,处理该找到的刷新磁盘输入输出请求后,从键码键值关联容器中删除该找到的刷新磁盘输入输出请求的标识号和对应的节点信息;
重复如下步骤,直至查找到的刷新磁盘输入输出请求的累计间隙数大于0:
查找所述键码键值关联容器中标识号紧随于最近删除的刷新磁盘输入输出请求的标识号之后的刷新磁盘输入输出请求,判断该查找到的刷新磁盘输入输出请求的累计间隙数是否也为0,若为0,则处理该查找到的刷新磁盘输入输出请求后,从所述键码键值关联容器中删除该查找到的刷新磁盘输入输出请求的标识号和对应的节点信息。
9.一种刷新磁盘输入输出请求的处理设备,其中,该设备包括:
分配标识号装置,用于在每一个磁盘输入输出请求到来时,为每个磁盘输入输出请求递增地分配唯一的标识号,其中,所述磁盘输入输出请求包括磁盘写输入输出请求和刷新磁盘输入输出请求中的任一种;
种类判断装置,用于判断所述到来的磁盘输入输出请求的种类,
条件判断装置,用于若为刷新磁盘输入输出请求,则判断所述到来的刷新磁盘输入输出请求是否满足预设条件,根据判断结果确定是否处理所述到来的刷新磁盘输入输出请求。
10.如权利要求9所述的设备,其中,所述条件判断装置,用于判断所述到来的刷新磁盘输入输出请求是否携带数据,
若携带数据,将实时磁盘写输入输出请求的累计个数记录为原始累计个数后,将实时磁盘写输入输出请求的累计个数更新为1;若没有携带数据,将实时磁盘写输入输出请求的累计个数记录为原始累计个数后,将实时磁盘写输入输出请求的累计个数更新为0,其中,所述实时磁盘写输入输出请求的累计个数每次记录从上一个刷新磁盘输入输出请求至当前时刻所到达的磁盘写输入输出请求的累计个数;
根据所述原始累计个数确定是否处理所述到来的刷新磁盘输入输出请求。
11.如权利要求10所述的设备,其中,所述条件判断装置,用于判断所述原始累计个数是否为0,且此时键码键值关联容器是否为空,其中,所述键码键值关联容器用于存放刷新磁盘输入输出请求的标识号和对应的节点信息,每个节点信息包括一个刷新磁盘输入输出请求和该刷新磁盘输入输出请求的累计间隙数,所述累计间隙数的初始值为所述原始累计个数;
若所述原始累计个数为0,且此时键码键值关联容器为空,立即处理该刷新磁盘输入输出请求;
若所述原始累计个数不为0,或此时键码键值关联容器不为空,则将该到来的刷新磁盘输入输出请求的标识号和对应的节点信息插入所述键码键值关联容器中。
12.如权利要求11所述的设备,其中,所述键码键值关联容器为红黑树容器。
13.如权利要求11所述的设备,其中,所述设备还包括:
磁盘写输入输出请求处理装置,用于若为磁盘写输入输出请求,将所述到来的磁盘写输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号比较,
若该磁盘写输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则将所述实时磁盘写输入输出请求的累计个数加1;
若该磁盘写输入输出请求的标识号小于上一个刷新磁盘输入输出请求的标识号,则从所述键码键值关联容器中找到恰大于该磁盘写输入输出请求的标识号的刷新磁盘输入输出请求,并将该找到的刷新磁盘输入输出请求的累计间隙数加1。
14.如权利要求11至13所述的设备,其中,所述设备还包括:
标识号比较装置,用于当一个磁盘输入输出请求的数据成功转发到实际存储介质中后,将该磁盘输入输出请求的标识号与上一个刷新磁盘输入输出请求的标识号进行比较,根据比较结果处理该磁盘输入输出请求,其中,磁盘输入输出请求包括磁盘写输入输出请求或带数据的刷新磁盘输入输出请求。
15.如权利要求14所述的设备,其中,所述标识号比较装置,用于若该磁盘输入输出请求的标识号大于上一个刷新磁盘输入输出请求的标识号,则将实时磁盘写输入输出请求的累计个数减1。
16.如权利要求15所述的设备,其中,所述标识号比较装置,还用于若该磁盘输入输出请求的标识号小于等于上一个刷新磁盘输入输出请求的标识号,则在所述键码键值关联容器中查找恰大于该磁盘输入输出请求的标识号的刷新磁盘输入输出请求,并将该找到的刷新磁盘输入输出请求的累计间隙数减1后,判断该找到的刷新磁盘输入输出请求的当前的累计间隙数是否为0,
如果为0,判断该找到的刷新磁盘输入输出请求的标识号是否是所述键码键值关联容器中最小的标识号,
若是,处理该找到的刷新磁盘输入输出请求后,从键码键值关联容器中删除该找到的刷新磁盘输入输出请求的标识号和对应的节点信息;
重复查找所述键码键值关联容器中标识号紧随于最近删除的刷新磁盘输入输出请求的标识号之后的刷新磁盘输入输出请求,判断该查找到的刷新磁盘输入输出请求的累计间隙数是否也为0,若为0,则处理该查找到的刷新磁盘输入输出请求后,从所述键码键值关联容器中删除该查找到的刷新磁盘输入输出请求的标识号和对应的节点信息,直至查找到的刷新磁盘输入输出请求的累计间隙数大于0。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510572319.6A CN106527959B (zh) | 2015-09-10 | 2015-09-10 | 刷新磁盘输入输出请求的处理方法及设备 |
PCT/CN2016/098008 WO2017041673A1 (zh) | 2015-09-10 | 2016-09-05 | 刷新磁盘输入输出请求的处理方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510572319.6A CN106527959B (zh) | 2015-09-10 | 2015-09-10 | 刷新磁盘输入输出请求的处理方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106527959A true CN106527959A (zh) | 2017-03-22 |
CN106527959B CN106527959B (zh) | 2019-07-26 |
Family
ID=58240600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510572319.6A Active CN106527959B (zh) | 2015-09-10 | 2015-09-10 | 刷新磁盘输入输出请求的处理方法及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106527959B (zh) |
WO (1) | WO2017041673A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782694A (zh) * | 2020-06-28 | 2020-10-16 | 百度在线网络技术(北京)有限公司 | 一种信息写入方法、装置以及电子设备 |
Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040064647A1 (en) * | 2002-06-27 | 2004-04-01 | Microsoft Corporation | Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory |
US20050246488A1 (en) * | 2004-04-28 | 2005-11-03 | Hiroyasu Kiba | Method and system for data processing for controlling a cache memory |
US20060069716A1 (en) * | 2004-09-30 | 2006-03-30 | International Business Machines Corporation | Decision mechanisms for adapting raid operation placement |
CN1881167A (zh) * | 2005-06-13 | 2006-12-20 | 株式会社日立制作所 | 存储控制装置及其控制方法 |
US20070226411A1 (en) * | 2006-03-27 | 2007-09-27 | Ehrlich Richard M | Disk drive write method |
US20090119538A1 (en) * | 2007-11-06 | 2009-05-07 | Vmware, Inc. | Storage Handling for Fault Tolerance in Virtual Machines |
CN101546293A (zh) * | 2008-03-26 | 2009-09-30 | 富士通株式会社 | 缓存控制装置、信息处理装置和缓存控制方法 |
CN101595461A (zh) * | 2007-01-31 | 2009-12-02 | 微软公司 | 延长闪存驱动器使用寿命 |
US20100011168A1 (en) * | 2008-07-11 | 2010-01-14 | Samsung Electronics Co., Ltd | Method and apparatus for cache flush control and write re-ordering in a data storage system |
CN101689142A (zh) * | 2007-06-20 | 2010-03-31 | 富士通株式会社 | 信息处理装置、高速缓冲存储器控制装置以及存储器访问顺序保证方法 |
US20100205367A1 (en) * | 2009-02-09 | 2010-08-12 | Ehrlich Richard M | Method And System For Maintaining Cache Data Integrity With Flush-Cache Commands |
CN102541982A (zh) * | 2011-10-25 | 2012-07-04 | 曙光信息产业(北京)有限公司 | 一种组织和访问元数据文件日志的方法 |
CN102820049A (zh) * | 2011-06-09 | 2012-12-12 | 三星电子株式会社 | 用于刷新以及数据清理存储器件的方法和装置 |
CN103049219A (zh) * | 2012-12-12 | 2013-04-17 | 华中科技大学 | 适用于虚拟化平台的虚拟磁盘写缓存系统及其操作方法 |
CN103140839A (zh) * | 2010-08-16 | 2013-06-05 | 赛门铁克公司 | 在能够进行高速缓存的存储装置上进行高效顺序记录的系统和方法 |
CN103150267A (zh) * | 2013-02-21 | 2013-06-12 | 浪潮电子信息产业股份有限公司 | 一种多控制器间的缓存同步方法 |
CN103823636A (zh) * | 2012-11-19 | 2014-05-28 | 苏州捷泰科信息技术有限公司 | Io调度方法及装置 |
CN104375883A (zh) * | 2014-12-03 | 2015-02-25 | 浪潮电子信息产业股份有限公司 | 一种cfs调度器 |
CN104407820A (zh) * | 2014-12-12 | 2015-03-11 | 华为技术有限公司 | 基于固态硬盘存储系统的数据处理方法、装置以及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336669B (zh) * | 2013-05-21 | 2015-12-02 | 华中科技大学 | 一种基于固态盘内部并行性的i/o调度方法及调度器 |
-
2015
- 2015-09-10 CN CN201510572319.6A patent/CN106527959B/zh active Active
-
2016
- 2016-09-05 WO PCT/CN2016/098008 patent/WO2017041673A1/zh active Application Filing
Patent Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040064647A1 (en) * | 2002-06-27 | 2004-04-01 | Microsoft Corporation | Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory |
US20050246488A1 (en) * | 2004-04-28 | 2005-11-03 | Hiroyasu Kiba | Method and system for data processing for controlling a cache memory |
US20060069716A1 (en) * | 2004-09-30 | 2006-03-30 | International Business Machines Corporation | Decision mechanisms for adapting raid operation placement |
CN1881167A (zh) * | 2005-06-13 | 2006-12-20 | 株式会社日立制作所 | 存储控制装置及其控制方法 |
US20070226411A1 (en) * | 2006-03-27 | 2007-09-27 | Ehrlich Richard M | Disk drive write method |
CN101595461A (zh) * | 2007-01-31 | 2009-12-02 | 微软公司 | 延长闪存驱动器使用寿命 |
CN101689142A (zh) * | 2007-06-20 | 2010-03-31 | 富士通株式会社 | 信息处理装置、高速缓冲存储器控制装置以及存储器访问顺序保证方法 |
US20090119538A1 (en) * | 2007-11-06 | 2009-05-07 | Vmware, Inc. | Storage Handling for Fault Tolerance in Virtual Machines |
CN101546293A (zh) * | 2008-03-26 | 2009-09-30 | 富士通株式会社 | 缓存控制装置、信息处理装置和缓存控制方法 |
US20100011168A1 (en) * | 2008-07-11 | 2010-01-14 | Samsung Electronics Co., Ltd | Method and apparatus for cache flush control and write re-ordering in a data storage system |
US20100205367A1 (en) * | 2009-02-09 | 2010-08-12 | Ehrlich Richard M | Method And System For Maintaining Cache Data Integrity With Flush-Cache Commands |
CN103140839A (zh) * | 2010-08-16 | 2013-06-05 | 赛门铁克公司 | 在能够进行高速缓存的存储装置上进行高效顺序记录的系统和方法 |
CN102820049A (zh) * | 2011-06-09 | 2012-12-12 | 三星电子株式会社 | 用于刷新以及数据清理存储器件的方法和装置 |
CN102541982A (zh) * | 2011-10-25 | 2012-07-04 | 曙光信息产业(北京)有限公司 | 一种组织和访问元数据文件日志的方法 |
CN103823636A (zh) * | 2012-11-19 | 2014-05-28 | 苏州捷泰科信息技术有限公司 | Io调度方法及装置 |
CN103049219A (zh) * | 2012-12-12 | 2013-04-17 | 华中科技大学 | 适用于虚拟化平台的虚拟磁盘写缓存系统及其操作方法 |
CN103150267A (zh) * | 2013-02-21 | 2013-06-12 | 浪潮电子信息产业股份有限公司 | 一种多控制器间的缓存同步方法 |
CN104375883A (zh) * | 2014-12-03 | 2015-02-25 | 浪潮电子信息产业股份有限公司 | 一种cfs调度器 |
CN104407820A (zh) * | 2014-12-12 | 2015-03-11 | 华为技术有限公司 | 基于固态硬盘存储系统的数据处理方法、装置以及系统 |
Non-Patent Citations (1)
Title |
---|
李丁丁: ""虚拟机本地存储写性能优化研究"", 《中国博士学位论文全文数据库(电子期刊) 信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782694A (zh) * | 2020-06-28 | 2020-10-16 | 百度在线网络技术(北京)有限公司 | 一种信息写入方法、装置以及电子设备 |
CN111782694B (zh) * | 2020-06-28 | 2023-10-20 | 百度在线网络技术(北京)有限公司 | 一种信息写入方法、装置以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2017041673A1 (zh) | 2017-03-16 |
CN106527959B (zh) | 2019-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11915139B2 (en) | Modifying machine learning models to improve locality | |
US8229968B2 (en) | Data caching for distributed execution computing | |
CN104952032B (zh) | 图的处理方法、装置以及栅格化表示及存储方法 | |
CN104615594B (zh) | 一种数据更新方法及装置 | |
CN106484906A (zh) | 一种分布式对象存储系统闪回方法及装置 | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
CN110188108A (zh) | 数据存储方法、装置、系统、计算机设备及存储介质 | |
CN103473298B (zh) | 数据归档方法和装置以及存储系统 | |
US20100057647A1 (en) | Accommodating learned clauses in reconfigurable hardware accelerator for boolean satisfiability solver | |
CN107807797A (zh) | 数据写入的方法、装置及服务器 | |
US20180300330A1 (en) | Proactive spilling of probe records in hybrid hash join | |
US11288247B2 (en) | Blockchain based hierarchical data storage | |
JP2020030699A (ja) | 学習装置および学習方法 | |
JP2019212171A (ja) | 学習装置および学習方法 | |
CN109033365B (zh) | 一种数据处理方法及相关设备 | |
CN106469123A (zh) | 一种基于nvdimm的写缓存分配、释放方法及其装置 | |
CN107609011A (zh) | 一种数据库记录的维护方法和装置 | |
CN107402982A (zh) | 数据写入、数据匹配方法、装置及计算设备 | |
CN104572737B (zh) | 数据存储辅助方法及系统 | |
CN106527959A (zh) | 刷新磁盘输入输出请求的处理方法及设备 | |
CN107102900A (zh) | 一种共享内存空间的管理方法 | |
CN106611364A (zh) | 存储碎片整理方法及装置 | |
CN107688634A (zh) | 数据写入方法及装置、电子设备 | |
CN105677249A (zh) | 数据块的划分方法、装置及系统 | |
JP2020035395A (ja) | 学習方法、プログラムおよび学習装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |