基于资源的调度器的制作方法

文档序号:6455268阅读:120来源:国知局
专利名称:基于资源的调度器的制作方法
技术领域
本发明涉及调度计算机作业(computer job)。具体而言,本发明的实 施例涉及基于特定作业的资源利用率标准和将由这些作业使用的计算机资 源的利用率来调度计算机作业。
背景技术
当今的计算机操作系统(0/S)利用多任务调度器来呈现同时运行的 多个计算机作业(例如,进程)。存在许多不同的调度算法,但一般而 言,其概念是将称为时间配额(quantum)的一个小时间片赋予进程的一 个线程,然后赋予该进程的另一线程或者另一进程,等等。时间配额的长 度非常小,通常在20至120毫秒的范围内。由于人的时间感知,因此看 起来这些作业是同时运行的。
中央处理单元(CPU)往往是多数计算机系统的最快部件,而诸如盘 I/O、网络1/0和甚至存储器之类的其他计算机资源往往慢得多。例如,如 果按从盘的数据传输和CPU内的数据传输来计量,则盘I/O可能大约比 CPU慢大约百万倍。结果,CPU经常等待这些较慢的资源。例如,3GHz 的CPU在等待盘驱动器以按毫秒计的平均访问时间来检索数据时通常保持 空闲。
由于若千不同的作业经常竞争相同的资源,因此作业经常彼此冲突, 这使得这些作业中的一个或多个变慢。从用户的角度来看,作业冲突自身 表现为无响应的应用、急动的光标移动和缓慢呈现的图形。
节流(throttling)是用于将这些负面影响最小化的技术。节流防止应 用或作业使用超过所分配的资源量。节流的类型包括盘I/O节流、CPU节 流和网络节流。例如,CPU节流可以涉及为应用设立目标CPU利用率限 制并且在应用超过该目标限制的情况下迫使应用停止工作。节流有时被应
7用到用于维护应用或不那么重要的计算机作业的计算机资源。尽管节流具 有益处,但是计算机作业的资源使用对于其他作业和应用而言不是完全透 明的。
因为在24小时的时段上计算机资源一般是被浪费的,所以上述问题
更加复杂。例如,多数桌面利用少于计算机可用资源的5%,并且高流量 服务器通常利用大约20%。即使利用80-90%资源的计算机仍然具有10-20%的可用资源。
为了恢复和利用这些不用就会损失的资源,需要这样的技术该技术 允许一个或多个作业在计算机系统中执行,而不显著影响其他作业或应 用。该技术不应当在调度作业时消耗用户的时间,或者不应当在作业运行 时不利地影响用户与计算机系统的交互。
本部分中描述的方法是能够被实行的方法,但不一定是先前已经设想 过或实行过的方法。因此,除非另有指明,否则不应当认为本部分中描述 的任何方法仅因为被包括在本部分中就可以被当作现有技术。


在附图的各图中通过示例而非限制方式图示了本发明,在附图中,相
似的标号指示类似的元件,并且其中
图1A是根据本发明一个实施例的具有基于资源的调度工作列表的基
于资源的调度器的图。
图1B是根据本发明另一实施例的基于资源的调度器的图。
图2是根据本发明一个实施例的基于资源的调度的流程图。
图3是示出其上可以实现本发明的实施例的计算机系统的框图。
具体实施例方式
在以下描述中,出于说明的目的,给出了许多具体细节以提供对本发 明的全面了解。然而将会清楚,可以在没有这些具体细节的情况下实施本 发明。在其他实例中,以框图形式示出公知的结构和设备以避免不必要地 模糊本发明。
8概述
多数计算机不是在100%的时间中利用其所有资源能力。即使在一天 二十四小时、 一周七天的看起来高度使用的计算机中以及仅在每天的一段 时间中开启的计算机中,这通常也是正确的。因此,计算机时间和资源被 浪费。例如,在二十四小时的时间段上,被相当繁重地使用并且在活动上
可能具有简短峰值(brief spike)的计算机系统平均可能仅使用其资源的大 约5%至20%。
根据本发明的一个实施例,计算机作业是基于资源的利用率和计算机 作业具有的与该资源有关的利用率标准来被调度的。例如,计算机作业可
以具有以下利用率标准以使得计算机作业被调度盘I/O资源具有60%可
用能力。在本实施例中,如果盘1/0资源的可用能力小于60%,则计算机 作业不被调度。.
在一个实施例中,基于资源的调度器(RBS)将每个计算机作业放置 到若干不同的基于资源的调度工作列表的至少一个上。这些基于资源的调 度工作列表包括但不限于盘I/O调度工作列表、CPU调度工作列表和网络 I/O调度工作列表。因此,特定调度工作列表包括等待使用特定资源的计 算机作业。在本实施例中,每个计算机作业具有与特定资源有关的利用率 标准。RBS选择这些资源之一以接下来使得计算机作业被调度。在一个实 施例中,该选择基于资源的优先级。例如,盘I/0资源可以比CPU资源具 有更高的优先级。在一个实施例中,与被指定为较快资源的资源相比,被 指定为较慢资源的资源被赋予较高的优先级。
在选择将要调度哪种资源之后,RBS从与所选择的资源相对应的工作 列表中选择计算机作业之一以供执行。在一个实施例中,RBS基于使资源 的可用能力与计算机作业的利用率标准相匹配的标准来选择计算机作业。 然而,RBS也可以使用其他因素,例如计算机作业的优先级、所需的计算 机作业执行顺序、计算机作业被放置在工作列表上的顺序等等。
注意,在一个实施例中,当每个计算机作业将利用的资源(全部或部 分地)可用时,即使该作业不需要的其他资源被其他作业(全部或部分 地)利用,RBS也通过调度该作业来允许多种计算机资源的高效利用,并且降低对其他作业的性能的冲击。
基于资源的调度器
图1A是根据本发明一个实施例的具有基于资源的调度工作列表120 的基于资源的调度器(RBS) 100的图。RBS 100基于不同计算机资源的 可用能力来前摄地(pro-actively)调度计算机作业。例如,这些不同资源 可以包括但不限于CPU、盘1/0、网络1/0、视频、存储器、键盘、网络资 源等等。这里所使用的术语"计算机作业"或者"作业"包括但不限于计 算机进程、线程、微作业(miCTO-job)(将在下文讨论)或者可执行的计 算机代码的任何部分。RBS 100可以允许每个计算机作业在不与任何其他 作业对资源的要求冲突的情况下接收其对资源的要求。在一个实施例中, RBS 100能够确定特定资源何时仅被部分利用,并能够将未利用的部分分 配给所选择的作业,而对已经利用该资源的任何其他作业具有最小的冲 击。
在一个实施例中,RBS 100针对各种不同的资源来调度计算机作业。 这些不同的资源与RBS 100可以在同一计算机系统上或者可以不在同一计 算机系统上。例如,在一个实施例中,RBS 100调度计算机作业以利用经 由网络而被访问的资源。作为特定示例,资源可经由因特网被访问。
因此,在一个实施例中,RBS 100接收试图访问各种资源的计算机作 业,并且就以下各项来作出调度决定哪些计算机作业应当被调度以利用 哪些资源以及计算机作业应当何时被调度。
计算机资源利用率
RBS 100输入资源利用率信息105,该信息描述了各种计算机资源的 利用率。利用率可以涉及区间(interval)或者指定点。利用率可以是在指 定区间上的平均利用率。例如,资源的利用率可被指定为指定时间区间上 的平均利用率。作为特定示例,30%利用率的CPU资源可以属于最近时间 区间上的平均利用率。在一个实施例中,该区间是以时间配额来计量的。
在一个实施例中,利用率是基于数值的。例如,利用率可以基于在指 定时间点上等待执行的操作的数目。例如,如果资源具有"x"个等待执 行的操作,则利用率可以是"x"。作为资源的基于数值的利用率的另一示例,利用率基于对利用特定资源的请求的数目。例如,在一个实施例 中,利用率基于每个进程所具有的对利用特定资源的请求的总数。基于数 值的利用率可以涉及点或者区间。例如,在一个实施例中,基于数值的资 源利用率基于在特定时间区间上等待执行的操作的平均数目。在另一实施 例中,基于数值的资源利用率基于在特定点处等待执行的操作的数目。
在一个实施例中,RBS 100基于资源利用率105来估计未来资源利用 率。例如,基于对利用特定资源的请求的数目(并且可能是其他因素), 对未来资源利用率进行估计。作为另一示例,基于特定资源的利用率百分 比(并且可能是其他因素),对未来资源利用率进行估计。
计算机作业利用率标准
RBS 100还输入使得作业被调度的利用率标准118。利用率标准118 与资源有关。例如,可以使用这样的资源阈值,其中RBS IOO仅在其他作 业的资源利用率低于该阈值的情况下对计算机作业进行调度。使用资源阈 值的一个示例是,如果盘1/0具有小于60%的可用能力,则RBS 100仅对 使用该盘I/O的特定计算机工作进行调度。在一个实施例中,RBS 100具 有应用程序接口 (API)以供拥有计算机作业的应用提供利用率标准118。 这里提供了一种示例API。
在一个实施例中,利用率标准118基于时间。使得利用率标准118基 于百分比是基于时间的标准的一个示例。在一个实施例中,利用率标准 118基于数值。基于数值的利用率标准118的一个示例是等待在特定资源 上执行的操作的数目。例如,特定进程的利用率标准118基于对使用特定 资源的请求的数目。
在一个实施例中,RBS IOO存储历史利用率信息116。历史利用率信 息116描述一个或多个作业的在前资源利用率。例如, 一个计算机作业利 用了 30%的网络I/O资源的事实被存储以供将来参考。在一个实施例中, RBS IOO使用历史利用率信息U6来确定将要调度的计算机作业的利用率 标准。例如,基于计算机作业先前一次或多次利用特定资源,RBS 100确 定计算机作业对于该特定资源具有百分之"x"的利用率标准。RBS 100然 后在调度该计算机作业时使用该利用率标准。RBS 100还输入将要调度的作业的可执行代码108, RBS 100对该代 码进行分析以确定利用率标准。
推迟调度决定
在一个实施例中,对是否应当允许计算机作业利用特定资源的确定可 被推迟。例如,特定计算机作业可以具有这样的利用率标准该利用率标 准允许来自其他计算机作业的指定数目的请求甚至在基于资源的调度器考 虑是否调度特定计算机作业之前被服务(service)。在一个实施例中,如 果资源的利用率高于阈值,则RBS推迟执行特定计算机作业。该特定计算 机作业指定在调度该特定计算机作业之前可被服务的来自其他计算机作业 的请求的数目。在一个实施例中,在该数目的请求已被服务之后,接下来 对该特定计算机作业进行调度。在另一实施例中,在请求已被服务之后, RBS确定是否允许该特定计算机作业具有资源。
在一个实施例中,基于资源的调度器具有针对应当被无延迟地满足的 资源请求的正常工作列表和针对可被推迟的资源请求的推迟工作列表。当 请求被放置在推迟列表上时,推迟列表中的每个条目可被标记上当前请求 号。这些被推迟的请求可被基于哪个被推迟的请求应当首先被服务来排 序。在一个实施例中,存在多个推迟工作列表。与正常列表相比,当RBS 确定开始新请求时,RBS可以首先查看该推迟列表,以检查是否有任何请 求将要期满并接下来将其取出。
基于资源的调度工作列表
在一个实施例中,对于计算机作业可能被调度使用的每种资源,RBS 100具有一个基于资源的调度工作列表120。例如,RBS 100具有CPU资 源工作列表120(1)、盘I/O工作列表120(2)、网络I/0工作列表120(3)和其 他资源工作列表120(n)。其他资源工作列表的示例包括但不限于网络资源 工作列表、视频资源工作列表、键盘资源工作列表。每个工作列表120包 括在等待利用与该资源相对应的资源的作业。为了不模糊该图,在图1A 中并未示出所有可能的基于资源的调度工作列表。在一个实施例中, 一特 定工作列表针对利用资源组合的计算机作业。在一个实施例中,存在针对 特定资源的两个或更多个工作列表,其中每个工作列表对应于不同的优先级。例如,具有高优先级的计算机作业进入一个工作列表,中等优先级进 入另一个工作列表,等等。工作列表可被排序或者不被排序。
在一个实施例中,RBS 100基于对可执行代码108的分析来确定将计 算机作业放置在哪个工作列表上。例如,在一个实施例中,RBS 100检查 计算机作业的可执行代码108中的指令以确定该计算机作业需要什么资 源。
在一个实施例中,当足够量的计算机资源可用时,RBS 100将资源给 予工作列表中与该资源相对应的一个计算机作业。例如,调度逻辑112基 于资源的可用能力和计算机作业的利用率标准在工作列表上选择计算机作 业之一。可以使用其他选择标准。选择标准包括但不限于向工作列表添加 作业的顺序、计算机作业优先级(例如,进程优先级、线程优先级)以及 将资源的可用能力与作业的资源需求相匹配。该选择可以基于这些标准的 任何组合以及未专门提及的其他标准。
没有基于资源的调度工作列表的基于资源的调度器
在一个实施例中,RBS 100不使用与各种计算机资源相对应的调度工 作列表。参考图1B, RBS 100经常性地(而不是按特定顺序)接收对调度 计算机作业的请求。例如,作为希望使计一个或多个算机作业被执行的应 用,该应用向RBS 100发送对调度一个或多个计算机作业的请求。RBS 100确定或者被告知特定计算机作业将使用什么资源或什么样的多种资 源。资源的示例包括处理器304、存储设备310、显示器312、输入设备 314和网络通信接口 318,以及经由网络184来访问的网络资源182。
RBS 100确定或者被告知特定资源的利用率。RBS 100还确定或者被 告知计算机作业所具有的与特定资源有关的利用率标准。基于特定资源的 利用率和利用率标准,RBS 100确定是否调度特定计算机作业以利用特定 资源。例如,如果网络通信接口 318的利用率满足计算机作业的利用率标 准,则RBS 100调度计算机作业以使用网络通信接口 318来执行。如果不 满足,则RBS 100并不调度计算机作业以使用网络通信接口 318。相反, RBS 100可以等待,并当网络通信接口 318的利用率满足计算机作业的利 用率标准时调度计算机作业。
13对资源进行优先级排序(prioritize) 在一个实施例中,出于调度目的对计算机资源进行优先级排序。例 如,可以基于资源的相对速度对CPU、盘I/O、网络1/0和其他资源分级 (rank)。例如,盘I/O可被指定为比CPU资源慢的资源并且因此被赋予 较高优先级。类似地,网络I/0资源可以比盘I/0快但比CPU慢。网络资 源因此被赋予高于CPU但低于盘I/0的优先级。如果RBS 100考虑较慢的 资源并且利用较高优先级调度这些资源,则对诸如CPU之类的较快资源的 延迟可被最小化。
基于应用的示例
以下是在应用中基于资源的调度的示例。作为示例,该应用可以是碎 片整理器或者病毒扫描器。在该示例中,计算机作业A位于盘I/O调度工 作列表120(2)的顶部并且具有60%盘1/0可用能力的利用率标准,计算机 作业B在盘I/O调度工作列表120(2)上是下一个,其具有20%盘I/O可用 能力的利用率标准。如果盘1/0具有30%可用能力,则RBS 100不会调度 计算机作业A,这是因为盘1/0不具有足够的可用能力。然而,计算机作 业B可被调度。在这种情况下,RBS 100通过调度适当的计算机作业(计 算机作业B)来利用盘I/O而非将其浪费,从而使用30%的盘I/O可用能 力。如果RBS 100已将盘I/O资源给予了需要60%盘I/O的计算机作业 A,则这可能引起计算机作业冲突,因为这样分配了多于100%的盘1/0资 源。
基于内核级资源的调度器 在一个实施例中,RBS 100被以内核级别实现在0/S中。在这种实施 例中,内核级RBS 100完全知道正在请求执行的计算机作业(例如,线 程)的整个列表。因此,RBS 100可以基于资源可用性对执行进行排序, 而无需确定任何资源的利用率百分比。这是因为RBS 100已经对调度各种 资源具有完全控制。没有必要进行测量,因为只有它对资源进行分配,所 以它已经知道。
过程流
图2是示出根据本发明一个实施例的用于基于资源的调度的过程200的步骤的流程图。为了便于说明,以特定顺序描述过程200的步骤。然 而,这些步骤可以按不同的顺序来进行。此外,步骤可被重复多次。在步
骤202中,RBS 100接收一个或多个作业的利用率标准。例如,应用程序 向RBS IOO提供利用率标准。应用可以为不同的计算机作业指定不同的标 准。应用为其计算机作业指定利用率标准不是必要的。
根据本发明的一个实施例,应用向RBS IOO发送参数以控制资源利用 率。对资源利用率的控制包括但不限于盘I/O、 CPU和网络。例如,应 用可以请求计算机作业的执行被挂起,直到达到以上三种资源或其他资源 的阈值水平的任何组合为止。此外,应用可以为不同的计算机作业指定不 同的资源阈值水平。例如,根据一个实施例,可以为每个计算机作业指定 一个不同的资源阈值水平。因此,可以实现细粒度的资源管理。
在步骤204中,RBS 100确定一个或多个作业的利用率标准。在一个 实施例中,RBS 100确定计算机作业对特定资源的预期利用率,其中利用 率标准基于预期资源利用率。在一个实施例中,RBS IOO通过检査特定计 算机作业中的指令来确定该特定计算机作业的预期利用率。在一个实施例 中,RBS 100使预期利用率基于存储值,该存储值描述了该特定计算机作 业对资源的先前利用率。
在步骤206中,计算机作业被添加至基于资源的调度工作列表。例 如,特定进程或者特定进程的至少部分线程被放置在至少一个基于资源的 调度工作列表上。当更多的作业请求调度时,它们被添加到基于资源的调 度工作列表。在一个实施例中,来自许多不同计算机作业的请求被放置在 工作列表上。在一个实施例中,可以通过正被调度以利用特定资源的计算 机作业来满足这些请求。在一个实施例中,基于计算机作业的优先级将该 计算机作业插入到工作列表上的位置。在一个实施例中,因为进程中的线 程的执行顺序可能是重要的,所以计算机作业(例如,线程)位于工作列 表上以保持所需的执行顺序。
在步骤208中,选择特定计算机资源以供利用。例如,RBS 100可以 确定已被指定为较慢的计算机资源应当具有较高优先级。作为特定示例, RBS 100选择盘I/O资源。然而,该选择可以基于其他因素,例如线程
15流、计算机作业优先级(例如,进程优先级、线程优先级)、每个工作列 表上等待执行的作业(例如,线程)的数目以及作业(例如,线程或者进 程)所需要的其他资源的可用性。
在步骤210中,RBS 100确定所选择的计算机资源的利用率。该利用 率可以基于在最近区间上的活动。例如,该利用率可以基于任何方便的量 度,例如过去的"x"个时间配额或者最近的时间段。然而,该利用率不 必基于区间。例如,利用率可以基于在特定时间点处等待执行的操作的数 百。
根据本发明的一个实施例,当RBS IOO计算资源利用率时,所测量的 是除了与特定应用相关联的作业之外的作业的资源利用率。以下的示例用 于说明,在该示例中,CPU利用率阈值被设置为20%。如果在允许与特定 应用相关联的计算机作业执行之前CPU利用率低于20%,则当计算机作 业执行时,CPU利用率可能增大为高于20。/。。在该示例中,这种超过20% 的增大不被认为是违反了CPU资源利用率。类似的原理可应用于网络、盘 1/0资源和其他资源。
在一个实施例中,RBS 100估计所选择的计算机资源在未来时间区间 上的利用率。RBS 100可以基于该资源的最近利用率来估计未来利用率。 作为特定示例,测量(或者以他方式得知)阿络I/O的最近利用率。基于 最近的网络I/O利用率,对不久的未来的网络I/O利用率进行估计。该估 计可以也可以基于其他因素。
在步骤212中,RBS 100选择工作列表上与所选择的资源相对应的一 个计算机作业。RBS 100调度所选择的计算机作业以供执行,以使用所选 择的计算机资源。RBS 100基于特定资源的利用率和工作列表上的至少一 个计算机作业对该特定计算机资源的利用率标准来作出选择。例如,如果 所选择的资源的利用率是60%并且特定计算机作业的利用率标准是所选择 的资源具有小于40%的利用率,则因为利用率标准未被满足,所以该特定 计算机作业不被调度。在这种情况下,RBS 100可以选择另一计算机作 业,并且在其利用率标准允许所选择的资源具有60%的利用率的情况下调 度该计算机作业。
16通过重复过程200的至少一些步骤以逐个调度计算机作业,RBS确定 了用于计算机作业的调度顺序。
在步骤214中,RBS 100为刚才执行的计算机作业存储资源利用率信 息。RBS 100可以稍后使用该资源利用率信息来为计算机作业确定利用率 标准。
.微作业
在一个实施例中,RBS 100调度微作业。在一个实施例中,微作业的 大小允许特定微作业在分配的时间内完成,该特定微作业在该分配的时间 内拥有用于执行处理作业的资源。在一个实施例中,每个微作业的大小使 得其将在其分配时间内完成。然而,也有可能一些微作业太大以至于无法 在它们的分配时间内完成执行。
在一个实施例中,分配的时间是一个时间配额。时间配额是赋予计算 机代码(例如,线程)的一部分的时间片,在该时间片期间,该代码部分 拥有CPU资源。不同的操作系统使用不同的时间配额。此外,在运行时间 期间,指派给特定代码部分的时间配额可以基于情形而改变。例如,0/S 可以增大或者减小分配给线程的时间配额的大小。在一个实施例中,基于 预期分配给计算机作业的时间配额的大小将该计算机作业分成多个微作 业。在另一实施例中,基于已分配给计算机作业的时间配额的大小将该计 算机作业分成多个微作业。关于计算机作业的什么部分应当被分离为微作 业的确定可以在运行时间之前或者在运行时间期间来作出。
根据一个实施例,微作业是小得多的(例如,最小的)工作单位,这 些工作单位可被作为单个单位来完成,同时安全地允许执行中的暂停,直 到下一个微作业执行为止。通过安全地允许执行中的暂停,意味着特定微 作业的执行可被延迟,而不影响执行所有微作业所得到的结果。
微作业可以是线程的一部分。例如,线程可被分成多个微作业。可以 类似于如何调度线程来调度这些微作业。然而,如前所述,在一个实施例 中,如果允许微作业在其拥有处理资源的时间配额或其他时间段中执行, 则微作业将完成其执行。
微作业在任何一个时刻可能仅需要非常少量的资源(例如,CPU时间、存储器分配)。这种在任何一个时刻的资源最低限度使用可导致窃取 进程。使得微作业较小允许了计算机作业能够一次仅使用少量的计算机资 源。因此,根据本发明的一个实施例,微作业的执行消耗足够少量的资 源,从而不会显著影响计算机系统中其他应用的性能。
示例API
本发明的一个实施例是用于允许应用指定各种资源利用率参数的
API。在一个实施例中,RBS 100具有这样的API。应用可以使用API来为 计算机作业(例如,进程、线程、微作业或者其他代码部分)指定利用率 标准。API的示例具有针对CPU、盘和网络的以下资源阈值参数。
*。?11利用率阈值
*待处理的盘1/0计数阈值
网络利用率阈值
以上参数可以是为每个计算机作业指定的。例如,对于使用网络的计 算机作业,可以使用网络阈值。然而,对于不使用网络的计算机作业,网 络阈值可以为零。因此,根据本发明的一个实施例,提供了细粒度的资源 管理。
作为特定示例,应用可以请求特定计算机作业仅在以下情况被执行 CPU利用率低于50。/c)、盘1/0利用率低于40%且网络流量低于60%。可以 使用资源阈值因素的任何组合,包括不使用这些资源阈值因素中的任何一 个。根据本发明的一个实施例,CPU利用率阈值区分了 RBS对CPU的使 用和任何其他作业对CPU的使用。
以下两个参数用于指定在其上应当测量利用率的区间。
CPU利用率窗口 网络利用率窗口
CPU利用率窗口参数定义一时间窗口,在该时间窗口上计算CPU利 用率。例如,在过去n毫秒上的CPU利用率被取平均。网络利用率窗口定 义一时间窗口,在该时间窗口上计算网络利用率。这些参数可以在RBS 100内部。然而,应用可以忽略(override)这些参数。待处理的盘I/O在 任何时间点是绝对的,因此不必对其进行计算。强制空闲时间参数可从应用传送到RBS以控制计算机作业如何被分散
在一段时间上。强制空闲时间参数是可选的。此外,当使用时,强制空闲 参数可以具有零值。
强制空闲时间
RBS跟踪"空闲时间",该"空闲时间"被定义为在所有计算机作业 已被执行之后的系统空闲时间。例如,(一个或多个)应用可以利用RBS 来逐步建立计算机作业的工作列表。当基于资源的工作列表120上没有计 算机作业时,RBS等待指定的强制空闲时间,然后醒来并授权这(一个或 多个)应用来执行另外的工作。例如,碎片整理器可能首先执行多个计算 机作业以对盘驱动器进行碎片整理,然后被RBS计算机作业调度器暂停。 在指定的强制空闲时间之后,RBS调用碎片整理器来授权另外的工作。例 如,碎片整理器可执行清理作业,例如释放存储器。强制空闲时间可以是 缺省参数,该缺省参数可由应用来调节。
以下参数涉及在资源利用率高于阈值时等待执行计算机作业。
等待时间
最大等待时间
如果RBS确定资源利用率目前太高以致于无法执行计算机作业,则 RBS等待指定的等待时间,然后再次检查资源利用率。每当RBS确定资 源利用率太高时,等待时间参数可被增大。例如,RBS可以增大等待时间 参数,直到达到最大等待时间。这些参数可在应用首次启动时由该应用来 指定。应用可以在其运行时间期间调节这些参数。
尽管该示例API使用时间(例如,ms)来指定各种参数,但是可以使 用诸如时间配额之类的其他量度。
变体
在一个实施例中,RBS 100是操作系统的一部分。在另一实施例中, RBS 100独立应用,其辅助为其他应用调度计算机作业。在又一实施例 中,RBS 100被集成到应用程序中,并且为该特定应用进行调度。例如, RBS 100可被集成到盘碎片整理程序或者病毒检测程序中。
在一个实施例中,如果RBS 100在操作系统外部执行,则RBS100自身限制其自己的资源利用率。例如,RBS 100监视其自己的资源利用率, 如果其自己的资源利用率太高,则RBS 100向操作系统作出请求以停止调 度RBS100达一段时间。
其他示例
以下示例说明了RBS 100可以操作的方式。然而,不要求RBS 100如 这些示例中所述的那样来操作。作为一个示例,RBS 100为特定应用调度 多个计算机作业。这些计算机作业中的一些可能需要盘I/O。 RBS 100可 以分析盘利用率,作为用于调度计算机作业的条件。如果盘利用率太高, 则RBS 100等待直到盘利用率下降为止,以调度应用的特定计算机作业。 RBS 100继续监视盘I/O利用率,并且如果没有其他的应用在试图访问盘 1/0,则允许另一计算机作业被调度。然而,在本实施例中,如果另一应用 试图利用盘I/O,则RBS 100不允许另一计算机作业被调度。因此,其他 (一个或多个)应用可以利用盘1/0。
作为另一示例,RBS 100可以分析网络活动。如果网络流量太高,则 RBS 100将不会调度应用的任何计算机作业直到流量变慢为止。如果网络 流量足够低,则RBS 100调度计算机作业以供执行。RBS 100继续检查以 确定网络流量保持足够低。如果网络流量保持足够低,则另一计算机作业 可被调度。然而,如果流量变得太高,则不调度任何其他计算机作业来执 行。在最后这两个示例中,计算机作业可以是微作业。然而,这是不要求 的。
硬件概述
图3是示出其上可以实现本发明的实施例的计算机系统300的框图。 过程200的步骤作为指令被存储在系统300的一个或多个计算机可读介质 上,并且在计算机系统300的处理器上被执行。计算机系统300包括用于 传输信息的总线302或其他通信机构,以及与总线302相耦合并用于处理 信息的处理器304。计算机系统300还包括诸如随机存取存储器(RAM) 或其他动态存储设备之类的主存储器306,其耦合到总线302,用于存储 信息和将由处理器304执行的指令。主存储器306还可用于在将由处理器 304执行的指令的执行期间存储临时变量或其他中间信息。计算机系统300还包括只读存储器(ROM) 308或其他静态存储设备,其耦合到总线 302,用于为处理器304存储静态信息和指令。提供了诸如磁盘或光盘之 类的存储设备310,其耦合到总线302,用于存储信息和指令。计算机系 统300可具有任意数目的处理器304。例如,在一个实施例中,计算机系 统300是多处理器系统。处理器304可具有任意数目的核心。在一个实施 例中,处理器304是多核处理器304。计算机系统300可用在超线程机器 中。
计算机系统300可以经由总线302耦合到显示器312,例如阴极射线 管(CRT),用于向计算机用户显示信息。包括字母数字和其他键的输入 设备314被耦合到总线302,用于向处理器304传输信息和命令选择。另 一类用户输入设备是光标控制装置316,例如鼠标、轨迹球或光标方向 键,用于向处理器304传输方向信息和命令选择,并用于控制显示器312 上的光标移动。该输入设备一般具有两个轴(第一轴(例如x)和第二轴 (例如y))上的两个自由度,其允许设备指定平面中的位置。
本发明涉及使用计算机系统300来实现这里描述的技术。根据本发明 的一个实施例,这些技术由计算机系统300响应于处理器304执行包含在 主存储器306中的一条或多条指令的一个或多个序列而执行。这种指令可 以被从另一计算机可读介质(如存储设备310)读取到主存储器306中。 对包含在主存储器306中的指令序列的执行使得处理器304执行这里描述 的过程步骤。在替换实施例中,可以使用硬连线电路来替代软件指令或与 软件指令相组合以实现本发明。因此,本发明的实施例并不限于硬件电路 和软件的任何特定组合。
这里所用的术语"机器可读介质"指参与提供使得机器以特定方式工 作的数据的任何介质。在利用计算机系统300实现的实施例中,例如,在 向处理器304提供指令以供执行时,涉及了各种机器可读介质。这种介质 可以采取许多形式,包括但不限于非易失性介质、易失性介质和传输介 质。非易失性介质例如包括光盘或磁盘,如存储设备310。易失性介质包 括动态存储器,如主存储器306。传输介质包括同轴电缆、铜线和光纤, 包括含总线302的线路。传输介质也可以采取声波或光波的形式,例如在
21无线电波和红外数据通信期间生成的声波或光波。所有这种介质都必须是 有形的,以使得介质所携带的指令能够被将指令读取到机器中的物理机构 所检测。
机器可读介质的常见形式例如包括软盘、柔性盘、硬盘、磁带或任何
其他磁介质,CD-ROM、任何其他光介质,穿孔卡、纸带、任何其他具有 孔图案的物理介质,RAM、 PROM和EPROM、 FLASH-EPROM、任何其
他存储器芯片或卡盘,下文中描述的载波,或者计算机可以读取的任何其 他介质。
各种形式的机器可读介质可用于将一条或多条指令的一个或多个序列 传送到处理器304以供执行。例如,指令可以首先承载在远程计算机的磁 盘上。远程计算机可以将指令加载到其动态存储器中,并利用调制解调器 经由电话线发送指令。计算机系统300本地的调制解调器可以接收电话线 上的数据,并使用红外发送器来将数据转换为红外信号。红外检测器可以 接收在红外信号中携带的数据,并且适当的电路可以将数据置于总线302 上。总线302将数据传送到主存储器306,处理器304从主存储器306取 得指令并执行指令。主存储器306接收的指令可以可选地在由处理器304 执行之前或之后存储在存储设备310上。
计算机系统300还包括耦合到总线302的通信接口 318。通信接口 318提供到与本地网络322相连接的网络链路320的双向数据通信耦合。 例如,通信接口 318可以是综合业务数字网络(ISDN)卡或调制解调器, 以提供与相应类型电话线的数字通信连接。又例如,通信接口 318可以是 局域网(LAN)卡,以提供与兼容LAN的数据通信连接。也可以实现无 线链路。在任何这种实现方式中,通信接口 318发送并接收电的、电磁的 或光信号,这些信号携带了表示各类信息的数字数据流。
网络链路320 —般通过一个或多个网络提供到其他数据设备的数据通 信。例如,网络链路320可以通过本地网络322提供与主机计算机324或 由因特网服务供应商(ISP) 326操作的数据设备的连接。ISP 326进而通 过全球分组数据通信网络(现在通常称为"因特网")328提供数据通信 服务。本地网络322和因特网328都使用携带数字数据流的电的、电磁的或光信号。经过各种网络的信号和在网络链路320上并经过通信接口 318 的信号(这些信号携带去往和来自计算机系统300的数字数据)是传输信 息的载波的示例性形式。
计算机系统300可以通过(一个或多个)网络、网络链路320和通信 接口 318发送消息并接收数据,其中包括程序代码。在因特网示例中,服 务器330可以通过因特网328、 ISP 326、本地网络322和通信接口 318发 送针对应用程序的请求代码。
接收到的代码可以在接收时被处理器304执行,和/或被存储在存储设 备310或其他非易失性存储装置中以供以后执行。以这种方式,计算机系 统300可以获得载波形式的应用代码。
在以上说明书中,已参考对于不同实现方式可能不同的许多具体细节 描述了本发明的实施例。因而,关于本发明是什么以及申请人希望本发明 是什么的唯一和排他指示是根据本申请授权的那套釆取其授权时的特定形 式的权利要求,包括任何后续的更正。这里针对这种权利要求中包含的术 语明确阐述的任何限定都应当决定这种术语在权利要求中使用时的含义。 因此,在权利要求中没有明确记载的限定、要素、性质、特征、优点或属 性都不应当以任何方式限制这种权利要求的范围。因此,说明书和附图被 认为是说明性的而不是限制性的。
2权利要求
1. 一种机器实现的方法,包括以下步骤基于特定资源的利用率以及与该特定资源有关并与特定计算机作业相关联的利用率标准,确定是否调度所述特定计算机作业来利用所述特定资源。
2. 如权利要求1所述的方法,还包括确定所述计算机作业对所述特定资源的预期利用率,其中,所述利用 率标准基于所述预期利用率。
3. 如权利要求2所述的方法,其中,确定预期利用率的步骤包括检查所述计算机作业中的指令。
4. 如权利要求2所述的方法,其中,确定预期利用率的步骤包括访问描述所述计算机作业对所述特定资源的先前利用率的值;以及 使所述预期利用率基于描述先前利用率的存储值。
5. 如权利要求1所述的方法,还包括从拥有所述计算机作业的应用程 序接收所述利用率标准。
6.如权利要求1所述的方法,还包括将所述计算机作业放置在多个基 于资源的调度工作列表中的至少一个工作列表上。
7. 如权利要求1所述的方法,还包括对于将被调度以供执行的多个计算机作业中的每一个计算机作业,将 该计算机作业放置在与多种计算机资源相对应的多个基于资源的调度工作 列表中的至少一个工作列表上,其中,基于给定资源的调度工作列表包括 等待利用该给定计算机资源的计算机作业。
8. 如权利要求7所述的方法,还包括 选择特定计算机资源以被所述多个计算机作业之一利用。
9. 如权利要求1所述的方法,其中,确定是否调度所述特定计算机作 业来利用所述特定资源的步骤是由操作系统执行的。
10. 如权利要求1所述的方法,其中,确定是否调度所述特定计算机 作业来利用所述特定资源的步骤是由操作系统外部的基于资源的调度器执行的。
11. 如权利要求1所述的方法,还包括确定所述特定资源的利用率。
12. 如权利要求1所述的方法,还包括估计所述特定资源在区间上的 计划利用率。
13. 如权利要求12所述的方法,其中,确定是否调度所述特定计算机 作业来利用所述特定资源的步骤基于所述特定资源在所述区间上的计划利 用率和所述利用率标准。
14. 如权利要求1所述的方法,其中,确定是否调度所述特定计算机 作业来利用所述特定资源的步骤还基于另一资源的利用率和与所述特定计 算机作业相关联且与该另一资源有关的利用率标准。
15. 如权利要求1所述的方法,其中,所述特定资源的利用率基于所 述特定资源的利用时间量。
16. 如权利要求1所述的方法,其中,所述特定资源的利用率基于对 使用所述特定资源的请求的数目。
17. —种机器实现的方法,包括以下步骤将多个计算机作业中的每一个计算机作业放置在与多种计算机资源相 对应的多个基于资源的调度工作列表中的至少一个工作列表上,其中,基 于给定资源的调度工作列表包括各自具有与所述给定资源有关的利用率标 准的计算机作业;选择特定计算机资源以被所述多个计算机作业之一利用;以及 基于所述特定计算机资源的利用率和所述工作列表上针对所述特定计 算机资源的至少一个计算机作业的利用率标准,选择所述计算机作业之一 来利用所述特定计算机资源。
18. 如权利要求17所述的方法,还包括向所述多种计算机资源中的每 一种指派优先级。
19. 如权利要求18所述的方法,其中,选择特定计算机资源以被所述 多个计算机作业之一利用的步骤基于指派给所述多种计算机资源中的每一 种的优先级。
20. 如权利要求18所述的方法,其中,向所述多种计算机资源指派优先级的步骤基于所述多种计算机资源的相对速度。
21. 如权利要求17所述的方法,其中,选择所述计算机作业之一来利用所述特定计算机资源的步骤基于所述工作列表上针对所述特定计算机资 源的至少一个计算机作业的优先级。
22. 如权利要求17所述的方法,其中,选择所述计算机作业之一来利用所述特定计算机资源的步骤包括标识所述工作列表上针对所述特定资源的计算机作业之一;以及 如果所述特定资源的估计利用率指示出足够的可用能力来满足所述特定计算机作业的利用率标准,则调度所述特定计算机作业以利用所述特定资源来执行。
23. 如权利要求17所述的方法,还包括确定第一计算机作业对所述特定资源的预期利用率,其中,所述第一 计算机作业的利用率标准基于所述预期利用率。
24. 如权利要求23所述的方法,其中,确定预期利用率的步骤包括检 查所述第一计算机作业中的指令。
25. 如权利要求23所述的方法,其中,确定预期利用率的步骤包括 访问描述所述第一计算机作业对所述特定资源的先前利用率的值;以及使所述预期利用率基于描述先前利用率的存储值。
26. 如权利要求17所述的方法,还包括从拥有所述第一计算机作业的 应用接收所述利用率标准。
27. 如权利要求17所述的方法,其中,选择所述计算机作业之一来利 用所述特定计算机资源的步骤是由操作系统执行的。
28. 如权利要求17所述的方法,其中,选择所述计算机作业之一来利 用所述特定计算机资源的步骤是由操作系统外部的基于资源的调度器执行 的。
29. 如权利要求17所述的方法,还包括确定所述特定资源的利用率。
30. 如权利要求17所述的方法,其中,确定是否调度所述特定计算机 作业来利用所述特定资源的步骤还基于另一资源的利用率和与所述特定计算机作业相关联且与该另一资源有关的利用率标准。
31. —种承载一个或多个指令序列的计算机可读介质,所述一个或多 个指令序列在被一个或多个计算机处理器执行时使得所述一个或多个计算 机处理器实现以下步骤基于特定资源的利用率和与该特定资源有关并且与特定计算机作业相 关联的利用率标准,确定是否调度所述特定计算机作业来利用所述特定资 源。
32. 如权利要求31所述的计算机可读介质,其中,确定是否调度所述特定计算机作业来利用所述特定资源的步骤还基于另一资源的利用率和与 所述特定计算机作业相关联且与该另一资源有关的利用率标准。
33. —种系统,包括一个或多个计算机处理器;以及与所述一个或多个计算机处理器通信耦合的计算机可读介质,其中, 所述计算机可读介质上存储了一个或多个存储的指令序列,这些指令序列 在被所述一个或多个计算机处理器执行时使得所述一个或多个计算机处理器执行以下步骤基于特定资源的利用率和与该特定资源有关并且与特定计算机作 业相关联的利用率标准,确定是否调度所述特定计算机作业来利用所 述特定资源。
34. 如权利要求33所述的系统,其中,确定是否调度所述特定计算机 作业来利用所述特定资源的步骤还基于另一资源的利用率和与所述特定计 算机作业相关联且与该另一资源有关的利用率标准。
35. —种机器实现的方法,包括以下步骤接收来自多个计算机作业的请求,其中,每个请求要求利用特定资源 来满足该请求,以及基于所述特定资源的利用率和各个所述计算机作业具有的与所述特定 资源有关的利用率标准,确定所述计算机作业利用所述特定资源的调度顺 序。
36. 如权利要求35所述的方法,其中,所述请求中的至少一部分要求利用另一资源来满足该请求;并且其中,确定所述计算机作业利用所述特定资源的调度顺序的步骤还基于与该部分请求相关联的计算机作业具有的 与所述另一资源有关的利用率标准。
37. 如权利要求35所述的方法,其中,所述特定资源的利用率基于所 述特定资源的利用时间量。
38. 如权利要求35所述的方法,其中,所述特定资源的利用率基于要 求利用所述特定资源来满足该请求的请求的数目。
39. 如权利要求35所述的方法,其中,确定所述计算机作业利用所述 特定资源的调度顺序的步骤是由操作系统执行的。
40. 如权利要求35所述的方法,其中,确定所述计算机作业利用所述 特定资源的调度顺序的步骤是由操作系统外部的基于资源的调度器执行 的。
41. 一种计算机实现的方法,包括以下步骤接收来自多个计算机作业的请求,其中,每个请求要求利用多种资源 中的一种或多种来满足该请求;选择特定资源以供被调度的计算机作业利用;以及基于所述特定资源的利用率和要求利用所述特定资源的各个所述计算 机作业具有的与所述特定资源有关的利用率标准,确定要求利用所述特定 资源的计算机作业的调度顺序。
全文摘要
公开了对计算机作业的基于资源的调度。根据本发明的一个实施例,基于资源的利用率和计算机作业具有的与该资源有关的利用率标准来调度该计算机作业。
文档编号G06F9/50GK101473306SQ200780022921
公开日2009年7月1日 申请日期2007年6月6日 优先权日2006年6月19日
发明者克雷格·詹森, 安德鲁·斯塔弗, 巴希尔·托马斯, 理查德·卡得鲁维 申请人:帝斯科匹尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1