CN110837411A - 一种数据服务器端分区内部并发i/o调度方法及系统 - Google Patents

一种数据服务器端分区内部并发i/o调度方法及系统 Download PDF

Info

Publication number
CN110837411A
CN110837411A CN201911089216.9A CN201911089216A CN110837411A CN 110837411 A CN110837411 A CN 110837411A CN 201911089216 A CN201911089216 A CN 201911089216A CN 110837411 A CN110837411 A CN 110837411A
Authority
CN
China
Prior art keywords
request
conflict
queue
requests
current
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
Application number
CN201911089216.9A
Other languages
English (en)
Other versions
CN110837411B (zh
Inventor
肖飞
游成毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Minbo Technology Wuhan Co Ltd
Original Assignee
Minbo Technology Wuhan Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Minbo Technology Wuhan Co Ltd filed Critical Minbo Technology Wuhan Co Ltd
Priority to CN201911089216.9A priority Critical patent/CN110837411B/zh
Publication of CN110837411A publication Critical patent/CN110837411A/zh
Application granted granted Critical
Publication of CN110837411B publication Critical patent/CN110837411B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出了一种数据服务器端分区内部并发I/O调度方法及系统,该方法包括,接收I/O请求,检测当前I/O请求中的读请求或写请求与请求冲突队列或请求执行队列中的在先请求是否冲突,将存在冲突的读请求或写请求加入到对应的请求冲突队列中,将不存在冲突的读请求或写请求加入到对应的请求执行队列中。本发明通过避免不存在读写冲突或者写写冲突的请求之间的无谓的等待,有效提升数据服务器端分区内部IO的并发度和响应时延,提升数据服务器的IO性能,进而提升存储系统的整体IO性能。

Description

一种数据服务器端分区内部并发I/O调度方法及系统
技术领域
本发明涉及计算机领域,特别是涉及一种数据服务器端分区内部并发I/O调度方法及系统。
背景技术
对于一个存储系统来说,最终的数据读写都是发生在数据服务器上,因此数据服务器的性能对于整个存储系统的性能具有至关重要的意义。数据服务器对于存储系统中的所有客户端来说都是共享的,因此,数据服务器会接收到来自不同客户端的请求,这些请求可能是关于同一个文件的相同字节区间,也可能是关于同一个文件的不同字节区间,还可能是关于不同文件各自的字节区间。为了提高数据服务器处理的并发度,通常会在数据服务器端对接收到的请求按照一定的规则进行分区,并为每个分区绑定一个执行单元,由这个执行单元来执行率属于该分区的请求。分区规则有多种,比如以文件为单位进行分区,同一个文件的请求被分配到同一个分区,不同文件的请求则可能被分配到相同的分区,也可能被分配到不同的分区,再比如将文件划分为一个个大小相等的切片,然后按照切片来进行分区,同一个文件的相同切片被分配给同一个分区,同一个文件的不同切片或者不同文件的切片则可能被分配到相同的分区,也可能被分配到不同的分区。因为每个执行单元操作对应到一个独立的分区,确切的说是不同的文件,或者是不同的分片,在分区之间各文件或者各分片是相互独立的,因此多个执行单元之间是可以并行运行的。但是对于每个执行单元内部来说,为了数据一致性的考虑,所有的请求都是在请求队列中按照FIFO的方式执行的,这种执行方式确实在IO调度层面解决了数据一致性的问题,但是对于每个执行单元的性能来说并不友好,因为同一个执行单元内部的不同请求之间可能不存在读写相关或者写写相关,这些请求可以更早的被调度执行,而无需等待先于它到达的请求执行完毕之后才被调度执行。
发明内容
为解决上述技术问题,本发明提出了一种数据服务器端分区内部并发I/O调度方法及系统。本发明通过避免不存在读写冲突或者写写冲突的请求之间的无谓的等待,有效提升数据服务器端分区内部IO的并发度和响应时延,提升数据服务器的IO性能,进而提升存储系统的整体IO性能。
根据本发明的一实施例,本发明提出了一种数据服务器端分区内部并发I/O调度方法,该方法包括:接收I/O请求,检测当前I/O请求中的读请求或写请求与请求冲突队列或请求执行队列中的在先请求是否冲突,将存在冲突的读请求或写请求加入到对应的请求冲突队列中,将不存在冲突的读请求或写请求加入到对应的请求执行队列中。
优选的,所述检测当前I/O请求中的读请求或写请求与请求冲突队列或请求执行队列中的在先请求是否冲突,将存在冲突的读请求或写请求加入到对应的请求冲突队列中,将不存在冲突的读请求或写请求加入到对应的请求执行队列中,还包括,检测所有先于当前请求到达的且仍处于请求冲突队列或者请求执行队列中的请求进行冲突检测,如果检测到冲突,则除了将当前请求添加到对应的冲突队列以外,还将当前请求添加到与之存在冲突的请求的阻塞队列中,如果有多个请求与当前请求存在冲突,则会将当前请求添加到所有与之冲突的请求的阻塞队列中,且当前请求中会记录与它存在冲突的请求的数目。
优选的,所述检测当前I/O请求中的读请求或写请求与请求冲突队列或请求执行队列中的在先请求是否冲突的检测过程具体包括:
S101.初始化与新到达的当前请求req之间存在冲突的请求数目blockerNum为0;
S102.获取新到达的当前请求req对应的IO的字节区间[reqStart,reqEnd],其中,reqStart表示请求req的起始偏移地址,reqEnd为请求req的终止偏移地址;
S103.从请求冲突队列或请求执行队列中获取第一个请求;
S104.分析从请求冲突队列或请求执行队列中获取到的请求对应的IO的字节区间[blockerStart,blockerEnd],其中blockerStart表示获取到的请求的起始偏移地址,blockerEnd表示获取到的请求的终止偏移地址;
S105.如果获取到的请求的IO字节区间[blockerStart,blockerEnd]和req的IO字节区间[reqStart,reqEnd]之间满足blockerEnd<reqStart或者reqEnd<blockStart,则当前请求req和获取到的请求之间不存在冲突,跳转到步骤S107,否则存在冲突,将req添加到获取到的请求的阻塞队列中,在所述获取到的请求执行完毕之前,req都必须被阻塞;
S106.将blockerNum加1;
S107.如果请求冲突队列或请求执行队列中存在尚未进行冲突检测的请求,则从请求冲突队列或请求执行队列中获取下一个请求,并跳转到步骤S104,否则返回blockerNum。
优选的,当前I/O请求为写请求时,所述数据服务器端分区内部并发I/O调度方法具体包括如下步骤:
S201.检查读请求冲突队列是否为空,如果不为空,则逐一检查当前写请求与读请求冲突队列中的所有请求之间是否存在读写冲突,每当检测到一个冲突,则更新读请求冲突队列中与当前写请求之间存在冲突的请求计数,当读请求冲突队列中的所有请求都检测完毕之后,返回读请求冲突队列中与当前写请求之间存在冲突的请求的总数目,记作blockerNum1;
S202.检查读请求执行队列是否为空,如果不为空,则逐一检查当前写请求与读请求执行队列中的所有请求之间是否存在读写冲突,每当检测到一个冲突,则更新读请求执行队列中与当前写请求之间存在冲突的请求计数,当读请求执行队列中的所有请求都检测完毕之后,返回读请求执行队列中与当前写请求之间存在冲突的请求的总数目,记作blockerNum2;
S203.检查写请求冲突队列是否为空,如果不为空,则逐一检查当前写请求与写请求冲突队列中的所有请求之间是否存在写写冲突,每当检测到一个冲突,则更新写请求冲突队列中与当前写请求之间存在冲突的请求计数,当写请求冲突队列中的所有请求都检测完毕之后,返回写请求冲突队列中与当前写请求之间存在冲突的请求的总数目,记作blockerNum3;
S204.如果blockerNum1,blockerNum2和blockerNum3中至少一个不为0,则将当前写请求添加到写请求冲突队列,并更新当前写请求中记录的阻塞它的请求数目为blockerNum1,blockerNum2和blockerNum3之和,否则将当前写请求添加到写请求执行队列。
优选的,当前I/O请求为读请求时,所述数据服务器端分区内部并发I/O调度方法具体包括如下步骤:
S301.检测写请求冲突队列是否为空,如果不为空,则逐一检查当前读请求与写请求冲突队列中的所有请求之间是否存在读写冲突,每当检测到一个冲突,则更新写请求冲突队列中与当前读请求之间存在冲突的请求计数,当写请求冲突队列中的所有请求都检测完毕之后,返回写请求冲突队列中与当前读请求之间存在冲突的请求的总数目,记作blockerNum1;
S302.检测写请求执行队列是否为空,如果不为空,则逐一检查当前读请求与写请求执行队列中的所有请求之间是否存在读写冲突,每当检测到一个冲突,则更新写请求执行队列中与当前读请求之间存在冲突的请求计数,当写请求执行队列中的所有请求都检测完毕之后,返回写请求执行队列中与当前读请求之间存在冲突的请求的总数目,记作blockerNum2;
S303.如果blockerNum1和blockerNum2中至少一个不为0,则将当前读请求添加到读请求冲突队列,并更新当前读请求中记录的阻塞它的请求数目为blockerNum1和blockerNum2之和,否则将当前读请求添加到读请求执行队列。
优选的,在当前请求为写请求且执行完毕后,还包括如下步骤:
S401.获取当前执行完毕的写请求writeReq对应的阻塞队列blockQueue,其中存放的是所有被writeReq阻塞的请求;
S402.如果阻塞队列blockQueue为空,则跳转到步骤S408;
S403.获取阻塞队列blockQueue中下一个被阻塞的请求,记作blockee;
S404.从阻塞队列blockQueue中移除当前的blockee;
S405.将blockee中记录的阻塞它的请求的数目减1;
S406.检查blockee中记录的阻塞它的请求的数目是否为0,如果不为0,则跳转到步骤S402,否则,表明所有阻塞blockee的请求都已经执行完毕了,该blockee可以提交给执行队列了;
S407.如果当前blockee是读请求,则将当前的blockee添加到读请求执行队列,然后跳转到步骤S402,否则将当前的blockee添加到写请求执行队列,然后跳转到步骤S402;
S408.从写请求执行队列中移除writeReq。
优选的,在当前请求为读请求且执行完毕后,还包括如下步骤:
S501.获取当前执行完毕的读请求readReq对应的阻塞队列blockQueue,其中存放的是所有被readReq阻塞的请求;
S502.如果阻塞队列blockQueue为空,则跳转到步骤S507;
S503.获取阻塞队列blockQueue中下一个被阻塞的请求,记作blockee;
S504.从阻塞队列blockQueue中移除当前的blockee;
S505.将blockee中记录的阻塞它的请求的数目减1;
S506.检查blockee中记录的阻塞它的请求的数目是否为0,如果不为0,则跳转到步骤S502,否则,将该blockee加入到读请求执行队列,然后跳转到步骤S502;
S507.从读请求执行队列中移除readReq。
根据本发明的又一实施例,本发明还提出了一种数据服务器端分区内部并发I/O调度系统,所述系统包括数据服务器、请求分发器、至少一个执行单元对以及冲突检测单元,其中,所述数据服务器接收到来自网络的I/O请求,经过所述请求分发器分发给对应的所述至少一个执行单元对,所述冲突检测单元对所述执行单元对中的读请求或者写请求进行冲突检测,将存在冲突的读请求或写请求加入到对应的请求冲突队列中,将不存在冲突的读请求或写请求加入到对应的请求执行队列中。
优选的,所述执行单元对包括一个读请求执行单元和一个写请求执行单元,所述读请求执行单元用于执行读请求,包括2个队列:读请求执行队列和读请求冲突队列,所述读请求冲突队列中存放那些与先于它到达的其它请求存在冲突的读请求,所述读请求执行队列中存放那些与先于它到达的其它请求不存在冲突的读请求或者存在冲突但是冲突已经解除的读请求;
所述写请求执行单元用于执行写请求,包括2个队列:写请求执行队列和写请求冲突队列,所述写请求冲突队列中存放那些与先于它到达的其它请求存在冲突的写请求,所述写请求执行队列中存放那些与先于它到达的其它请求不存在冲突的写请求或者存在冲突但是冲突已经解除的写请求。
优选的,所述冲突检测单元还用于,如果检测到冲突,则当前请求除了会被添加到执行单元对应的冲突队列以外,还将该请求添加到与之存在冲突的请求的阻塞队列中,如果有多个请求与当前请求存在冲突,则会将当前请求添加到所有与之冲突的请求的阻塞队列中,且当前请求中会记录与它存在冲突的请求的数目。
附图说明
图1为现有技术的存储系统中数据服务器处理从网络接收的IO请求的示意图;
图2为现有的存储系统数据服务器处理IO请求时存在的性能问题的示意图;
图3为本发明中存储系统数据服务器对网络接收的并发IO请求的处理示意图;
图4为本发明中存储系统数据服务器对存在IO冲突的请求的处理示意图;
图5为本发明中存储系统数据服务器中新到达的请求与冲突队列中请求之间冲突检测逻辑流程图;
图6为本发明中存储系统数据服务器中新到达的请求与执行队列中请求之间冲突检测逻辑流程图;
图7为本发明中存储系统数据服务器写请求处理流程图;
图8为本发明中存储系统数据服务器读请求处理流程图;
图9为本发明中存储系统数据服务器写请求执行完毕后处理流程图;
图10为本发明中存储系统数据服务器读请求执行完毕后处理流程图。
具体实施方式
以下结合附图对本发明的具体实施方式作出详细说明。
图1为现有技术的存储系统中数据服务器处理从网络接收的IO请求的示意图。数据服务器101接收到网络IO请求102,经IO请求分发器103的分发,进入到相应的请求队列104中,为了确保数据的一致性,IO请求分发器103会确保关于同一个文件或者同一文件的相同分片的IO请求进入同一个请求队列,且对请求队列中的请求105按照FIFO的方式进行组织,每一个请求队列都会对应一个请求执行单元106,请求执行单元106按照FIFO的方式逐一处理请求队列中的请求。
图2表示现有的存储系统数据服务器处理IO请求时存在的性能问题的示意图。当请求202,203,204,205,206和207到达的时候,会在请求队列201中进行排队,由请求执行单元208按照FIFO的方式逐一处理。这里用一个四元组来唯一标识一个请求,如请求202对应的四元组为(1,1024,4095,R),它表示这是关于文件1的起始偏移为1024,结束偏移为4095的读请求,请求205对应的四元组为(2,1024,4095,W),它表示这是关于文件2的起始偏移为1024,结束偏移为4095的写请求。因为请求执行单元按照FIFO的方式处理请求队列中的请求,203必须等待202执行了之后才能执行,204必须等待203执行了之后才能执行,以此类推,很明显这种顺序执行的方式能够保证数据一致性,但是存在严重的性能问题。仔细观察可以发现,请求203是关于文件2的读请求,请求202是关于文件1的读请求,它们之间是可以乱序执行的;请求204是关于文件1的写请求,请求203是关于文件2的读请求,它们操作的是不同文件,因而请求204和请求203可以并发执行,请求202是关于文件1的读请求,它和请求204操作的是同一个文件1的不同字节区间,因此请求204可以和请求202并发执行;请求205是关于文件2的写请求,请求204是关于文件1的写请求,它们之间是可以乱序执行的,请求203是关于文件2的读请求,它和请求205是关于同一个文件在不同的字节区间的读请求和写请求,它们之间是可以并行执行的,请求202是关于文件1的读请求,它和请求205分别是关于不同文件的读请求和写请求,它们之间也是可以并行执行的;请求206是关于文件1的读请求,请求205是关于文件2的写请求,它们之间操作的是不同文件,因而请求206和请求205是可以并发执行的,请求204是关于文件1的写请求,且它和请求206操作的字节区间存在交叠,因此请求206必须等待请求204执行之后才能执行;请求207是关于文件2的读请求,请求206是关于另一个文件1的读请求,因此请求207和请求206之间可以乱序执行,请求205是关于文件2的写请求,它和请求207操作的字节区间不存在交叠,因此请求207和请求205之间是可以并行执行的。
根据本发明的实施例,本发明提出了一种数据服务器端分区内部并发I/O调度方法,将传统方案中的请求队列拆分为读请求冲突队列,读请求执行队列,写请求冲突队列和写请求执行队列,当请求到达时,首先对请求进行冲突检测,检测与相应的冲突队列或者执行队列中的请求之间是否存在读写冲突或者写写冲突,如果存在冲突,则将当前的请求添加到相应的冲突队列中,并且将当前的请求添加到与之存在冲突的请求的阻塞队列中,同时在当前请求中记录与之存在冲突的请求的数目,如果不存在冲突,则将当前的请求添加到相应的执行队列中;将传统方案中每个分区对应的执行单元进行拆分,拆分为读执行单元和写执行单元,读执行单元负责从读请求执行队列中获取读请求并进行处理,写执行单元负责从写请求执行队列中获取写请求并进行处理;当写执行单元从写请求执行队列中获取一个请求并执行完毕之后,检查当前执行完毕的请求是否阻塞了其它的请求,如果没有阻塞其它请求,则从写请求执行队列中获取并执行下一个请求,如果阻塞了其它请求,则获取它所阻塞的所有请求,并将这些被阻塞的请求中记录的与它存在冲突的请求的数目减1,如果被阻塞的请求中记录的与它存在冲突的请求的计数降为0,则将该请求添加到相应的执行队列;当读执行单元从读请求执行队列中获取一个请求并执行完毕之后,检查当前执行完毕的请求是否阻塞了其它的请求,如果没有阻塞其它请求,则从读请求执行队列中获取并执行下一个请求,如果阻塞了其它请求,则获取它所阻塞的所有请求,并将这些被阻塞的请求中记录的与它存在冲突的请求的数目减1,如果被阻塞的请求中记录的与它存在冲突的请求的计数降为0,则将该请求添加到相应的执行队列。
根据本发明的实施例,在进行冲突检测之后,除了将当前请求添加到对应的冲突队列以外,还将当前请求添加到与之存在冲突的请求的阻塞队列中,如果有多个请求与当前请求存在冲突,则会将当前请求添加到所有与之冲突的请求的阻塞队列中,且当前请求中会记录与它存在冲突的请求的数目。
如图3所示,数据服务器301接收到来自网络的IO请求302,经IO请求分发器303分发给相应的执行单元对,每一文件的IO请求会被分发给某个特定的执行单元对,一个执行单元对由一个读请求执行单元304和一个写请求执行单元309组成,读请求执行单元304负责执行读请求,它绑定了2个队列:读请求执行队列305和读请求冲突队列307,读请求冲突队列307中存放那些与先于它到达的其它请求存在冲突的读请求308,读请求执行队列中存放那些与先于它到达的其它请求不存在冲突的读请求或者存在冲突但是冲突已经解除的读请求306;写请求执行单元309负责执行写请求,它也绑定了2个队列:写请求执行队列310和写请求冲突队列312,写请求冲突队列312中存放那些与先于它到达的其它请求存在冲突的写请求313,写请求执行队列310中存放那些与先于它到达的其它请求不存在冲突的写请求或者存在冲突但是冲突已经解除的写请求311。其中,写请求执行队列和读请求执行队列均为FIFO队列。
当请求被分发给某个执行单元对时,如果是读请求,则进一步分发给读请求执行单元,如果是写请求,则进一步分发给写请求执行单元。分发给读请求执行单元或者写请求执行单元的请求则首先进入冲突检测逻辑,如果检测到当前请求与先于它到达的其它请求之间存在读写冲突或者写写冲突,则当前请求进入相应的请求冲突队列,否则当前请求进入相应的请求执行队列。具体来说,如果当前请求检测到冲突,若它是读请求,则进入读请求冲突队列,若它是写请求,则进入写请求冲突队列,如果当前请求未检测到冲突,若它是读请求,则进入读请求执行队列,若它是写请求,则进入写请求执行队列。
对于分发给读请求执行单元或者写请求执行单元的当前请求,会和所有先于它到达的且仍处于请求冲突队列或者请求执行队列中的请求进行冲突检测,如果检测到冲突,则当前请求除了会被添加到执行单元对应的冲突队列以外,还会被添加到与之存在冲突的请求的阻塞队列中,如果有多个请求与当前请求存在冲突,则会将当前请求添加到所有与之冲突的请求的阻塞队列中,且当前请求中会记录与它存在冲突的请求的数目。
当某个请求执行完毕的时候,如果它的阻塞队列不为空,表明存在和它之间存在冲突的晚于它到达的请求,随着当前请求执行完毕,就应该解除它对它的阻塞队列中的所有请求的阻塞,相应的,阻塞队列中的每一个请求会将与之存在冲突的请求的数目减1,当与之存在冲突的请求数目降为0的时候,该因为冲突而被阻塞的请求就可以从冲突队列移动到相应的执行队列中了。
如图4所示,图中401和402分别表示读请求冲突队列和读请求执行队列,403和404分别表示写请求冲突队列和写请求执行队列。当写请求405到达时,检测发现它和写请求冲突队列中的请求406,以及读请求执行队列中的请求407之间均存在冲突,所以会将请求405分别添加到请求406和请求407的阻塞队列中,同时将请求405添加到写请求冲突队列中,并记录请求405和先于它到达的请求之间存在的冲突数目为2。当读请求408到达时,检测发现它和写请求执行队列中请求409之间存在冲突,所以会将请求408添加到请求409的阻塞队列中,同时将请求408添加到读请求冲突队列中,并记录请求408和先于它到达的请求之间存在的冲突数目为1。
本发明的目的在于对接收到的请求进行读请求和写请求的拆分,然后分别进行请求处理,冲突检测,在本发明中冲突检测逻辑具体包括了两种,一种为新到达的请求与冲突队列中请求之间的冲突检测,如图5所示,另外一种是新到达的请求与执行队列中请求之间的冲突检测,如图6所示,具体如下:
检测当前I/O请求中的读请求或写请求与请求冲突队列或请求执行队列中的在先请求是否冲突的检测过程具体包括:
S101.初始化与新到达的当前请求req之间存在冲突的请求数目blockerNum为0;
S102.获取新到达的当前请求req对应的IO的字节区间[reqStart,reqEnd],其中,reqStart表示请求req的起始偏移地址,reqEnd为请求req的终止偏移地址;
S103.从请求冲突队列或请求执行队列中获取第一个请求;
S104.分析从请求冲突队列或请求执行队列中获取到的请求对应的IO的字节区间[blockerStart,blockerEnd],其中blockerStart表示获取到的请求的起始偏移地址,blockerEnd表示获取到的请求的终止偏移地址;
S105.如果获取到的请求的IO字节区间[blockerStart,blockerEnd]和req的IO字节区间[reqStart,reqEnd]之间满足blockerEnd<reqStart或者reqEnd<blockStart,则当前请求req和获取到的请求之间不存在冲突,跳转到步骤S107,否则存在冲突,将req添加到获取到的请求的阻塞队列中,在所述获取到的请求执行完毕之前,req都必须被阻塞;
S106.将blockerNum加1;
S107.如果请求冲突队列或请求执行队列中存在尚未进行冲突检测的请求,则从请求冲突队列或请求执行队列中获取下一个请求,并跳转到步骤S104,否则返回blockerNum。
如图7所示,当前I/O请求为写请求时,所述数据服务器端分区内部并发I/O调度方法具体包括如下步骤:
S201.检查读请求冲突队列是否为空,如果不为空,则逐一检查当前写请求与读请求冲突队列中的所有请求之间是否存在读写冲突,每当检测到一个冲突,则更新读请求冲突队列中与当前写请求之间存在冲突的请求计数,当读请求冲突队列中的所有请求都检测完毕之后,返回读请求冲突队列中与当前写请求之间存在冲突的请求的总数目,记作blockerNum1;
S202.检查读请求执行队列是否为空,如果不为空,则逐一检查当前写请求与读请求执行队列中的所有请求之间是否存在读写冲突,每当检测到一个冲突,则更新读请求执行队列中与当前写请求之间存在冲突的请求计数,当读请求执行队列中的所有请求都检测完毕之后,返回读请求执行队列中与当前写请求之间存在冲突的请求的总数目,记作blockerNum2;
S203.检查写请求冲突队列是否为空,如果不为空,则逐一检查当前写请求与写请求冲突队列中的所有请求之间是否存在写写冲突,每当检测到一个冲突,则更新写请求冲突队列中与当前写请求之间存在冲突的请求计数,当写请求冲突队列中的所有请求都检测完毕之后,返回写请求冲突队列中与当前写请求之间存在冲突的请求的总数目,记作blockerNum3;
S204.如果blockerNum1,blockerNum2和blockerNum3中至少一个不为0,则将当前写请求添加到写请求冲突队列,并更新当前写请求中记录的阻塞它的请求数目为blockerNum1,blockerNum2和blockerNum3之和,否则将当前写请求添加到写请求执行队列。
如图8所示,当前I/O请求为读请求时,所述数据服务器端分区内部并发I/O调度方法具体包括如下步骤:
S301.检测写请求冲突队列是否为空,如果不为空,则逐一检查当前读请求与写请求冲突队列中的所有请求之间是否存在读写冲突,每当检测到一个冲突,则更新写请求冲突队列中与当前读请求之间存在冲突的请求计数,当写请求冲突队列中的所有请求都检测完毕之后,返回写请求冲突队列中与当前读请求之间存在冲突的请求的总数目,记作blockerNum1;
S302.检测写请求执行队列是否为空,如果不为空,则逐一检查当前读请求与写请求执行队列中的所有请求之间是否存在读写冲突,每当检测到一个冲突,则更新写请求执行队列中与当前读请求之间存在冲突的请求计数,当写请求执行队列中的所有请求都检测完毕之后,返回写请求执行队列中与当前读请求之间存在冲突的请求的总数目,记作blockerNum2;
S303.如果blockerNum1和blockerNum2中至少一个不为0,则将当前读请求添加到读请求冲突队列,并更新当前读请求中记录的阻塞它的请求数目为blockerNum1和blockerNum2之和,否则将当前读请求添加到读请求执行队列。
如图9所示,在当前请求为写请求且执行完毕后,还包括如下步骤:
S401.获取当前执行完毕的写请求writeReq对应的阻塞队列blockQueue,其中存放的是所有被writeReq阻塞的请求;
S402.如果阻塞队列blockQueue为空,则跳转到步骤S408;
S403.获取阻塞队列blockQueue中下一个被阻塞的请求,记作blockee;
S404.从阻塞队列blockQueue中移除当前的blockee;
S405.将blockee中记录的阻塞它的请求的数目减1;
S406.检查blockee中记录的阻塞它的请求的数目是否为0,如果不为0,则跳转到步骤S402,否则,表明所有阻塞blockee的请求都已经执行完毕了,该blockee可以提交给执行队列了;
S407.如果当前blockee是读请求,则将当前的blockee添加到读请求执行队列,然后跳转到步骤S402,否则将当前的blockee添加到写请求执行队列,然后跳转到步骤S402;
S408.从写请求执行队列中移除writeReq。
如图10所示,在当前请求为读请求且执行完毕后,还包括如下步骤:
S501.获取当前执行完毕的读请求readReq对应的阻塞队列blockQueue,其中存放的是所有被readReq阻塞的请求;
S502.如果阻塞队列blockQueue为空,则跳转到步骤S507;
S503.获取阻塞队列blockQueue中下一个被阻塞的请求,记作blockee;
S504.从阻塞队列blockQueue中移除当前的blockee;
S505.将blockee中记录的阻塞它的请求的数目减1;
S506.检查blockee中记录的阻塞它的请求的数目是否为0,如果不为0,则跳转到步骤S502,否则,将该blockee加入到读请求执行队列,然后跳转到步骤S502;
S507.从读请求执行队列中移除readReq。
根据本发明的目的,本发明的在数据服务器端分区内部进行并发IO调度的方法,将读请求与写请求进行拆分,然后分别进行冲突检测,当请求执行完毕时,解除当前执行完毕的请求对所有存在于它的阻塞队列中的请求的阻塞,并从相应的请求执行队列中获取并提交下一个请求给请求执行单元,具体步骤如下:
(1)当接收到新的IO请求时,如果是写请求,则进入步骤(2),如果是读请求,则进入步骤(3);
(2)对于新接收到的写请求,要检查它与所有先于它接收到但尚未执行的请求之间是否存在读写冲突或者写写冲突;
(2.1)检查读写冲突,则需要检查它与读请求冲突队列和读请求执行队列中所有先于它接收到但尚未执行的读请求之间是否存在读写冲突,如果存在读写冲突,则将它添加到与之存在冲突的请求的阻塞队列中,并将它所记录的与之存在冲突的请求数目加1;
(2.2)检查写写冲突,则需要检查它与写请求冲突队列中所有先于它接收到但尚未执行的写请求之间是否存在写写冲突,如果存在写写冲突,则将它添加到与之存在冲突的请求的阻塞队列中,并将它所记录的与之存在冲突的请求数目加1;
(2.3)如果它与所有先于它接收到的请求之间都不存在读写冲突或者写写冲突,则将它添加到写请求执行队列中,否则只要它与任意一个先于它接收到但尚未执行的请求之间存在读写冲突或者写写冲突,则将它添加到写请求冲突队列;
(3)对于新接收到的读请求,要检查它与所有先于它接收到但尚未执行的请求之间是否存在读写冲突;
(3.1)检查读写冲突,则需要检查它与写请求冲突队列和写请求执行队列中所有先于它接收到但尚未执行的写请求之间是否存在读写冲突,如果存在读写冲突,则将它添加到与之存在冲突的请求的阻塞队列中,并将它所记录的与之存在冲突的请求数目加1;
(3.2)如果它与所有先于它接收到的请求之间都不存在读写冲突,则将它添加到读请求执行队列中,否则只要它与任意一个先于它接收到但尚未执行的请求之间存在读写冲突,则将它添加到读请求冲突队列;
(4)当请求执行完毕时,如果是写请求则进入步骤(5),如果是读请求,则进入步骤(6);
(5)当写请求执行完毕之后,检查它是否阻塞了其它的请求;
(5.1)如果没有阻塞其它请求,则跳转到步骤(5.3);
(5.2)如果阻塞了其它请求,则获取它所阻塞的所有请求,并将这些被阻塞的请求中的每一个请求所记录的与之存在冲突的请求的数目减1,如果某个被阻塞的请求中记录的与之存在冲突的请求的数目降为0,则将该请求添加到相应的执行队列,否则被阻塞的的请求仍然被保留在相应的冲突队列中;
(5.3)从写请求执行队列中获取下一个写请求并提交给写执行单元执行;
(6)当读请求执行完毕之后,检查它是否阻塞了其它的请求;
(6.1)如果没有阻塞其它请求,则跳转到步骤(6.3);
(6.2)如果阻塞了其它请求,则获取它所阻塞的所有请求,并将这些被阻塞的请求中的每一个请求所记录的与之存在冲突的请求的数目减1,如果某个被阻塞的请求中记录的与之存在冲突的请求的数目降为0,则将该请求添加到相应的执行队列,否则被阻塞的的请求仍然被保留在相应的冲突队列中;
(6.3)从读请求执行队列中获取下一个读请求并提交给读执行单元执行。
本发明还提出了一种数据服务器端分区内部并发I/O调度系统,所述系统包括数据服务器、请求分发器、至少一个执行单元对以及冲突检测单元,其中,所述数据服务器接收到来自网络的I/O请求,经过所述请求分发器分发给对应的所述至少一个执行单元对,所述冲突检测单元对所述执行单元对中的读请求或者写请求进行冲突检测,将存在冲突的读请求或写请求加入到对应的请求冲突队列中,将不存在冲突的读请求或写请求加入到对应的请求执行队列中。
所述执行单元对包括一个读请求执行单元和一个写请求执行单元,所述读请求执行单元用于执行读请求,包括2个队列:读请求执行队列和读请求冲突队列,所述读请求冲突队列中存放那些与先于它到达的其它请求存在冲突的读请求,所述读请求执行队列中存放那些与先于它到达的其它请求不存在冲突的读请求或者存在冲突但是冲突已经解除的读请求;
所述写请求执行单元用于执行写请求,包括2个队列:写请求执行队列和写请求冲突队列,所述写请求冲突队列中存放那些与先于它到达的其它请求存在冲突的写请求,所述写请求执行队列中存放那些与先于它到达的其它请求不存在冲突的写请求或者存在冲突但是冲突已经解除的写请求。
所述冲突检测单元还用于,如果检测到冲突,则当前请求除了会被添加到执行单元对应的冲突队列以外,还将该请求添加到与之存在冲突的请求的阻塞队列中,如果有多个请求与当前请求存在冲突,则会将当前请求添加到所有与之冲突的请求的阻塞队列中,且当前请求中会记录与它存在冲突的请求的数目。
本发明通过避免不存在读写冲突或者写写冲突的请求之间的无谓的等待,有效提升数据服务器端分区内部IO的并发度和响应时延,提升数据服务器的IO性能,进而提升存储系统的整体IO性能。
对于本领域技术人员而言,显然本发明实施例不限于上述示范性实施例的细节,而且在不背离本发明实施例的精神或基本特征的情况下,能够以其他的具体形式实现本发明实施例。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明实施例的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明实施例内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统、装置或终端权利要求中陈述的多个单元、模块或装置也可以由同一个单元、模块或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施方式仅用以说明本发明实施例的技术方案而非限制,尽管参照以上较佳实施方式对本发明实施例进行了详细说明,本领域的普通技术人员应当理解,可以对本发明实施例的技术方案进行修改或等同替换都不应脱离本发明实施例的技术方案的精神和范围。

Claims (10)

1.一种数据服务器端分区内部并发I/O调度方法,其特征在于,所述方法包括,
接收I/O请求,检测当前I/O请求中的读请求或写请求与请求冲突队列或请求执行队列中的在先请求是否冲突,将存在冲突的读请求或写请求加入到对应的请求冲突队列中,将不存在冲突的读请求或写请求加入到对应的请求执行队列中。
2.根据权利要求1所述的数据服务器端分区内部并发I/O调度方法,其特征在于,所述检测当前I/O请求中的读请求或写请求与请求冲突队列或请求执行队列中的在先请求是否冲突,将存在冲突的读请求或写请求加入到对应的请求冲突队列中,将不存在冲突的读请求或写请求加入到对应的请求执行队列中,还包括,检测所有先于当前请求到达的且仍处于请求冲突队列或者请求执行队列中的请求进行冲突检测,如果检测到冲突,则除了将当前请求添加到对应的冲突队列以外,还将当前请求添加到与之存在冲突的请求的阻塞队列中,如果有多个请求与当前请求存在冲突,则会将当前请求添加到所有与之冲突的请求的阻塞队列中,且当前请求中会记录与它存在冲突的请求的数目。
3.根据权利要求2所述的数据服务器端分区内部并发I/O调度方法,其特征在于,所述检测当前I/O请求中的读请求或写请求与请求冲突队列或请求执行队列中的在先请求是否冲突的检测过程具体包括:
S101.初始化与新到达的当前请求req之间存在冲突的请求数目blockerNum为0;
S102.获取新到达的当前请求req对应的IO的字节区间[reqStart,reqEnd],其中,reqStart表示请求req的起始偏移地址,reqEnd为请求req的终止偏移地址;
S103.从请求冲突队列或请求执行队列中获取第一个请求;
S104.分析从请求冲突队列或请求执行队列中获取到的请求对应的IO的字节区间[blockerStart,blockerEnd],其中blockerStart表示获取到的请求的起始偏移地址,blockerEnd表示获取到的请求的终止偏移地址;
S105.如果获取到的请求的IO字节区间[blockerStart,blockerEnd]和req的IO字节区间[reqStart,reqEnd]之间满足blockerEnd<reqStart或者reqEnd<blockStart,则当前请求req和获取到的请求之间不存在冲突,跳转到步骤S107,否则存在冲突,将req添加到获取到的请求的阻塞队列中,在所述获取到的请求执行完毕之前,req都必须被阻塞;
S106.将blockerNum加1;
S107.如果请求冲突队列或请求执行队列中存在尚未进行冲突检测的请求,则从请求冲突队列或请求执行队列中获取下一个请求,并跳转到步骤S104,否则返回blockerNum。
4.根据权利要求3所述的数据服务器端分区内部并发I/O调度方法,其特征在于,当前I/O请求为写请求时,所述数据服务器端分区内部并发I/O调度方法具体包括如下步骤:
S201.检查读请求冲突队列是否为空,如果不为空,则逐一检查当前写请求与读请求冲突队列中的所有请求之间是否存在读写冲突,每当检测到一个冲突,则更新读请求冲突队列中与当前写请求之间存在冲突的请求计数,当读请求冲突队列中的所有请求都检测完毕之后,返回读请求冲突队列中与当前写请求之间存在冲突的请求的总数目,记作blockerNum1;
S202.检查读请求执行队列是否为空,如果不为空,则逐一检查当前写请求与读请求执行队列中的所有请求之间是否存在读写冲突,每当检测到一个冲突,则更新读请求执行队列中与当前写请求之间存在冲突的请求计数,当读请求执行队列中的所有请求都检测完毕之后,返回读请求执行队列中与当前写请求之间存在冲突的请求的总数目,记作blockerNum2;
S203.检查写请求冲突队列是否为空,如果不为空,则逐一检查当前写请求与写请求冲突队列中的所有请求之间是否存在写写冲突,每当检测到一个冲突,则更新写请求冲突队列中与当前写请求之间存在冲突的请求计数,当写请求冲突队列中的所有请求都检测完毕之后,返回写请求冲突队列中与当前写请求之间存在冲突的请求的总数目,记作blockerNum3;
S204.如果blockerNum1,blockerNum2和blockerNum3中至少一个不为0,则将当前写请求添加到写请求冲突队列,并更新当前写请求中记录的阻塞它的请求数目为blockerNum1,blockerNum2和blockerNum3之和,否则将当前写请求添加到写请求执行队列。
5.根据权利要求3所述的数据服务器端分区内部并发I/O调度方法,其特征在于,当前I/O请求为读请求时,所述数据服务器端分区内部并发I/O调度方法具体包括如下步骤:
S301.检测写请求冲突队列是否为空,如果不为空,则逐一检查当前读请求与写请求冲突队列中的所有请求之间是否存在读写冲突,每当检测到一个冲突,则更新写请求冲突队列中与当前读请求之间存在冲突的请求计数,当写请求冲突队列中的所有请求都检测完毕之后,返回写请求冲突队列中与当前读请求之间存在冲突的请求的总数目,记作blockerNum1;
S302.检测写请求执行队列是否为空,如果不为空,则逐一检查当前读请求与写请求执行队列中的所有请求之间是否存在读写冲突,每当检测到一个冲突,则更新写请求执行队列中与当前读请求之间存在冲突的请求计数,当写请求执行队列中的所有请求都检测完毕之后,返回写请求执行队列中与当前读请求之间存在冲突的请求的总数目,记作blockerNum2;
S303.如果blockerNum1和blockerNum2中至少一个不为0,则将当前读请求添加到读请求冲突队列,并更新当前读请求中记录的阻塞它的请求数目为blockerNum1和blockerNum2之和,否则将当前读请求添加到读请求执行队列。
6.根据权利要求4所述的数据服务器端分区内部并发I/O调度方法,其特征在于,在当前请求为写请求且执行完毕后,还包括如下步骤:
S401.获取当前执行完毕的写请求writeReq对应的阻塞队列blockQueue,其中存放的是所有被writeReq阻塞的请求;
S402.如果阻塞队列blockQueue为空,则跳转到步骤S408;
S403.获取阻塞队列blockQueue中下一个被阻塞的请求,记作blockee;
S404.从阻塞队列blockQueue中移除当前的blockee;
S405.将blockee中记录的阻塞它的请求的数目减1;
S406.检查blockee中记录的阻塞它的请求的数目是否为0,如果不为0,则跳转到步骤S402,否则,表明所有阻塞blockee的请求都已经执行完毕了,该blockee可以提交给执行队列了;
S407.如果当前blockee是读请求,则将当前的blockee添加到读请求执行队列,然后跳转到步骤S402,否则将当前的blockee添加到写请求执行队列,然后跳转到步骤S402;
S408.从写请求执行队列中移除writeReq。
7.根据权利要求5所述的数据服务器端分区内部并发I/O调度方法,其特征在于,在当前请求为读请求且执行完毕后,还包括如下步骤:
S501.获取当前执行完毕的读请求readReq对应的阻塞队列blockQueue,其中存放的是所有被readReq阻塞的请求;
S502.如果阻塞队列blockQueue为空,则跳转到步骤S507;
S503.获取阻塞队列blockQueue中下一个被阻塞的请求,记作blockee;
S504.从阻塞队列blockQueue中移除当前的blockee;
S505.将blockee中记录的阻塞它的请求的数目减1;
S506.检查blockee中记录的阻塞它的请求的数目是否为0,如果不为0,则跳转到步骤S502,否则,将该blockee加入到读请求执行队列,然后跳转到步骤S502;
S507.从读请求执行队列中移除readReq。
8.一种数据服务器端分区内部并发I/O调度系统,其特征在于,所述系统包括数据服务器、请求分发器、至少一个执行单元对以及冲突检测单元,其中,所述数据服务器接收到来自网络的I/O请求,经过所述请求分发器分发给对应的所述至少一个执行单元对,所述冲突检测单元对所述执行单元对中的读请求或者写请求进行冲突检测,将存在冲突的读请求或写请求加入到对应的请求冲突队列中,将不存在冲突的读请求或写请求加入到对应的请求执行队列中。
9.根据权利要求8所述的数据服务器端分区内部并发I/O调度系统,其特征在于,所述执行单元对包括一个读请求执行单元和一个写请求执行单元,所述读请求执行单元用于执行读请求,包括2个队列:读请求执行队列和读请求冲突队列,所述读请求冲突队列中存放那些与先于它到达的其它请求存在冲突的读请求,所述读请求执行队列中存放那些与先于它到达的其它请求不存在冲突的读请求或者存在冲突但是冲突已经解除的读请求;
所述写请求执行单元用于执行写请求,包括2个队列:写请求执行队列和写请求冲突队列,所述写请求冲突队列中存放那些与先于它到达的其它请求存在冲突的写请求,所述写请求执行队列中存放那些与先于它到达的其它请求不存在冲突的写请求或者存在冲突但是冲突已经解除的写请求。
10.根据权利要求8所述的数据服务器端分区内部并发I/O调度系统,其特征在于,所述冲突检测单元还用于,如果检测到冲突,则当前请求除了会被添加到执行单元对应的冲突队列以外,还将该请求添加到与之存在冲突的请求的阻塞队列中,如果有多个请求与当前请求存在冲突,则会将当前请求添加到所有与之冲突的请求的阻塞队列中,且当前请求中会记录与它存在冲突的请求的数目。
CN201911089216.9A 2019-11-08 2019-11-08 一种数据服务器端分区内部并发i/o调度方法及系统 Active CN110837411B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911089216.9A CN110837411B (zh) 2019-11-08 2019-11-08 一种数据服务器端分区内部并发i/o调度方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911089216.9A CN110837411B (zh) 2019-11-08 2019-11-08 一种数据服务器端分区内部并发i/o调度方法及系统

Publications (2)

Publication Number Publication Date
CN110837411A true CN110837411A (zh) 2020-02-25
CN110837411B CN110837411B (zh) 2023-05-12

Family

ID=69574827

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911089216.9A Active CN110837411B (zh) 2019-11-08 2019-11-08 一种数据服务器端分区内部并发i/o调度方法及系统

Country Status (1)

Country Link
CN (1) CN110837411B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111273888A (zh) * 2020-03-06 2020-06-12 中国人民解放军国防科技大学 一种地址相关读写队列维序的方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044404A (en) * 1997-06-20 2000-03-28 International Business Machines Corporation Apparatus, method and computer program for providing arbitrary locking modes for controlling concurrent access to server resources
CN102521300A (zh) * 2011-11-30 2012-06-27 华中科技大学 基于嵌入式虚拟化平台的域间文件数据共享方法
CN102929711A (zh) * 2012-09-24 2013-02-13 浙江大学 一种软件实时事务内存的实现方法
US20130326536A1 (en) * 2012-05-30 2013-12-05 Jason L. Connor Systems and methods for detecting conflicting operations and providing resolution in a tasking system
CN107450844A (zh) * 2016-06-01 2017-12-08 忆锐公司 存储器控制器和存储模块以及包括其的处理器
CN110347329A (zh) * 2018-04-02 2019-10-18 深信服科技股份有限公司 I/o数据读写并发冲突的处理方法、系统及相关装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044404A (en) * 1997-06-20 2000-03-28 International Business Machines Corporation Apparatus, method and computer program for providing arbitrary locking modes for controlling concurrent access to server resources
CN102521300A (zh) * 2011-11-30 2012-06-27 华中科技大学 基于嵌入式虚拟化平台的域间文件数据共享方法
US20130326536A1 (en) * 2012-05-30 2013-12-05 Jason L. Connor Systems and methods for detecting conflicting operations and providing resolution in a tasking system
CN102929711A (zh) * 2012-09-24 2013-02-13 浙江大学 一种软件实时事务内存的实现方法
CN107450844A (zh) * 2016-06-01 2017-12-08 忆锐公司 存储器控制器和存储模块以及包括其的处理器
CN110347329A (zh) * 2018-04-02 2019-10-18 深信服科技股份有限公司 I/o数据读写并发冲突的处理方法、系统及相关装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111273888A (zh) * 2020-03-06 2020-06-12 中国人民解放军国防科技大学 一种地址相关读写队列维序的方法及装置
CN111273888B (zh) * 2020-03-06 2022-03-11 中国人民解放军国防科技大学 一种地址相关读写队列维序的方法及装置

Also Published As

Publication number Publication date
CN110837411B (zh) 2023-05-12

Similar Documents

Publication Publication Date Title
US8190857B2 (en) Deleting a shared resource node after reserving its identifier in delete pending queue until deletion condition is met to allow continued access for currently accessing processor
US9740495B2 (en) Implementing out of order processor instruction issue queue
CN105468718B (zh) 数据一致性处理方法、装置和系统
CN102945278A (zh) 一种数据库记录重做日志的方法和装置
CN105302489B (zh) 一种异构多核远程嵌入式存储器系统与方法
CN111309805B (zh) 数据库的数据读写方法及装置
CN109101662B (zh) 区块生成方法、装置、设备及存储介质
WO2014044109A1 (en) Method and apparatus for virus scanning
US20140090062A1 (en) Method and apparatus for virus scanning
CN114356223A (zh) 存储器的访问方法及装置、芯片、电子设备
CN110806942B (zh) 数据处理的方法和装置
CN110413413A (zh) 一种数据写入方法、装置、设备及存储介质
CN114035849A (zh) 用于执行原子操作的系统、原子操作方法及装置
WO2019060386A2 (en) SYSTEM AND METHOD FOR MANAGING MULTI-HEART ACCESS TO SHARED PORTS
CN110837411A (zh) 一种数据服务器端分区内部并发i/o调度方法及系统
CN115269289A (zh) 一种慢盘检测方法、装置、电子设备及存储介质
CN112368676A (zh) 处理数据的方法和设备
US20100153678A1 (en) Memory management apparatus and method
CN117217977B (zh) Gpu的数据访问处理方法、装置及存储介质
CN117714466A (zh) 一种跨分片事务处理方法及系统
CN109491785B (zh) 内存访问调度方法、装置及设备
CN115629822B (zh) 一种基于多核处理器的并发事务处理方法及其系统
US11582133B2 (en) Apparatus and method for distributed processing of identical packet in high-speed network security equipment
US10331652B2 (en) Method and apparatus for determining hot page in database
US20090249343A1 (en) System, method, and computer program product for receiving timer objects from local lists in a global list for being used to execute events associated therewith

Legal Events

Date Code Title Description
PB01 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