CN106469088B - 一种i/o请求调度方法及调度器 - Google Patents
一种i/o请求调度方法及调度器 Download PDFInfo
- Publication number
- CN106469088B CN106469088B CN201510519679.XA CN201510519679A CN106469088B CN 106469088 B CN106469088 B CN 106469088B CN 201510519679 A CN201510519679 A CN 201510519679A CN 106469088 B CN106469088 B CN 106469088B
- Authority
- CN
- China
- Prior art keywords
- request
- scheduling
- requests
- time
- request object
- 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.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明为一种I/O请求调度方法及调度器,实施例公开了一种基于时间片的请求调度方法,在进入当前调度时段时,为每个I/O请求对象分配一个时间片,并为每个I/O请求对象设定调度时间阈值;在当前调度时段内,轮流从时间片尚未用完且具有I/O请求的I/O请求对象中选择I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,当调度时长达到所选择的I/O请求对象的调度时间阈值时,或者,当调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。本申请可以避免响应I/O请求对象的I/O请求的时间过长的问题。
Description
技术领域
本发明涉及I/O调度技术领域,尤其涉及一种I/O请求调度方法及调度器。
背景技术
通常,在数据中心尤其是虚拟化数据中心中,存储器由多个I/O请求对象共享使用,在这种共享使用的场景下,对于服务质量QoS有一定的要求,即:要求能够公平地为多个I/O请求对象分配存储器的资源,并且高效地利用所分配的资源。I/O调度器在服务质量的保障方面起着决定性作用。
目前,已有的基于时间片且满足一定服务质量保障公平性的I/O调度器包括:CFQ(Completely Fair Queuing)调度器、Argon调度器和FIOS(Flash I/O Scheduler)调度器:CFQ在正在服务的I/O请求对象的时间片尚未用完且目前没有I/O请求时,会空闲等待一段时间,等待同一I/O请求对象的下一个I/O请求的达到。Argon与CFQ的工作原理类似。FIOS将CPU时间划分为调度时段,在单个调度时段内部,为每个I/O请求对象分配时间片;在单个调度时段内,当I/O请求对象的I/O请求队列非空且时间片尚未用完时,连续服务此I/O请求对象的I/O请求;当I/O请求对象的时间片用完后,在本调度时段内不再服务此I/O请求对象的I/O请求。
但是,CFQ与Argon在一个时间片内连续服务或空闲等待同一个I/O请求对象的I/O请求,会导致其它I/O请求对象的I/O请求长时间得不到服务,从而响应I/O请求对象的I/O请求的时间过长。而FIOS在一个I/O请求对象的时间片尚未用完且具有I/O请求时,则连续服务此I/O请求对象的I/O请求,不服务其它I/O请求对象的I/O请求,也会导致其它I/O请求对象的I/O请求长时间得不到服务,因此还是存在响应I/O请求对象的I/O请求的时间过长的问题。
因此,已有的基于时间片且满足一定服务质量保障公平性的I/O调度器,均存在响应I/O请求对象的I/O请求的时间过长的问题。
发明内容
本发明实施例提供了一种I/O请求调度方法及调度器,用于解决现有的I/O调度器响应I/O请求对象的I/O请求的时间过长的问题。
为解决上述技术问题,本发明实施例提供以下技术方案:
本申请的第一方面提供了一种I/O请求调度方法,包括:
在进入当前调度时段时,侦测在所述当前时段访问存储设备的I/O请求对象,为侦测到的每个I/O请求对象分配一个时间片,并为侦测到的每个I/O请求对象设定调度时间阈值;其中,为侦测到的每个I/O请求对象分配的时间片之和小于或等于所述当前调度时段;
在当前调度时段内,轮流对时间片尚未用完且具有I/O请求的I/O请求对象执行如下步骤,直到所述当前调度时段内不存在时间片尚未用完且具有I/O请求的I/O请求对象:
从所述时间片尚未用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。
在本申请的第一方面的第一种实现方式中,还包括:
在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;
在启动所述预期计时后,当所述预期计时的时长尚未达到预设的计时阈值,且侦测到时间片尚未用完的I/O请求对象产生新的I/O请求时,结束所述预期计时,并调度所述新的I/O请求。
在本申请的第一方面的第二种实现方式中,还包括:
在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;
在启动所述预期计时后,轮流对时间片已经用完且具有I/O请求的I/O请求对象执行如下步骤:
从所述时间片已经用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。
在本申请的第一方面的第三种实现方式中,所述每个I/O请求对象的I/O请求包括:读请求和写请求;所述读请求排在读请求队列中,所述写请求排在写请求队列中;
则,所述调度所选择的I/O请求对象的I/O请求包括:
在预设的读请求调度时长内,调度所述读请求队列中的读请求;
在预设的写请求调度时长内,调度所述写请求队列中的写请求;
其中,每个I/O请求对象的读请求调度时长与写请求调度时长之和小于或等于每个I/O请求对象的调度时间阈值。
在本申请的第一方面的第四种实现方式中,还包括:
在调度所述读请求队列中的读请求时,如果所述写请求队列中的写请求发生阻塞,则记录所述写请求阻塞时长,并在所述写请求阻塞时长达到预设的写请求阻塞时间阈值时,调度所述写请求队列中的写请求;
在调度所述写请求队列中的写请求时,如果所述读请求队列中的读请求发生阻塞,则记录所述读请求阻塞时长,并在所述读请求阻塞时长达到预设的读请求阻塞时间阈值时,调度所述读请求队列中的读请求。
在本申请的第一方面的第五种实现方式中,所述为侦测到的每个I/O请求对象设定调度时间阈值,具体为:根据侦测到的I/O请求对象的个数和侦测到的每个I/O请求对象的响应时间需求,为侦测到的每个I/O请求对象设定调度时间阈值。
本申请的第二方面提供了一种I/O请求调度器,包括:
分配模块,用于在进入当前调度时段时,侦测在所述当前时段访问存储设备的I/O请求对象,为侦测到的每个I/O请求对象分配一个时间片,并为侦测到的每个I/O请求对象设定调度时间阈值;其中,为侦测到的每个I/O请求对象分配的时间片之和小于或等于所述当前调度时段;
第一调度模块,用于在当前调度时段内,轮流对时间片尚未用完且具有I/O请求的I/O请求对象执行如下步骤,直到所述当前调度时段内不存在时间片尚未用完且具有I/O请求的I/O请求对象:
从所述时间片尚未用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。
在本申请的第二方面的第一种实现方式中,还包括:
预期计时模块,用于在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;
第二调度模块,用于在启动所述预期计时后,当所述预期计时的时长尚未达到预设的计时阈值,且侦测到时间片尚未用完的I/O请求对象产生新的I/O请求时,结束所述预期计时,并调度所述新的I/O请求。
在本申请的第二方面的第二种实现方式中,还包括:
预期计时模块,用于在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;
第三调度模块,用于在启动所述预期计时后,轮流对时间片已经用完且具有I/O请求的I/O请求对象执行如下步骤:
从所述时间片已经用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。
在本申请的第二方面的第三种实现方式中,所述每个I/O请求对象的I/O请求包括:读请求和写请求;所述读请求排在读请求队列中,所述写请求排在写请求队列中;
则,所述第一调度模块在调度所选择的I/O请求对象的I/O请求时,用于:
在所述读请求调度时长内,调度所述读请求队列中的读请求;
在所述写请求调度时长内,调度所述写请求队列中的写请求;
其中,每个I/O请求对象的读请求调度时长与写请求调度时长之和小于或等于每个I/O请求对象的调度时间阈值。
在本申请的第二方面的第四种实现方式中,所述第一调度模块,还用于:
在调度所述读请求队列中的读请求时,如果所述写请求队列中的写请求发生阻塞,则记录所述写请求阻塞时长,并在所述写请求阻塞时长达到预设的写请求阻塞时间阈值时,调度所述写请求队列中的写请求;
在调度所述写请求队列中的写请求时,如果所述读请求队列中的读请求发生阻塞,则记录所述读请求阻塞时长,并在所述读请求阻塞时长达到预设的读请求阻塞时间阈值时,调度所述读请求队列中的读请求。
在本申请的第二方面的第五种实现方式中,在为侦测到的每个I/O请求对象设定调度时间阈值时,所述分配模块具体用于:根据侦测到的I/O请求对象的个数和侦测到的每个I/O请求对象的响应时间需求,为侦测到的每个I/O请求对象设定调度时间阈值。
由上可见,本申请提供的技术方案,对每个调度时段的访问存储设备的I/O请求对象在设定时间片后设定调度时间阈值;并在每个调度时段内,根据为每个I/O请求对象设定的调度时间阈值轮流调度I/O请求对象的I/O请求,而不是等待每个I/O请求对象的时间片用完之后,再进行下一个I/O请求对象的I/O请求的调度,从而可以尽快响应其它I/O请求对象的I/O请求,防止其它I/O请求对象等待的时间过长的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种I/O请求调度方法的一个实施例的流程示意图;
图2为本发明提供的一种I/O请求调度方法的另一个实施例的流程示意图;
图3为本发明提供的一种I/O请求调度方法的再一个实施例的流程示意图;
图4为本发明提供的一种I/O请求调度器的一个实施例的结构示意图;
图5为本发明提供的一种I/O请求调度器的另一个实施例的结构示意图;
图6为本发明提供的一种I/O请求调度器的再一个实施例的结构示意图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本申请提供的技术方案进行详细说明:
在数据中心尤其是虚拟化数据中心中,存储器由多个I/O请求对象,例如多个进程、多个终端、或者多个应用程序共享使用,在这种共享使用的场景下,对于服务质量QoS有一定的要求,即:要求能够公平地为多个I/O请求对象分配存储器的资源,并且高效地利用所分配的资源。I/O请求调度器在服务质量的保障方面起着决定性作用。
在宏观上,多个I/O请求对象可以同时运行。但在微观上,由于只有一个CPU,不能同时处理所有I/O请求对象的I/O请求,而为了保证服务质量QoS,其中的一种方法就是引入“时间片”,使得各个I/O请求对象可以轮流执行。
在一种情况下,I/O请求调度器为各个I/O请求对象分配时间片,所分配的时间片即为该I/O请求对象的I/O请求允许被调用的最长时间,如果在一个I/O请求对象的时间片用完时该I/O请求对象的I/O请求还没处理完毕,则I/O请求调度器会调度另一个I/O请求对象的I/O请求,由于CPU的处理速度很快,只要各个时间片之间的间隔适当,就可以使各个I/O请求对象从表面上看是同时进行的。
在另一种情况下,还可以把I/O请求调度器的调度过程划分多个调度时段,然后为每个调度时段内的各个I/O请求对象分配时间片,在该调度时段内,如果在一个I/O请求对象的时间片用完时该I/O请求对象的I/O请求还没有被调度完毕,则I/O请求调度器会调用另一个I/O请求对象的I/O请求,由于CPU的处理速度很快,只要各个调度时段和各个时间片之间的间隔适当,就可以使各个I/O请求对象从表面上看是同时进行的。
在上述应用场景下,本申请提供一种I/O请求调度方法及I/O请求调度器。
图1为本发明提供的一种I/O请求调度方法的一个实施例的流程示意图。
本申请实施例预先划分为了多个调度时段,并且在进入任意一个调度时段时,轮流调度在该调度时段内访问存储设备的I/O请求对象的I/O请求。
需要说明的是:所述多个调度时段的时间长短并不一定相同。
参照图1所示,本申请实施例提供的I/O请求调度方法,应用于I/O请求调度器中,包括如下步骤:
S000:在进入当前调度时段时,侦测在所述当前时段访问存储设备的I/O请求对象,为侦测到的每个I/O请求对象分配一个时间片,并为侦测到的每个I/O请求对象设定调度时间阈值;
其中,为侦测到的每个I/O请求对象分配的时间片之和小于或等于所述当前调度时段;
在本申请实施例中,I/O请求调度器会为每个I/O请求对象预先设定连续调度该I/O请求对象的I/O请求的最长时间,即调度时间阈值,各个I/O请求对象的调度时间阈值可以相同也可以不同,且同一个I/O请求对象的调度时间阈值在不同的调度时段内可以相同也可以不同。调度时间阈值可以是I/O调度器根据各个I/O请求对象的响应时间需求和I/O请求对象的个数计算并设置的,比如:若每个I/O请求对象的响应时间需求均为10毫秒,而I/O请求对象的个数为n,则调度时间阈值可以为10/n毫秒。
在当前调度时段内,对时间片尚未用完且具有I/O请求的I/O请求对象执行如下步骤:
S100:在当前调度时段内,从时间片尚未用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象;
在本申请实施例中,当存在时间片尚未用完且具有I/O请求的I/O请求对象时,从中选择一个具有I/O请求且时间片没有用完的I/O请求对象,作为所选择的I/O请求对象。
在选择I/O请求对象时,可以根据预设规则进行选取,这里的预设规则可以包括按照I/O请求对象已获得调度的时长从少到多的顺序,或者I/O请求对象的优先级从高到低的顺序,或者根据I/O请求对象已获得调度的时长占分配的时间片的比例由小到大的顺序等。按照预设规则进行选择可以最大限度的保证对于每个I/O请求对象的服务质量和公平性。
S200:调度所选择的I/O请求对象的I/O请求,并记录连续调度所选择的I/O请求对象的I/O请求所占用的调度时长;
S300:当调度时长达到所选择的I/O请求对象的调度时间阈值时,或者,当调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的所有I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度;
在本申请实施例中,当调度时长尚未达到所选择的I/O请求对象的调度时间阈值时,若所选择的I/O请求对象的所有I/O请求还未被调度完成,则继续调度所选择的I/O请求对象的I/O请求。
在步骤S100到步骤S300中,从所述时间片尚未用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,当所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的所有I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。
在本申请实施例中,调度时长达到所选择的I/O请求对象的调度时间阈值时,所选择的I/O请求对象可能还存在未被调度的I/O请求,或者所选择的I/O请求对象的I/O请求可能恰好被调度完成,无论如何,在调度时长达到所选择的I/O请求对象的调度时间阈值时,均结束对所选择的I/O请求对象的I/O请求的调度,不再持续调度所选择的I/O请求对象的I/O请求,以尽快响应其它I/O请求对象的I/O请求。
在本申请实施例中,在所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的所有I/O请求均被调度完成时,即调度时长没有达到所选择的I/O请求对象的调度时间阈值时所选择的I/O请求对象的所有I/O请求就已经被调度完成,则立即结束对所选择的I/O请求对象的I/O请求的调度,不空闲等待所选择的I/O请求对象发送新的I/O请求,以尽快响应其它I/O请求对象的I/O请求。
在本申请实施例中,其它I/O请求对象是所述时间片尚未用完且具有I/O请求的I/O请求对象中除所选择的I/O请求对象之外的其它I/O请求对象。
S400:判断当前调度时段内是否还存在时间片尚未用完且具有I/O请求的I/O请求对象;如果存在,返回S100;如果不存在,则执行步骤S500。
步骤S500:等待各I/O请求对象的新的I/O请求。
结束对时间片尚未用完且具有I/O请求的I/O请求对象的I/O请求的调度。
在本申请实施例中,当不存在时间片尚未用完且具有I/O请求的I/O请求对象时,分为两种情况,一是时间片尚未用完的I/O请求对象的I/O请求均被调度完成,二是所有I/O请求对象的时间片全部用完。
本申请实施例中,在所有I/O请求对象的时间片全部用完时,可以从当前调度时段切换进入下一调度时段。
本申请实施例提供的技术方案,对每个调度时段的访问存储设备的I/O请求对象在设定时间片后设定调度时间阈值;并在每个调度时段内,根据为每个I/O请求对象设定的调度时间阈值轮流调度I/O请求对象的I/O请求,而不是等待每个I/O请求对象的时间片用完之后,再进行下一个I/O请求对象的I/O请求的调度,从而可以尽快响应其它I/O请求对象的I/O请求,防止其它I/O请求对象等待的时间过长的问题。
图2为本发明提供的一种I/O请求调度方法的另一个实施例的流程示意图。
参照图2所示,本申请实施例提供的I/O请求调度方法,包括:
S120:在当前调度时段内,从时间片尚未用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象;
S220:调度所选择的I/O请求对象的I/O请求,并记录连续调度所选择的I/O请求对象的I/O请求所占用的调度时长;
S320:当调度时长达到所选择的I/O请求对象的调度时间阈值时,或者,当调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的所有I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度;
S420:判断当前调度时段内是否还存在时间片尚未用完且具有I/O请求的I/O请求对象;如果存在,返回S120;如果不存在,进入S520;
S520:判断是否所有时间片尚未用完且具有I/O请求的I/O请求对象的I/O请求均被调度完成;如果否,进入S920;如果是,进入S620;
在本申请实施例中,当不存在时间片尚未用完且具有I/O请求的I/O请求对象时,可能有两种情况:时间片尚未用完的I/O请求对象的I/O请求均被调度完成、或者所有I/O请求对象的时间片均已用完;
S620:启动预期计时,并记录所述预期计时的时长。
S720:判断所述预期计时的时长是否达到预设的计时阈值;如果是,进入S920;如果否,进入S820;
S820:时间片尚未用完的I/O请求对象生成新的I/O请求时,结束预期计时,调度所述新的I/O请求,并在所述新的I/O请求均被调度完成后,重新启动预期计时,并重新记录所述预期计时的时长,直到记录的预期计时的时长达到预设的计时阈值时,进入S920;
在预期计时期间,当所述预期计时的时长尚未达到预设的计时阈值且时间片尚未用完的I/O请求对象生成新的I/O请求时,结束预期计时,调度所述新的I/O请求,并在所述新的I/O请求均被调度完成后,重新启动预期计时,并重新记录所述预期计时的时长。
可以理解的是,本申请实施例提供的技术方案,在调度新的I/O请求时,如果存在多个具有时间片的I/O请求对象生成了新的I/O请求,同样可以判断对于单个I/O请求对象的I/O请求的调度时长是否达到了调度时间阈值,如果达到,则结束对当前正在调度的I/O请求对象的调度,切换调度其余的I/O请求对象的新的I/O请求,具体的方法如上述实施例所述,此处不再赘述。这样,在预期计时期间,当时间片尚未用完的I/O请求对象生成新的I/O请求时,I/O调度器会调度新的I/O请求,可以防止存储器空闲,提高存储器的吞吐率。
S920:在所述预期计时达到预设的计时阈值,或者当前调度时段的所有I/O请求对象的时间片都用完之后,从当前调度时段进入下一调度时段。
在本申请实施例提供的技术方案,在所有I/O请求对象的时间片全部用完时,可以结束当前调度时段的调度,并从当前调度时段切换进入下一调度时段。在预期计时的时长达到预设的计时阈值时,也可以结束当前调度时段的调度,并从当前调度时段切换进入下一调度时段。
在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;在启动所述预期计时后,当所述预期计时的时长尚未达到预设的计时阈值,且侦测到时间片尚未用完的I/O请求对象产生新的I/O请求时,结束所述预期计时,并调度所述新的I/O请求。这样,可以在启动预期计时后侦测时间片尚未用完的I/O请求对象是否产生新的I/O请求,并在侦测到新的I/O请求时调度新的I/O请求,能够进一步提升调度效率。
图3为本发明提供的一种I/O请求调度方法的再一个实施例的流程示意图。
参照图3所示,本申请实施例提供的I/O请求调度方法,在上述实施例的基础上,在时间片尚未用完且具有I/O请求的I/O请求对象的I/O请求均被调度完成,启动预期计时后,在S620的预期计时期间,还包括:
S621:在启动所述预期计时后,从时间片已经用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象;
在本申请实施例中,在启动所述预期计时后,当存在时间片已经用完且具有I/O请求的I/O请求对象时,从中选择一个具有I/O请求且时间片已经用完的I/O请求对象,作为所选择的I/O请求对象。
S622:调度所选择的I/O请求对象的I/O请求,并记录连续调度所选择的I/O请求对象的I/O请求所占用的调度时长;
S623:当调度时长达到所选择的I/O请求对象的调度时间阈值时,或者,当调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的所有I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度;
在预期计时期间,当存在时间片已经用完且具有I/O请求的I/O请求对象时,I/O调度器从时间片已经用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,作为所选择的I/O请求对象,调度所选择的I/O请求对象的I/O请求,并记录连续调度所选择的I/O请求对象的I/O请求所占用的调度时长;直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。
S624:判断当前调度时段是否存在时间片已经用完且具有I/O请求的I/O请求对象;如果存在,返回S621;如果不存在,执行步骤S625。
S625:当所述预期计时结束后,进入下一个调度时段。
可以理解的是,本申请实施例中,在结束对所选择的I/O请求对象的调度以后,如果仍然处于预期计时期间,还可以继续判断是否依然存在时间片已经用完且具有I/O请求的I/O请求对象,如果存在,则可以继续从时间片已经用完且具有I/O请求的I/O请求对象的其它I/O请求对象中选择I/O请求对象,调度从时间片已经用完且具有I/O请求的I/O请求对象的其它I/O请求对象中选择的I/O请求对象的I/O请求,并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。在预期计时期间,重复执行以上步骤,直到不再存在时间片已经用完且具有I/O请求的时间片已经用完且具有I/O请求的I/O请求对象为止。
在本申请实施例中,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时启动预期计时,并且在预期计时期间,当记录的预期计时的时间长度尚未达到预设阈值且时间片已经用完的I/O请求对象具有I/O请求时,则在预期计时期间调度时间片已经用完的I/O请求对象的I/O请求。这样,可以避免存储设备在预期计时期间空闲等待时间片尚未用完的I/O请求对象的新的I/O请求,从而充分利用存储设备的资源,提高存储资源的利用率和存储设备的吞吐率。
在上述实施例的基础上,由于所述每个I/O请求对象的I/O请求包括:读请求和写请求;所述读请求排在读请求队列中,所述写请求排在写请求队列中;当I/O请求到达I/O调度器时,根据读、写请求的类型,I/O调度器将其置于相应的队列中。
为了避免调度读请求和调度写请求时发生干扰,在调度所选择的I/O请求对象的I/O请求时,所述方法还包括:
在预设的读请求调度时长内,调度所述读请求队列中的读请求;
在预设的写请求调度时长内,调度所述写请求队列中的写请求;
本申请实施例中,在调度所选择的I/O请求对象的I/O请求时,分别调度所选择的I/O请求对象的读请求和写请求,并且在预设的读请求调度时长内,只调度所述读请求队列中的读请求,在预设的写请求调度时长内,只调度所述写请求队列中的写请求。
其中,读请求调度时长是预先为每个I/O请求对象设定的连续调度该I/O请求对象的读请求的最长时间阈值,写请求调度时长是预先为每个I/O请求对象设定的连续调度该I/O请求对象的写请求的最长时间阈值,每个I/O请求对象的读请求调度时长与写请求调度时长之和小于或等于每个I/O请求对象的调度时间阈值。
另外,由于是分别调度读请求和写请求,而为了避免在调度读请求时由于写请求累积而造成写请求序列中的写请求阻塞,或者在调度写请求时由于读请求累积而造成读请求序列中的读请求阻塞,本申请实施例还可以为每个I/O请求对象设定读请求阻塞时间阈值和写请求阻塞时间阈值;
在调度所述读请求队列中的读请求时,如果所述写请求队列中的写请求发生阻塞,则记录所述写请求阻塞时长,并在所述写请求阻塞时长达到预设的写请求阻塞时间阈值时,调度所述写请求队列中的写请求;
在调度所述写请求队列中的写请求时,如果所述读请求队列中的读请求发生阻塞,则记录所述读请求阻塞时长,并在所述读请求阻塞时长达到预设的读请求阻塞时间阈值时,调度所述读请求队列中的读请求。
本申请实施例提供的技术方案,为每个I/O请求对象维护一个用于缓存读请求的读请求队列和一个用于缓存写请求的写请求队列,并为每个I/O请求对象设定读请求调度时长和写请求调度时长。以连续的时间片(在读请求调度时长内)来批量调度读请求,以连续的时间片(在写请求调度时长内)来批量调度写请求,比如:设置连续调度写请求的写请求调度时长为500ms,则在连续调度一个I/O请求对象的写请求500ms后开始调度该I/O请求对象的读请求,这样对于读、写请求的调度交替进行,可以针对存储器中的读/写请求混合负载进行区分服务,减少读写干扰,提升存储器的性能和吞吐率。
而且,为了避免造成读、写请求的阻塞,还可以设置读请求阻塞时间阈值和写请求阻塞时间阈值,比如设定写请求阻塞时间阈值为1s,则在写阻塞发生最长1s的时间后,开始调度写请求到存储设备,可以防止发生I/O请求的长期阻塞。
同理,在上述实施例中,在调度从时间片已经用完且具有I/O请求的I/O请求对象中选择的所选择的I/O请求对象的I/O请求时,也可以采用类似方法,此处不再赘述。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。
本发明上述公开了一种I/O请求调度方法,相应的,本发明还公开了应用上述I/O请求调度方法的I/O请求调度器。
图4为本发明提供的一种I/O请求调度器的一个实施例的结构示意图。
本申请实施例提供的一种I/O请求调度器,包括:
分配模块1,用于在进入当前调度时段时,侦测在所述当前时段访问存储设备的I/O请求对象,为侦测到的每个I/O请求对象分配一个时间片,并为侦测到的每个I/O请求对象设定调度时间阈值;其中,为侦测到的每个I/O请求对象分配的时间片之和小于或等于所述当前调度时段;
第一调度模块2,用于在当前调度时段内,轮流对时间片尚未用完且具有I/O请求的I/O请求对象执行如下步骤,直到所述当前调度时段内不存在时间片尚未用完且具有I/O请求的I/O请求对象:
从所述时间片尚未用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。
在为侦测到的每个I/O请求对象设定调度时间阈值时,所述分配模块1具体用于:根据侦测到的I/O请求对象的个数和侦测到的每个I/O请求对象的响应时间需求,为侦测到的每个I/O请求对象设定调度时间阈值。
其中,所述调度时间阈值为预先为所选择的I/O请求对象设定的连续调度所选择的I/O请求对象的I/O请求的最长时间阈值。
图5为本发明提供的一种I/O请求调度器的另一个实施例的结构示意图。
本申请实施例提供的一种I/O请求调度器,在上述实施例的基础上,还包括:
预期计时模块3,用于在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;
第二调度模块4,用于在启动所述预期计时后,当所述预期计时的时长尚未达到预设的计时阈值,且侦测到时间片尚未用完的I/O请求对象产生新的I/O请求时,结束所述预期计时,并调度所述新的I/O请求。
图6为本发明提供的一种I/O请求调度器的再一个实施例的结构示意图。
本申请实施例提供的一种I/O请求调度器,在上述实施例的基础上,还包括:
第三调度模块5,用于在启动所述预期计时后,轮流对时间片已经用完且具有I/O请求的I/O请求对象执行如下步骤:
从所述时间片已经用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。
在上述实施例的基础上,由于所述每个I/O请求对象的I/O请求包括:读请求和写请求;所述读请求排在读请求队列中,所述写请求排在写请求队列中;
则,所述第一调度模块2在调度所选择的I/O请求对象的I/O请求时,用于:
在所述读请求调度时长内,调度所述读请求队列中的读请求;
在所述写请求调度时长内,调度所述写请求队列中的写请求;
其中,每个I/O请求对象的读请求调度时长与写请求调度时长之和小于或等于每个I/O请求对象的调度时间阈值。
所述第一调度模块2,还用于:
在调度所述读请求队列中的读请求时,如果所述写请求队列中的写请求发生阻塞,则记录所述写请求阻塞时长,并在所述写请求阻塞时长达到预设的写请求阻塞时间阈值时,调度所述写请求队列中的写请求;
在调度所述写请求队列中的写请求时,如果所述读请求队列中的读请求发生阻塞,则记录所述读请求阻塞时长,并在所述读请求阻塞时长达到预设的读请求阻塞时间阈值时,调度所述读请求队列中的读请求。
需要说明的是,本申请的所有装置实施例中提供的I/O请求调度器均可以采用上述方法实施例中的I/O请求调度方法,可以用于实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种I/O请求调度方法,其特征在于,包括:
在进入当前调度时段时,侦测在所述当前调度时段访问存储设备的I/O请求对象,为侦测到的每个I/O请求对象分配一个时间片,并为侦测到的每个I/O请求对象设定调度时间阈值;其中,为侦测到的每个I/O请求对象分配的时间片之和小于或等于所述当前调度时段;
在当前调度时段内,轮流对时间片尚未用完且具有I/O请求的I/O请求对象执行如下步骤,直到所述当前调度时段内不存在时间片尚未用完且具有I/O请求的I/O请求对象:
从所述时间片尚未用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录连续调度所选择的I/O请求对象的I/O请求所占用的调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;
在启动所述预期计时后,当所述预期计时的时长尚未达到预设的计时阈值,且侦测到时间片尚未用完的I/O请求对象产生新的I/O请求时,结束所述预期计时,并调度所述新的I/O请求。
3.根据权利要求1所述的方法,其特征在于,还包括:
在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;
在启动所述预期计时后,轮流对时间片已经用完且具有I/O请求的I/O请求对象执行如下步骤:
从所述时间片已经用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。
4.根据权利要求1所述的方法,其特征在于,所述每个I/O请求对象的I/O请求包括:读请求和写请求;所述读请求排在读请求队列中,所述写请求排在写请求队列中;
则,所述调度所选择的I/O请求对象的I/O请求包括:
在预设的读请求调度时长内,调度所述读请求队列中的读请求;
在预设的写请求调度时长内,调度所述写请求队列中的写请求;
其中,每个I/O请求对象的读请求调度时长与写请求调度时长之和小于或等于每个I/O请求对象的调度时间阈值。
5.根据权利要求4所述的方法,其特征在于,还包括:
在调度所述读请求队列中的读请求时,如果所述写请求队列中的写请求发生阻塞,则记录所述写请求阻塞时长,并在所述写请求阻塞时长达到预设的写请求阻塞时间阈值时,调度所述写请求队列中的写请求;
在调度所述写请求队列中的写请求时,如果所述读请求队列中的读请求发生阻塞,则记录所述读请求阻塞时长,并在所述读请求阻塞时长达到预设的读请求阻塞时间阈值时,调度所述读请求队列中的读请求。
6.根据权利要求1-5中任意一项所述的方法,其特征在于,所述为侦测到的每个I/O请求对象设定调度时间阈值,具体为:根据侦测到的I/O请求对象的个数和侦测到的每个I/O请求对象的响应时间需求,为侦测到的每个I/O请求对象设定调度时间阈值。
7.一种I/O请求调度器,其特征在于,包括:
分配模块,用于在进入当前调度时段时,侦测在所述当前调度时段访问存储设备的I/O请求对象,为侦测到的每个I/O请求对象分配一个时间片,并为侦测到的每个I/O请求对象设定调度时间阈值;其中,为侦测到的每个I/O请求对象分配的时间片之和小于或等于所述当前调度时段;
第一调度模块,用于在当前调度时段内,轮流对时间片尚未用完且具有I/O请求的I/O请求对象执行如下步骤,直到所述当前调度时段内不存在时间片尚未用完且具有I/O请求的I/O请求对象:
从所述时间片尚未用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录连续调度所选择的I/O请求对象的I/O请求所占用的调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。
8.根据权利要求7所述的I/O请求调度器,其特征在于,还包括:
预期计时模块,用于在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;
第二调度模块,用于在启动所述预期计时后,当所述预期计时的时长尚未达到预设的计时阈值,且侦测到时间片尚未用完的I/O请求对象产生新的I/O请求时,结束所述预期计时,并调度所述新的I/O请求。
9.根据权利要求7所述的I/O请求调度器,其特征在于,还包括:
预期计时模块,用于在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;
第三调度模块,用于在启动所述预期计时后,轮流对时间片已经用完且具有I/O请求的I/O请求对象执行如下步骤:
从所述时间片已经用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。
10.根据权利要求7所述的I/O请求调度器,其特征在于,所述每个I/O请求对象的I/O请求包括:读请求和写请求;所述读请求排在读请求队列中,所述写请求排在写请求队列中;
则,所述第一调度模块在调度所选择的I/O请求对象的I/O请求时,具体用于:
在所述读请求调度时长内,调度所述读请求队列中的读请求;
在所述写请求调度时长内,调度所述写请求队列中的写请求;
其中,每个I/O请求对象的读请求调度时长与写请求调度时长之和小于或等于每个I/O请求对象的调度时间阈值。
11.根据权利要求10所述的I/O请求调度器,其特征在于,所述第一调度模块,还用于:
在调度所述读请求队列中的读请求时,如果所述写请求队列中的写请求发生阻塞,则记录所述写请求阻塞时长,并在所述写请求阻塞时长达到预设的写请求阻塞时间阈值时,调度所述写请求队列中的写请求;
在调度所述写请求队列中的写请求时,如果所述读请求队列中的读请求发生阻塞,则记录所述读请求阻塞时长,并在所述读请求阻塞时长达到预设的读请求阻塞时间阈值时,调度所述读请求队列中的读请求。
12.根据权利要求7-11中任意一项所述的I/O请求调度器,其特征在于,在为侦测到的每个I/O请求对象设定调度时间阈值时,所述分配模块具体用于:根据侦测到的I/O请求对象的个数和侦测到的每个I/O请求对象的响应时间需求,为侦测到的每个I/O请求对象设定调度时间阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510519679.XA CN106469088B (zh) | 2015-08-21 | 2015-08-21 | 一种i/o请求调度方法及调度器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510519679.XA CN106469088B (zh) | 2015-08-21 | 2015-08-21 | 一种i/o请求调度方法及调度器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106469088A CN106469088A (zh) | 2017-03-01 |
CN106469088B true CN106469088B (zh) | 2020-04-28 |
Family
ID=58229130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510519679.XA Active CN106469088B (zh) | 2015-08-21 | 2015-08-21 | 一种i/o请求调度方法及调度器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106469088B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10402120B2 (en) * | 2016-07-15 | 2019-09-03 | Advanced Micro Devices, Inc. | Memory controller arbiter with streak and read/write transaction management |
CN107529696B (zh) * | 2017-05-11 | 2021-01-26 | 新华三云计算技术有限公司 | 一种存储资源访问控制方法及装置 |
CN109753371B (zh) * | 2017-11-06 | 2021-10-19 | 华为技术有限公司 | 一种i/o阻塞检测方法、装置及设备 |
CN115729684B (zh) * | 2021-08-25 | 2023-09-19 | 荣耀终端有限公司 | 输入输出请求处理方法和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1449522A (zh) * | 2000-06-30 | 2003-10-15 | 英特尔公司 | 调度驱动程序为不产生中断的设备实现使用时间估计的协议的方法和装置 |
CN101246437A (zh) * | 2008-01-28 | 2008-08-20 | 中兴通讯股份有限公司 | 一种嵌入式实时系统进程均衡调度方法 |
CN101923491A (zh) * | 2010-08-11 | 2010-12-22 | 上海交通大学 | 多核环境下线程组地址空间调度和切换线程的方法 |
CN104516784A (zh) * | 2014-07-11 | 2015-04-15 | 中国科学院计算技术研究所 | 一种预测任务资源等待时间的方法及系统 |
-
2015
- 2015-08-21 CN CN201510519679.XA patent/CN106469088B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1449522A (zh) * | 2000-06-30 | 2003-10-15 | 英特尔公司 | 调度驱动程序为不产生中断的设备实现使用时间估计的协议的方法和装置 |
CN101246437A (zh) * | 2008-01-28 | 2008-08-20 | 中兴通讯股份有限公司 | 一种嵌入式实时系统进程均衡调度方法 |
CN101923491A (zh) * | 2010-08-11 | 2010-12-22 | 上海交通大学 | 多核环境下线程组地址空间调度和切换线程的方法 |
CN104516784A (zh) * | 2014-07-11 | 2015-04-15 | 中国科学院计算技术研究所 | 一种预测任务资源等待时间的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106469088A (zh) | 2017-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106469088B (zh) | 一种i/o请求调度方法及调度器 | |
US10541939B2 (en) | Systems and methods for provision of a guaranteed batch | |
JP5050601B2 (ja) | ジョブへの資源割当方式、ジョブへの資源割当方法およびプログラム | |
CN107092445B (zh) | 一种多通道ssd固态盘io调度方法及装置 | |
CN111767134A (zh) | 一种多任务动态资源调度方法 | |
US8627325B2 (en) | Scheduling memory usage of a workload | |
KR102238034B1 (ko) | 태스크 할당 시스템에서의 행동 페어링을 위한 기술들 | |
EP2562644A1 (en) | Systems and methods for bounding processing times on multiple processing units | |
US10271326B2 (en) | Scheduling function calls | |
CN111897637B (zh) | 作业调度方法、装置、主机及存储介质 | |
CN107515781B (zh) | 一种基于多处理器的确定性任务调度及负载均衡系统 | |
CN105022668B (zh) | 一种作业调度方法及系统 | |
EP3376381A1 (en) | Resource management method and system, and computer storage medium | |
CN112996116A (zh) | 一种保障电力时延敏感业务质量的资源分配方法及系统 | |
CN112579263A (zh) | 任务执行方法及装置、存储介质及电子设备 | |
CN114265679A (zh) | 数据处理方法、装置和服务器 | |
CN106775975B (zh) | 进程调度方法及装置 | |
CN112925616A (zh) | 任务分配方法、装置、存储介质及电子设备 | |
CN114461365A (zh) | 一种进程调度处理方法、装置、设备和存储介质 | |
CN112817722A (zh) | 一种基于优先级的分时调度方法、终端及存储介质 | |
CN115408153B (zh) | 多线程处理器的指令分发方法、装置和存储介质 | |
CN115202842A (zh) | 任务调度方法及装置 | |
CN114661415A (zh) | 调度方法及计算机系统 | |
CN115695330A (zh) | 嵌入式系统中微程的调度系统、方法、终端及存储介质 | |
KR20190128368A (ko) | 비동기 서버의 요청 처리 방법 |
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 |