(57)【要約】  コンピュータジョブのリソースに基づいたスケジューリングを開示する。コンピュータジョブは、この発明の実施例に従って、リソースの利用、およびリソースに関する、コンピュータジョブが有する利用基準に基づいて、スケジュールされる。
2009541851.tif 000002
【特許請求の範囲】
【請求項１】
機械によって実現される方法であって、
特定のリソースの利用、および前記特定のリソースに関する、特定のコンピュータジョブに関連付けられる利用基準に基づいて、前記特定のリソースを利用するように前記特定のコンピュータジョブをスケジュールすべきであるかどうかを判断するステップを備える、方法。
【請求項２】
コンピュータジョブによって前記特定のリソースの予想される利用を判断するステップをさらに備え、前記利用基準は前記予想される利用に基づく、請求項１に記載の方法。
【請求項３】
予想される利用を判断する前記ステップは、前記コンピュータジョブにおける命令を調べるステップを含む、請求項２に記載の方法。
【請求項４】
予想される利用を判断する前記ステップは、
前記コンピュータジョブによって前記特定のリソースの以前の利用を表わす値にアクセスするステップと、
前記予想される利用を、以前の利用を表わす記憶された値に基づかせるステップとを含む、請求項２に記載の方法。
【請求項５】
コンピュータジョブを所有するアプリケーションプログラムから前記利用基準を受取るステップをさらに備える、請求項１に記載の方法。
【請求項６】
複数のリソースに基づいたスケジューリングワークリストのうちの少なくとも１つにコンピュータジョブを載せるステップをさらに備える、請求項１に記載の方法。
【請求項７】
実行用にスケジュールされる複数のコンピュータジョブの各々について、複数のコンピュータリソースに対応する複数のリソースに基づいたスケジューリングワークリストのうちの少なくとも１つにコンピュータジョブを載せるステップをさらに備え、所与のリソースに基づいたスケジューリングワークリストは、所与のコンピュータリソースの利用を待っているコンピュータジョブを含む、請求項１に記載の方法。
【請求項８】
前記複数のコンピュータジョブのうちの１つによって利用されるように特定のコンピュータリソースを選択するステップをさらに備える、請求項７に記載の方法。
【請求項９】
前記特定のリソースを利用するように前記特定のコンピュータジョブをスケジュールすべきであるかどうかを判断する前記ステップは、オペレーティングシステムによって行なわれる、請求項１に記載の方法。
【請求項１０】
前記特定のリソースを利用するように前記特定のコンピュータジョブをスケジュールすべきであるかどうかを判断する前記ステップは、オペレーティングシステムの外部のリソースに基づいたスケジューラによって行なわれる、請求項１に記載の方法。
【請求項１１】
前記特定のリソースの利用を判断するステップをさらに備える、請求項１に記載の方法。
【請求項１２】
ある間隔にわたる前記特定のリソースの予測される利用を推定するステップをさらに備える、請求項１に記載の方法。
【請求項１３】
前記特定のリソースを利用するように前記特定のコンピュータジョブをスケジュールす
べきであるかどうかを判断する前記ステップは、前記ある間隔にわたる前記特定のリソースの予測される利用および前記利用基準に基づく、請求項１２に記載の方法。
【請求項１４】
前記特定のリソースを利用するように前記特定のコンピュータジョブをスケジュールすべきであるかどうかを判断する前記ステップはさらに、別のリソースの利用、および他のリソースに関する、前記特定のコンピュータジョブに関連付けられる利用基準に基づく、請求項１に記載の方法。
【請求項１５】
前記特定のリソースの利用は、前記特定のリソースの利用の時間に基づく、請求項１に記載の方法。
【請求項１６】
前記特定のリソースの利用は、ある数の、前記特定のリソースの使用要求に基づく、請求項１に記載の方法。
【請求項１７】
機械によって実現される方法であって、
複数のコンピュータジョブの各々を、複数のコンピュータリソースに対応する複数のリソースに基づいたスケジューリングワークリストのうちの少なくとも１つに載せるステップを備え、所与のリソースに基づいたスケジューリングワークリストは、各々が前記所与のリソースに関する利用基準を有するコンピュータジョブを含み、前記方法はさらに、
前記複数のコンピュータジョブのうちの１つによって利用されるように特定のコンピュータリソースを選択するステップと、
前記特定のコンピュータリソースの利用、および前記特定のコンピュータリソースについての前記ワークリスト上の前記コンピュータジョブのうちの少なくとも１つの前記利用基準に基づいて、前記特定のコンピュータリソースを利用するように前記コンピュータジョブのうちの１つを選択するステップとを備える、方法。
【請求項１８】
前記複数のコンピュータリソースの各々に優先順位を割振るステップをさらに備える、請求項１７に記載の方法。
【請求項１９】
前記複数のコンピュータジョブのうちの１つによって利用されるように特定のコンピュータリソースを選択する前記ステップは、前記複数のコンピュータリソースの各々に割振られた前記優先順位に基づく、請求項１８に記載の方法。
【請求項２０】
前記複数のコンピュータリソースに優先順位を割振るステップは、前記複数のコンピュータリソースの相対速度に基づく、請求項１８に記載の方法。
【請求項２１】
前記特定のコンピュータリソースを利用するように前記コンピュータジョブのうちの１つを選択する前記ステップはさらに、前記特定のコンピュータリソースについての前記ワークリスト上の前記コンピュータジョブのうちの少なくとも１つの優先順位に基づく、請求項１７に記載の方法。
【請求項２２】
ある間隔の間、前記特定のコンピュータリソースを利用するように前記コンピュータジョブのうちの１つを選択するステップは、
前記特定のリソースについての前記ワークリスト上の前記コンピュータジョブのうちの１つを識別するステップと、
前記特定のリソースの推定される利用が特定のコンピュータジョブの前記利用基準を満たすのに十分な利用可能容量を示す場合、前記特定のリソースを用いて実行用に前記特定のコンピュータジョブをスケジュールするステップとを含む、請求項１７に記載の方法。
【請求項２３】
第１のコンピュータジョブによって前記特定のリソースの予想される利用を判断するス
テップをさらに備え、第１のコンピュータジョブについての前記利用基準は、前記予想される利用に基づく、請求項１７に記載の方法。
【請求項２４】
予想される利用を判断する前記ステップは、前記第１のコンピュータジョブにおける命令を調べるステップを含む、請求項２３に記載の方法。
【請求項２５】
予想される利用を判断する前記ステップは、
前記第１のコンピュータジョブによって、前記特定のリソースの以前の利用を表わす値にアクセスするステップと、
前記予想される利用を、以前の利用を表わす記憶された値に基づかせるステップとを含む、請求項２３に記載の方法。
【請求項２６】
第１のコンピュータジョブを所有するアプリケーションから前記利用基準を受取るステップをさらに備える、請求項１７に記載の方法。
【請求項２７】
前記特定のコンピュータリソースを利用するように前記コンピュータジョブのうちの１つを選択するステップは、オペレーティングシステムによって行なわれる、請求項１７に記載の方法。
【請求項２８】
前記特定のコンピュータリソースを利用するように前記コンピュータジョブのうちの１つを選択する前記ステップは、オペレーティングシステムの外部のリソースに基づいたスケジューラによって行なわれる、請求項１７に記載の方法。
【請求項２９】
前記特定のリソースの利用を判断するステップをさらに備える、請求項１７に記載の方法。
【請求項３０】
前記特定のリソースを利用するように前記特定のコンピュータジョブをスケジュールすべきであるかどうかを判断する前記ステップはさらに、別のリソースの利用、および他のリソースに関する、特定のコンピュータジョブに関連付けられる利用基準に基づく、請求項１７に記載の方法。
【請求項３１】
命令の１つ以上のシーケンスを搬送するコンピュータ読取可能媒体であって、命令の１つ以上のシーケンスは、１つ以上のコンピュータプロセッサによって実行されると、特定のリソースの利用、および前記特定のリソースに関する、特定のコンピュータジョブに関連付けられる利用基準に基づいて、前記特定のリソースを利用するように前記特定のコンピュータジョブをスケジュールすべきであるかどうかを判断するステップを前記１つ以上のコンピュータプロセッサに実行させる、コンピュータ読取可能媒体。
【請求項３２】
前記特定のリソースを利用するように前記特定のコンピュータジョブをスケジュールすべきであるかどうかを判断する前記ステップはさらに、別のリソースの利用、および他のリソースに関する、前記特定のコンピュータジョブに関連付けられる利用基準に基づく、請求項３１に記載の方法。
【請求項３３】
システムであって、
１つ以上のコンピュータプロセッサと、
前記１つ以上のコンピュータプロセッサに通信可能に結合されるコンピュータ読取可能媒体とを備え、前記コンピュータ読取可能媒体は、命令の１つ以上の記憶されたシーケンスを記憶させており、命令の１つ以上の記憶されたシーケンスは、前記１つ以上のコンピュータプロセッサによって実行されると、特定のリソースの利用、および前記特定のリソースに関する、特定のコンピュータジョブに関連付けられる利用基準に基づいて、前記特
定のリソースを利用するように前記特定のコンピュータジョブをスケジュールすべきであるかどうかを判断するステップを前記１つ以上のコンピュータプロセッサに実行させる、システム。
【請求項３４】
前記特定のリソースを利用するように前記特定のコンピュータジョブをスケジュールすべきであるかどうかを判断する前記ステップはさらに、別のリソースの利用、および他のリソースに関する、前記特定のコンピュータジョブに関連付けられる利用基準に基づく、請求項３３に記載の方法。
【請求項３５】
機械によって実現される方法であって、
複数のコンピュータジョブから要求を受取るステップを備え、各要求は、前記要求を満たすために特定のリソースの利用を必要とし、前記方法はさらに、
前記特定のリソースの利用、および前記特定のリソースに関する、前記コンピュータジョブの各々が有する利用基準に基づいて、前記特定のリソースを利用するように前記コンピュータジョブについてのスケジューリング順序を判断するステップを備える、方法。
【請求項３６】
前記要求の少なくとも一部分は、前記要求を満たすために別のリソースの利用を必要とし、前記特定のリソースを利用するように前記コンピュータジョブについてのスケジューリング順序を判断する前記ステップはさらに、他のリソースに関する、要求の前記部分に関連付けられる前記コンピュータジョブが有する利用基準に基づく、請求項３５に記載の方法。
【請求項３７】
前記特定のリソースの利用は、前記特定のリソースの利用の時間に基づく、請求項３５に記載の方法。
【請求項３８】
前記特定のリソースの利用は、前記要求を満たすために前記特定のリソースの利用を必要とする要求の数に基づく、請求項３５に記載の方法。
【請求項３９】
前記特定のリソースを利用するように前記コンピュータジョブについてのスケジューリング順序を判断する前記ステップは、オペレーティングシステムによって行なわれる、請求項３５に記載の方法。
【請求項４０】
前記特定のリソースを利用するように前記コンピュータジョブについてのスケジューリング順序を判断する前記ステップは、オペレーティングシステムの外部のリソースに基づいたスケジューラによって行なわれる、請求項３５に記載の方法。
【請求項４１】
機械によって実現される方法であって、
複数のコンピュータジョブから要求を受取るステップを備え、各要求は、前記要求を満たすために複数のリソースのうちの１つ以上の利用を必要とし、前記方法はさらに、
利用のためにコンピュータジョブをスケジュールさせるように特定のリソースを選択するステップと、
前記特定のリソースの利用、および前記特定のリソースに関する、前記特定のリソースの利用を必要とする前記コンピュータジョブの各々が有する利用基準に基づいて、前記特定のリソースの利用を必要とする前記コンピュータジョブについてのスケジューリング順序を判断するステップとを備える、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明は、コンピュータジョブをスケジュールすることに関する。特に、この発明の実施例は、特定のジョブのリソース利用基準、およびジョブが使用するコンピュータリソースの利用に基づいて、コンピュータジョブをスケジュールすることに関する。
【背景技術】
【０００２】
背景
今日のコンピュータオペレーティングシステム（operating systems）（Ｏ／Ｓ）は、マルチタスクスケジューラを利用して、同時に動作する２つ以上のコンピュータジョブ（たとえばプロセス）の外観を与える。多くの異なるスケジューリングアルゴリズムがあるが、概してその概念は、量子として知られている小さなタイムスライスがプロセスの１つのスレッドに与えられ、次いでそのプロセスの別のスレッドまたは別のプロセスに与えられるなどというものである。量子の長さは非常に小さく、典型的には２０〜１２０ミリ秒の範囲内にある。人間の時間の認識のために、ジョブは同時に動作しているように見える。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
中央処理装置（central processing unit）（ＣＰＵ）はほとんどのコンピュータシステムのうちの最速のコンポーネントである傾向があるのに対して、ディスクＩ／Ｏ、ネットワークＩ／Ｏ、さらにはメモリなどの他のコンピュータリソースははるかに遅い傾向がある。たとえば、ディスクからのデータ転送およびＣＰＵ内でのデータ転送の点で測定されると、ディスクＩ／ＯはＣＰＵよりも約１００万倍遅いであろう。その結果、ＣＰＵはこれらのより遅いリソースを待つことが多い。たとえば、３ギガヘルツのＣＰＵは、ミリ秒単位で測定される平均的なアクセス時間でディスクドライブがデータを検索するのを待っている間、遊休していることが多い。
【０００４】
いくつかの異なるジョブが同じリソースを求めて競うことが多いので、ジョブはしばしば互いに衝突し、その結果、１つ以上のジョブが遅くなる。ユーザの観点からすれば、ジョブの衝突は、無反応なアプリケーション、ギクシャクしたカーソルの動き、およびゆっくりと表示されるグラフィックスとして現われる。
【０００５】
スロットリングは、これらのマイナスの影響を最小限にするための技術である。スロットリングは、アプリケーションまたはジョブが、割当てられたリソースの量よりも多くの量を使用することを防ぐ。スロットリングの種類には、ディスクＩ／Ｏスロットリング、ＣＰＵスロットリング、およびネットワークスロットリングが含まれる。たとえば、ＣＰＵスロットリングは、アプリケーションについてのターゲットＣＰＵ利用限度を確立し、アプリケーションがターゲット限度を超えると強制的にアプリケーションの動作を停止させることを伴い得る。スロットリングは時には、メンテナンスアプリケーションまたはそれほど重要でないコンピュータジョブのためのコンピュータリソースに適用される。スロットリングには利点があるが、コンピュータジョブのリソース使用は他のジョブおよびアプリケーションにとって完全に透明であるわけではない。
【０００６】
上記の問題はさらに面倒である。なぜなら、コンピュータリソースは概して２４時間にわたって浪費されるためである。たとえば、ほとんどのデスクトップはコンピュータの利用可能なリソースのうち５％未満を利用しており、高トラフィックサーバはおよそ２０％
を利用することが多い。リソースのうち８０〜９０％を利用するコンピュータでさえ、依然として１０〜２０％の利用可能なリソースを有している。
【０００７】
さもなければ失われるこれらのリソースを回復して利用するために、必要なものは、他のジョブまたはアプリケーションに重大な影響を与えることなくコンピュータシステム内で１つ以上のジョブの実行を可能にする技術である。この技術は、ジョブをスケジュールする際にユーザの時間を消費するはずがなく、また、ジョブが動作しているときにコンピュータシステムとのユーザの対話にマイナスの影響を及ぼすはずがない。
【課題を解決するための手段】
【０００８】
この節で説明された方策は、追求され得る方策であるが、以前に着想または追求された方策であるとは限らない。したがって、特に明記しない限り、この節で説明された方策のいずれも、単にこの節に含まれているからといって先行技術と見なされると仮定されるべきではない。
【０００９】
この発明は、同様の参照番号が同様の要素を指す添付の図面において、限定的ではなく例示的に図示される。
【図面の簡単な説明】
【００１０】
【図１Ａ】この発明の実施例に従った、リソースに基づいたスケジューリングワークリストを有するリソースに基づいたスケジューラの図である。
【図１Ｂ】この発明の別の実施例に従った、リソースに基づいたスケジューラの図である。
【図２】この発明の実施例に従った、リソースに基づいたスケジューリングのフローチャートである。
【図３】本発明の実施例が実現され得るコンピュータシステムを図示するブロック図である。
【発明を実施するための形態】
【００１１】
詳細な説明
以下の説明では、説明のために、多数の特定的な詳細が記載されてこの発明の完全な理解を与える。しかし、この発明はこれらの特定的な詳細がなくても実施され得ることが明らかになるであろう。他の場合では、この発明を不必要に不明瞭にするのを避けるため、周知の構造および装置がブロック図形態で示される。
【００１２】
概要
大多数のコンピュータは、常に自身のリソース容量のすべてを利用しているとは限らない。これは典型的に、１日２４時間、週７日よく使用されているように見えるコンピュータ、および毎日わずかな間しか立ち上げられないコンピュータについても当てはまる。したがって、コンピュータ時間およびリソースが無駄である。たとえば、２４時間にわたって、かなり多用され、かつ活動時に短時間のスパイクを有し得るコンピュータシステムは、平均して約５〜２０％のリソースしか使用していない可能性がある。
【００１３】
コンピュータジョブは、この発明の実施例に従って、リソースの利用、およびリソースに関する、コンピュータジョブが有する利用基準に基づいて、スケジュールされる。たとえば、コンピュータジョブは、コンピュータジョブをスケジュールするためにディスクＩ／Ｏリソースが６０％の利用可能容量を有するという利用基準を有し得る。この実施例では、ディスクＩ／Ｏリソースの利用可能容量が６０％未満であると、コンピュータジョブはスケジュールされない。
【００１４】
１つの実施例では、リソースに基づいたスケジューラ（resource-based scheduler）（ＲＢＳ）は、各コンピュータジョブを、いくつかの異なるリソースに基づいたスケジューリングワークリストのうちの少なくとも１つに載せる。これらのリソースに基づいたスケジューリングワークリストは、ディスクＩ／Ｏスケジューリングワークリスト、ＣＰＵスケジューリングワークリスト、およびネットワークＩ／Ｏスケジューリングワークリストを含むが、これらに限定されない。したがって、特定のスケジューリングワークリストは、特定のリソースを使用することを待っているコンピュータジョブを備える。この実施例では、コンピュータジョブの各々は、特定のリソースに関する利用基準を有する。ＲＢＳは、次にコンピュータジョブをスケジュールさせるためにリソースのうちの１つを選択する。１つの実施例では、選択はリソースの優先順位に基づく。たとえば、ディスクＩ／Ｏリソースは、ＣＰＵリソースよりも高い優先順位を有し得る。１つの実施例では、より遅いリソースと称されるリソースは、より速いリソースと称されるリソースよりも高い優先順位を与えられる。
【００１５】
ＲＢＳは、どのリソースをスケジュールするかを選択した後、選択されたリソースに対応するワークリストからコンピュータジョブのうちの１つを実行用に選択する。１つの実施例では、ＲＢＳは、リソースの利用可能容量をコンピュータジョブの利用基準と一致させる基準に基づいて、コンピュータジョブを選択する。しかし、ＲＢＳは、コンピュータジョブの優先順位、コンピュータジョブの必要な実行順序、コンピュータジョブをワークリストに載せた順序などの他の要因も用いてもよい。
【００１６】
なお、１つの実施例では、ＲＢＳは、たとえジョブが必要としない他のリソースが（全面的にまたは部分的に）他のジョブによって利用されているとしても、そのジョブが利用するリソースが（全面的にまたは部分的に）利用可能であるときに各コンピュータジョブをスケジュールすることによって、複数のコンピュータリソースの効率的な利用を可能にし、他のジョブの性能の侵害を低減する。
【００１７】
リソースに基づいたスケジューラ
図１Ａは、この発明の実施例に従った、リソースに基づいたスケジューリングワークリスト１２０を有するリソースに基づいたスケジューラ（ＲＢＳ）１００の図である。ＲＢＳ１００は、異なるコンピュータリソースの利用可能容量に基づいて、コンピュータジョブを事前対応的にスケジュールする。例として、異なるリソースは、ＣＰＵ、ディスクＩ／Ｏ、ネットワークＩ／Ｏ、ビデオ、メモリ、キーボード、ネットワークリソースなどを含み得るが、これらに限定されない。「コンピュータジョブ」または「ジョブ」という用語は、本明細書中で用いられるとき、コンピュータプロセス、スレッド、（本明細書中で後述する）マイクロジョブ、または実行可能なコンピュータコードの任意の部分を含むが、これらに限定されない。ＲＢＳ１００は、いずれかの他のジョブのリソース要件と衝突することなく各コンピュータジョブがリソースの要件を受取ることができるようにしてもよい。１つの実施例では、ＲＢＳ１００は、既にリソースを利用している他のジョブのうちのいずれかの侵害が最小限の状態で、いつ特定のリソースが一部分だけ利用されるかを判断でき、未利用の部分を選択されたジョブに割当てることができる。
【００１８】
１つの実施例では、ＲＢＳ１００はさまざまな異なるリソースのためにコンピュータジョブをスケジュールする。異なるリソースは、ＲＢＳ１００と同じコンピュータシステム上にある場合もあれば、ＲＢＳ１００と同じコンピュータシステム上にない場合もある。たとえば、１つの実施例では、ＲＢＳ１００は、ネットワークを介してアクセスされるリソースを利用するようにコンピュータジョブをスケジュールする。特定の例として、リソースはインターネットを介してアクセスされてもよい。
【００１９】
したがって、１つの実施例では、ＲＢＳ１００は、さまざまなリソースへのアクセスを
求めるコンピュータジョブを受取り、どのリソースを利用するようにどのコンピュータジョブをスケジュールすべきであるか、およびいつコンピュータジョブをスケジュールすべきであるかについてスケジューリング判断を下す。
【００２０】
コンピュータリソース利用
ＲＢＳ１００は、さまざまなコンピュータリソースの利用を表わすリソース利用情報１０５を入力する。利用は、間隔または指定された時点に関連していてもよい。利用は、指定された間隔にわたる平均的な利用であってもよい。たとえば、リソースの利用は、指定された時間間隔にわたる平均的な利用として指定されることができる。特定の例として、３０％利用のＣＰＵリソースは、最近の時間間隔にわたる平均的な利用に関連していてもよい。１つの実施例では、間隔は量子単位で測定される。
【００２１】
１つの実施例では、利用は数値に基づいたものである。たとえば、利用は、指定された時点において実行を待っているオペレーションの数に基づき得る。たとえば、リソースが実行を待っている「ｘ」オペレーションを有する場合、利用は「ｘ」であり得る。数値に基づいたリソースの利用の別の例として、利用は、特定のリソースの利用要求の数に基づく。たとえば、１つの実施例では、利用は、各プロセスが有する特定のリソースの利用要求の総数に基づく。数値に基づいた利用は、ある時点または間隔に関連していてもよい。たとえば、１つの実施例では、数値に基づいたリソースの利用は、特定の時間間隔にわたって実行を待っているオペレーションの平均数に基づく。別の実施例では、数値に基づいたリソースの利用は、特定の時点において実行を待っているオペレーションの数に基づく。
【００２２】
１つの実施例では、ＲＢＳ１００は、リソース利用１０５に基づいて将来のリソース利用を推定する。たとえば、特定のリソース（およびおそらく他の要因）の利用要求の数に基づいて、将来のリソース利用の推定がなされる。別の例として、特定のリソース（およびおそらく他の要因）の利用割合に基づいて、将来のリソース利用の推定がなされる。
【００２３】
コンピュータジョブ利用基準
ＲＢＳ１００は、スケジュールされるべきジョブについての利用基準１１８も入力する。利用基準１１８はリソースに関連している。たとえば、リソース閾値が用いられてもよく、他のジョブによるリソース利用が閾値を下回ると、ＲＢＳ１００は単にコンピュータジョブをスケジュールする。リソース閾値を用いる一例は、ディスクＩ／Ｏが６０％未満の利用可能容量を有する場合にＲＢＳ１００がディスクＩ／Ｏを使用するように特定のコンピュータジョブを単にスケジュールするというものである。１つの実施例では、ＲＢＳ１００は、利用基準１１８を提供するために、コンピュータジョブを所有するアプリケーションのためのアプリケーションプログラムインターフェイス（Application Program Interface）（ＡＰＩ）を有する。本明細書中では、例示的なＡＰＩが提供される。
【００２４】
１つの実施例では、利用基準１１８は時間に基づく。利用基準１１８を割合に基づかせることは、時間に基づいた基準の一例である。１つの実施例では、利用基準１１８は数値に基づいたものである。数値に基づいた利用基準１１８の一例は、特定のリソース上で実行を待っているオペレーションの数である。数値に基づいた利用基準１１８の別の例は、リソースを使用するために受取られるある数の要求である。たとえば、特定のプロセスの利用基準１１８は、特定のリソースの使用要求の数に基づく。
【００２５】
１つの実施例では、ＲＢＳ１００は履歴利用情報１１６を記憶する。履歴利用情報１１６は、１つ以上のジョブによる以前のリソース利用を表わす。たとえば、コンピュータジョブがネットワークＩ／Ｏリソースのうち３０％を利用したという事実が、将来の参考のために記憶される。１つの実施例では、ＲＢＳ１００は、履歴利用情報１１６を用いて、
スケジュールされるべきコンピュータジョブについての利用基準を判断する。たとえば、コンピュータジョブが特定のリソースを利用した１つ以上の以前の時間に基づいて、ＲＢＳ１００は、コンピュータジョブが特定のリソースについての「ｘ」％の利用基準を有すると判断する。ＲＢＳ１００は次いで、コンピュータジョブをスケジュールするときにこの利用基準を使用する。
【００２６】
ＲＢＳ１００は、利用基準を判断するためにＲＢＳ１００が分析する、スケジュールされるべきジョブの実行可能なコード１０８も入力する。
【００２７】
スケジューリング判断の延期
１つの実施例では、コンピュータジョブが特定のリソースを利用することを許可されるべきであるかどうかについての判断は延期されてもよい。たとえば、特定のコンピュータジョブは、リソースに基づいたスケジューラが特定のコンピュータジョブをスケジュールすべきであるかどうかを考慮しさえする前に、他のコンピュータジョブからの指定されたある数の要求を処理することができるようにする利用基準を有していてもよい。１つの実施例では、リソースの利用が閾値を上回ると、ＲＢＳは特定のコンピュータジョブの実行を延期する。特定のコンピュータジョブは、特定のコンピュータジョブをスケジュールする前に、処理され得る他のコンピュータジョブからの要求の数を指定する。１つの実施例では、その数の要求が処理された後、次に特定のコンピュータジョブがスケジュールされる。別の実施例では、要求が処理された後、ＲＢＳは特定のコンピュータジョブがリソースを有することができるようにするかどうかを判断する。
【００２８】
１つの実施例では、リソースに基づいたスケジューラは、遅延なく満たされるべきであるリソース要求のための通常のワークリストと、延期され得るリソース要求のための延期ワークリストとを有する。延期リストにおける各項目は、要求が延期リストにのると現在の要求番号を刻印されてもよい。これらの延期された要求は、どの延期された要求が最初に処理されるべきであるかに基づいて順序付けられてもよい。１つの実施例では、複数の延期ワークリストが存在する。ＲＢＳが新しい要求を開始することを決定すると、ＲＢＳはまず、通常のリストに対して、いずれの要求も期限切れであるかどうかを確認するために延期リストを見て、次いでそれらを次に取得し得る。
【００２９】
リソースに基づいたスケジューリングワークリスト
１つの実施例では、ＲＢＳ１００は、コンピュータジョブが使用するようにスケジュールされ得るリソースに基づいたスケジューリングワークリスト１２０をリソースごとに有する。たとえば、ＲＢＳ１００は、ＣＰＵリソースワークリスト１２０（１）、ディスクＩ／Ｏワークリスト１２０（２）、ネットワークＩ／Ｏワークリスト１２０（３）、および他のリソースワークリスト１２０（ｎ）を有する。他のリソースワークリストの例は、ネットワークリソースワークリスト、ビデオリソースワークリスト、キーボードリソースワークリストを含むが、これらに限定されない。各ワークリスト１２０は、そのリソースに対応するリソースを利用することを待っているジョブを備える。図を不明瞭にしないために、すべての可能なリソースに基づいたスケジューリングワークリストが図１Ａに示されているわけではない。１つの実施例では、特定のワークリストは、リソースの組合せを利用するコンピュータジョブのためのものである。１つの実施例では、特定のリソースのためのワークリストが２つ以上あり、各ワークリストは異なる優先順位に対応する。たとえば、優先順位が高いコンピュータジョブがあるワークリストに入り、優先順位が中程度であるコンピュータジョブが別のワークリストに入る、などである。ワークリストは順序付けられる場合もあれば、順序付けられない場合もある。
【００３０】
１つの実施例では、ＲＢＳ１００は、実行可能なコード１０８の分析に基づいて、どのワークリストにコンピュータジョブを載せるかを判断する。たとえば、１つの実施例では
、ＲＢＳ１００は、コンピュータジョブの実行可能なコード１０８における命令を調べて、コンピュータジョブがどのリソースを必要としているかを判断する。
【００３１】
１つの実施例では、十分な量のコンピュータリソースが利用可能である場合、ＲＢＳ１００は、リソースに対応するワークリストにおけるコンピュータジョブのうちの１つにリソースを与える。たとえば、スケジューリング論理１１２は、リソースの利用可能容量およびコンピュータジョブの利用基準に基づいて、ワークリスト上のコンピュータジョブのうちの１つを選択する。他の選択基準を用いることができる。選択基準は、ジョブをワークリストに加えた順序、コンピュータジョブの優先順位（たとえばプロセスの優先順位、スレッドの優先順位）、ならびにリソースの利用可能容量とジョブのリソース必要性とのマッチングを含むが、これらに限定されない。選択は、これらの基準のいずれかの組合せおよび具体的に記載されていない他の基準に基づいていてもよい。
【００３２】
リソースに基づいたスケジューリングワークリストを持たないリソースに基づいたスケジューラ
１つの実施例では、ＲＢＳ１００は、さまざまなコンピュータリソースに対応するスケジューリングワークリストを使用しない。図１Ｂを参照して、ＲＢＳ１００は、非特定的な順序で継続的にコンピュータジョブをスケジュールする要求を受取る。たとえば、アプリケーションは、コンピュータジョブを実行させることを望むと、要求をＲＢＳ１００に送って、１つ以上のコンピュータジョブをスケジュールする。ＲＢＳ１００は、特定のコンピュータジョブがどのリソースを使用するかを判断するか、または通知される。リソースの例は、プロセッサ３０４、記憶装置３１０、ディスプレイ３１２、入力装置３１４、およびネットワーク通信インターフェイス３１８、およびネットワーク１８４を介してアクセスされるネットワークリソース１８２を含む。
【００３３】
ＲＢＳ１００は、特定のリソースの利用について判断するか、または通知される。ＲＢＳ１００はまた、特定のリソースに関する、コンピュータジョブが有する利用基準について判断するか、または通知される。特定のリソースの利用および利用基準に基づいて、ＲＢＳ１００は、特定のリソースを利用するように特定のコンピュータジョブをスケジュールすべきであるかどうかを判断する。たとえば、ネットワーク通信インターフェイス３１８の利用がコンピュータジョブの利用基準を満たす場合、ＲＢＳ１００はネットワーク通信インターフェイス３１８を用いて実行するようにコンピュータジョブをスケジュールする。ネットワーク通信インターフェイス３１８の利用がコンピュータジョブの利用基準を満たさない場合には、ＲＢＳ１００はネットワーク通信インターフェイス３１８を使用するようにコンピュータジョブをスケジュールすることはない。むしろ、ＲＢＳ１００は待機してもよく、ネットワーク通信インターフェイス３１８の利用がコンピュータジョブの利用基準を満たすときにコンピュータジョブをスケジュールしてもよい。
【００３４】
リソースの優先順位付け
１つの実施例では、コンピュータリソースはスケジューリングの目的で優先順位をつけられる。たとえば、ＣＰＵ、ディスクＩ／Ｏ、ネットワークＩ／Ｏ、および他のリソースは、リソースの相対速度に基づいてランク付けされてもよい。たとえば、ディスクＩ／Ｏは、ＣＰＵリソースよりも遅いリソースと称されてもよく、したがって、より高い優先順位を与えられ得る。同様に、ネットワークＩ／Ｏリソースは、ディスクＩ／Ｏよりも速いがＣＰＵよりも遅くてもよい。したがって、ネットワークリソースは、ＣＰＵよりも高いがディスクＩ／Ｏ未満の優先順位を与えられるであろう。ＲＢＳ１００がより遅いリソースを考慮に入れ、優先順位がより高いこれらのリソースをスケジュールすると、ＣＰＵなどのより速いリソースの遅延を最小限にすることができる。
【００３５】
アプリケーションに基づいた例
以下は、アプリケーションにおけるリソースに基づいたスケジューリングの一例である。例として、アプリケーションはデフラグ用プログラムまたはウイルススキャナであってもよい。この例では、コンピュータジョブＡは、ディスクＩ／Ｏスケジューリングワークリスト１２０（２）の上部にあり、６０％のディスクＩ／Ｏ利用可能容量の利用基準を有し、ディスクＩ／Ｏスケジューリングワークリスト１２０（２）上で次であるコンピュータジョブＢは、２０％のディスクＩ／Ｏ利用可能容量の利用基準を有する。ディスクＩ／Ｏが３０％の利用可能容量を有する場合、ＲＢＳ１００はコンピュータジョブＡをスケジュールすることはないであろう。なぜなら、ディスクＩ／Ｏは十分な利用可能容量を持たないためである。しかし、コンピュータジョブＢはスケジュールされ得るであろう。ＲＢＳ１００は、この場合、ディスクＩ／Ｏを無駄にする代わりに利用するように適切なコンピュータジョブ（コンピュータジョブＢ）をスケジュールすることによって３０％のディスクＩ／Ｏ利用可能容量を使用する。ＲＢＳ１００が６０％のディスクＩ／Ｏを必要とするコンピュータジョブＡにディスクＩ／Ｏリソースを与えた場合、これはコンピュータジョブの衝突を引起していたかもしれない。なぜなら、２００％以上のディスクＩ／Ｏリソースが割当てられていたであろうという理由のためである。
【００３６】
カーネルレベルのリソースに基づいたスケジューラ
１つの実施例では、ＲＢＳ１００はカーネルレベルでＯ／Ｓにおいて実現される。このような実施例では、カーネルレベルのＲＢＳ１００は、実行を要求しているコンピュータジョブ（たとえばスレッド）の全ワークリストの十分な知識を有している。したがって、ＲＢＳ１００は、任意のリソースの利用割合を判断する必要なく、リソース可用性に基づいて実行を順序付けることができる。これは、ＲＢＳ１００が既にさまざまなリソースのスケジューリングを完全に制御しているためである。測定の必要はなく、ＲＢＳ１００はそのままでリソースを割当てるものを既に知っている。
【００３７】
プロセスフロー
図２は、この発明の実施例に従った、リソースに基づいたスケジューリングのためのプロセス２００のステップを図示するフローチャートである。プロセス２００のステップは、説明の都合上、特定の順序で記載されている。しかし、ステップは異なる順序で行なわれてもよい。さらに、ステップは何度も繰返されてもよい。ステップ２０２において、ＲＢＳ１００は１つ以上のジョブの利用基準を受取る。たとえば、アプリケーションプログラムが利用基準をＲＢＳ１００に提供する。アプリケーションは、異なるコンピュータジョブに異なる基準を指定できる。アプリケーションがコンピュータジョブに利用基準を指定する必要はない。
【００３８】
アプリケーションは、この発明の実施例に従って、ＲＢＳ１００にパラメータを送ってリソース利用を制御する。リソース利用の制御は、ディスクＩ／Ｏ、ＣＰＵおよびネットワークを含むが、これらに限定されない。たとえば、アプリケーションは、上記の３つのリソースの閾値レベルのいずれかの組合せまたは他のリソースが得られるまでは、コンピュータジョブの実行を要求することができる。さらに、アプリケーションは、異なるコンピュータジョブに異なるリソース閾値レベルを指定することができる。たとえば、アプリケーションは、１つの実施例に従って、各コンピュータジョブに異なるリソース閾値レベルを指定する。したがって、細分化されたリソース管理が可能である。
【００３９】
ステップ２０４において、ＲＢＳ１００は１つ以上のジョブの利用基準を判断する。１つの実施例では、ＲＢＳ１００はコンピュータジョブによる特定のリソースの予想される利用を判断し、利用基準は予想されるリソース利用に基づく。１つの実施例では、ＲＢＳ１００は、特定のコンピュータジョブにおける命令を調べることによって、特定のコンピュータジョブの予想される利用を判断する。１つの実施例では、ＲＢＳ１００は、特定のコンピュータジョブによるリソースの以前の利用を表わす記憶された値に、予想される利
用を基づかせる。
【００４０】
ステップ２０６において、コンピュータジョブを、リソースに基づいたスケジューリングワークリストに加える。たとえば、特定のプロセスまたは少なくとも特定のプロセスのスレッドが、少なくとも１つのリソースに基づいたスケジューリングワークリストに載せられる。より多くのジョブがスケジュールされることを要求すると、リソースに基づいたスケジューリングワークリストにジョブが加えられる。１つの実施例では、多くの異なるコンピュータジョブからの要求がワークリストに載せられる。１つの実施例では、要求は、特定のリソースを利用するようにスケジュールされるコンピュータジョブによって満たされることができる。１つの実施例では、コンピュータジョブは、コンピュータジョブの優先順位に基づいて、ワークリスト上のある場所に挿入される。１つの実施例では、プロセスのスレッドが実行する順序が重要であり得るので、コンピュータジョブ（たとえばスレッド）は所望の実行順序を保つようにワークリストに位置する。
【００４１】
ステップ２０８において、特定のコンピュータリソースが、利用されるように選択される。たとえば、ＲＢＳ１００は、より遅いと称されたコンピュータリソースがより高い優先順位を有するべきであると判断してもよい。特定の例として、ＲＢＳ１００はディスクＩ／Ｏリソースを選択する。しかし、選択は、スレッドフロー、コンピュータジョブの優先順位（たとえばプロセスの優先順位、スレッドの優先順位）、各ワークリスト上で実行を待っているジョブ（たとえばスレッド）の数、およびジョブ（たとえばスレッドまたはプロセス）が必要とする他のリソースの可用性などの他の要因に基づき得る。
【００４２】
ステップ２１０において、ＲＢＳ１００は選択されたコンピュータリソースの利用を判断する。利用は、最近の間隔にわたる使用率に基づいていてもよい。たとえば、利用は、最新の「ｘ」量子または最近の期間などの任意の便利な基準に基づいていてもよい。しかし、利用は間隔に基づく必要はない。たとえば、利用は、特定の時点において実行を待っているオペレーションの数に基づき得る。
【００４３】
ＲＢＳ１００がリソース利用を計算する場合、この発明の１つの実施例に従うと、測定されるのは、特定のアプリケーションに関連付けられるジョブ以外のジョブのリソース利用である。ＣＰＵ利用閾値が２０％に設定される以下の例を用いて説明する。特定のアプリケーションに関連付けられるコンピュータジョブを実行可能にする前にＣＰＵ利用が２０％未満である場合、ＣＰＵ利用は、コンピュータジョブが実行されると２０％より高く増加し得る。この２０％を超える増加は、この例ではＣＰＵリソース利用違反とはみなされない。同様の原理がネットワーク、ディスクＩ／Ｏリソースおよび他のリソースに当てはまり得る。
【００４４】
１つの実施例では、ＲＢＳ１００は、将来の時間間隔にわたる選択されたコンピュータリソースの利用を推定する。ＲＢＳ１００は、リソースの最近の利用に基づいて将来の利用を推定してもよい。特定の例として、ネットワークＩ／Ｏの最近の利用が測定される（または、さもなければ学習される）。最近のネットワークＩ／Ｏの利用に基づいて、近い将来のネットワークＩ／Ｏの利用の推定がなされる。推定は他の要因にも基づいていてもよい。
【００４５】
ステップ２１２において、ＲＢＳ１００は、選択されたリソースに対応するワークリスト上のコンピュータジョブのうちの１つを選択する。ＲＢＳ１００は、選択されたコンピュータリソースを使用するように、選択されたコンピュータジョブを実行用にスケジュールする。ＲＢＳ１００は、特定のリソースの利用および特定のコンピュータリソースについてのワークリスト上のコンピュータジョブのうちの少なくとも１つの利用基準に基づいて、選択を行なう。たとえば、選択されたリソースの利用が６０％であり、特定のコンピ
ュータジョブの利用基準が、選択されたリソースが４０％未満の利用を有するというものであれば、特定のコンピュータジョブはスケジュールされない。なぜなら、利用基準を満たさないためである。この場合、選択されたリソースが６０％の利用を有することを利用基準が許可すれば、ＲＢＳ１００は別のコンピュータジョブを選択し、そのコンピュータジョブをスケジュールすることができるであろう。
【００４６】
コンピュータジョブを一つずつスケジュールするためにプロセス２００のステップのうちの少なくともいくつかを繰返すことによって、ＲＢＳはコンピュータジョブについてのスケジューリング順序を判断する。
【００４７】
ステップ２１４において、ＲＢＳ１００は、ちょうど実行したコンピュータジョブについてのリソース利用情報を記憶する。ＲＢＳ１００は、後にこのリソース利用情報を用いて、コンピュータジョブについての利用基準を判断してもよい。
【００４８】
マイクロジョブ
１つの実施例では、ＲＢＳ１００はマイクロジョブをスケジュールする。１つの実施例では、マイクロジョブのサイズは、特定のマイクロジョブが処理ジョブを実行するために使用されるリソースを所有する割当時間内にその特定のマイクロジョブが完了可能なサイズである。１つの実施例では、各マイクロジョブは、自身の割当時間内に完了するようなサイズである。しかし、マイクロジョブの中には、大きすぎて自身の割当時間内に実行を完了不可能なものもあり得る。
【００４９】
１つの実施例では、割当時間は量子である。量子は、コンピュータコードの一部（たとえばスレッド）に与えられ、かつその間はそのコード部分がＣＰＵリソースを所有するタイムスライスである。異なるオペレーティングシステムは異なる量子を使用する。さらに、特定のコード部分に割振られる量子は、実行時間中に状況に基づいて変化し得る。たとえば、Ｏ／Ｓは、スレッドに割当てられる量子のサイズを増大または減少させ得る。１つの実施例では、コンピュータジョブは、そのコンピュータジョブに割当てられると予想される量子のサイズに基づいてマイクロジョブに分割される。別の実施例では、コンピュータジョブは、そのコンピュータジョブに割当てられた量子のサイズに基づいてマイクロジョブに分割される。コンピュータジョブのどの部分をマイクロジョブとして分けるべきかについての判断は、実行時間前または実行時間中のいずれかに下され得る。
【００５０】
マイクロジョブは、１つの実施例に従って、次のマイクロジョブが実行されるまでの実行の一時休止を安全に見込んでおきつつ単一の単位として完了され得る、実質的により小さい（たとえば最小の）作業単位である。実行の一時休止を安全に見込んでおくというのは、特定のマイクロジョブの実行を、すべてのマイクロジョブの実行から生じる結果に影響を及ぼすことなく遅らせることができるという意味である。
【００５１】
マイクロジョブはスレッドの一部であり得る。たとえば、スレッドが複数のマイクロジョブに分割され得る。これらのマイクロジョブは、スレッドがスケジュールされる方法と同様にスケジュールされ得る。しかし、上述のように、１つの実施例では、マイクロジョブは、自身が処理リソースを所有する量子または他の期間にわたって実行可能であれば実行を完了することになる。
【００５２】
マイクロジョブは、どの時点においても非常に少量のリソース（たとえばＣＰＵ時間、メモリ割当）しか必要とし得ない。どの時点においてもそのように最小限のリソースしか使用しないため、見えないプロセスになり得る。マイクロジョブを小さく保つことによって、コンピュータジョブが１度に使用するコンピュータリソースが少量で済むようになる。したがって、この発明の１つの実施例に従って、マイクロジョブの実行は、コンピュー
タシステム内の他のアプリケーションの性能に重大な影響を与えないように十分少量のリソースを消費する。
【００５３】
例示的なＡＰＩ
この発明の実施例は、アプリケーションがさまざまなリソース利用パラメータを指定することができるようにするためのＡＰＩである。１つの実施例では、ＲＢＳ１００はＡＰＩのようなものを有する。アプリケーションは、ＡＰＩを用いてコンピュータジョブ（たとえばプロセス、スレッド、マイクロジョブ、または他のコード部分）についての利用基準を指定することができる。例示的なＡＰＩは、ＣＰＵ、ディスク、およびネットワークについて以下のリソース閾値パラメータを有する。
【００５４】
・ＣＰＵ利用閾値
・保留ディスクＩ／Ｏカウント閾値
・ネットワーク利用閾値
各コンピュータジョブについて上記のパラメータが指定され得る。たとえば、ネットワークを使用するコンピュータジョブについては、ネットワーク閾値が使用され得る。しかし、ネットワークを使用しないコンピュータジョブについては、ネットワーク閾値はゼロであり得る。したがって、この発明の実施例に従って、細分化されたリソース管理が提供される。
【００５５】
特定の例として、アプリケーションは、ＣＰＵ利用が５０％未満であり、Ｉ／Ｏディスク利用が４０％未満であり、ネットワークトラフィックが６０％未満である場合にのみ特定のコンピュータジョブの実行を要求し得る。全く何もなしも含めて、リソース閾値要因のいずれかの組合せが用いられ得る。ＣＰＵ利用閾値は、この発明の実施例に従って、いずれかの他のジョブの利用閾値とは対照的に、ＲＢＳのＣＰＵの使用ごとに異なる。
【００５６】
以下の２つのパラメータを用いて、利用を測定すべき間隔を指定する。
・ＣＰＵ利用ウィンドウ
・ネットワーク利用ウィンドウ
ＣＰＵ利用ウィンドウパラメータは、それにわたるＣＰＵ利用が計算されるタイムウィンドウを規定する。たとえば、最新のｎミリ秒にわたるＣＰＵ利用が平均化される。ネットワーク利用ウィンドウは、それにわたるネットワーク利用が計算されるタイムウィンドウを規定する。これらのパラメータはＲＢＳ１００に内在し得る。しかし、アプリケーションはこれらのパラメータをオーバーライドし得る。保留ディスクＩ／Ｏはどの時点においても絶対であり、したがって計算する必要はない。
【００５７】
必須の遊休時間パラメータがアプリケーションからＲＢＳに渡されて、どのようにコンピュータジョブがある時間にわたって分散されるかを制御し得る。必須の遊休時間パラメータは任意である。さらに、使用時には、必須の遊休パラメータの値はゼロであり得る。
【００５８】
・必須の遊休時間
ＲＢＳは、すべてのコンピュータジョブが実行された後のシステム遊休時間であると規定される「遊休時間」を追跡する。たとえば、アプリケーションは、ＲＢＳを用いてコンピュータジョブをワークリストに入れることができる。リソースに基づいたワークリスト１２０にコンピュータジョブがない場合、ＲＢＳは指定された必須の遊休時間だけ待ってから起きて、アプリケーションが付加的な作業を行なうことを認可する。たとえば、デフラグ用プログラムは、まずある数のコンピュータジョブを実行してディスクドライブをデフラグし、その後ＲＢＳコンピュータジョブスケジューラによって休止され得る。指定された必須の遊休時間の後、ＲＢＳは、デフラグ用プログラムを呼出して付加的な作業を認可する。たとえば、デフラグ用プログラムは、メモリの解放などのクリーンアップジョブ
を実行し得る。必須の遊休時間は、アプリケーションによって調整され得るデフォルトパラメータであり得る。
【００５９】
以下のパラメータは、リソース利用が閾値を上回るときにコンピュータジョブの実行を待つことに関する。
【００６０】
・待ち時間
・最大待ち時間
リソース利用が現在高すぎてコンピュータジョブを実行できないとＲＢＳが判断した場合、ＲＢＳは、指定された待ち時間だけ待ってから、リソース利用を再確認する。待ち時間パラメータは、ＲＢＳがリソース利用が高すぎると判断するたびに増加され得る。たとえば、ＲＢＳは、最大待ち時間に達するまで待ち時間パラメータを増加させることができる。これらのパラメータは、アプリケーションが最初に始動されるときにアプリケーションによって指定され得る。アプリケーションは、実行時間中にこれらのパラメータを調整することができる。
【００６１】
例示的なＡＰＩは時間（たとえばミリ秒）を用いてさまざまなパラメータを指定するが、量子などの他の基準を用いてもよい。
【００６２】
変形例
１つの実施例では、ＲＢＳ１００はオペレーティングシステムの一部である。別の実施例では、ＲＢＳ１００は、他のアプリケーションのためのコンピュータジョブのスケジューリングを容易にするスタンドアローンのアプリケーションである。さらに別の実施例では、ＲＢＳ１００は、アプリケーションプログラムに統合され、その特定のアプリケーションのためにスケジュールする。たとえば、ＲＢＳ１００は、ディスクデフラグ用プログラムまたはウイルス検出プログラムに統合されてもよい。
【００６３】
ＲＢＳ１００がオペレーティングシステムの外部で実行される場合、ＲＢＳ１００は、１つの実施例では、自身のリソース利用において自己制限する。たとえば、ＲＢＳ１００は自身のリソース利用を監視し、自身のリソース利用が高くなりすぎると、ＲＢＳ１００は、ある期間の間だけＲＢＳ１００のスケジューリングを停止するようオペレーティングシステムに要求を出す。
【００６４】
さらに他の例
以下の例は、ＲＢＳ１００が動作し得る態様を示す。しかし、ＲＢＳ１００はこれらの例に記載されるように動作する必要はない。一例として、ＲＢＳ１００は特定のアプリケーションのために複数のコンピュータジョブをスケジュールする。これらのコンピュータジョブのうちのいくつかはディスクＩ／Ｏを必要とし得る。ＲＢＳ１００は、コンピュータジョブをスケジュールするための条件としてディスク利用を分析してもよい。ディスク利用が高すぎる場合、ディスク利用が低下してアプリケーションの特定のコンピュータジョブをスケジュールするまでＲＢＳ１００は待機する。ＲＢＳ１００は、ディスクＩ／Ｏ利用を監視し続け、ディスクＩ／Ｏへのアクセスを求める他のアプリケーションがなければ、別のコンピュータジョブをスケジュールすることができる。しかし、この実施例では、別のアプリケーションがディスクＩ／Ｏの利用を求めると、ＲＢＳ１００は別のコンピュータジョブをスケジュールすることができない。したがって、他のアプリケーションがディスクＩ／Ｏを利用できる。
【００６５】
別の例として、ＲＢＳ１００はネットワーク使用率を分析してもよい。ネットワークトラフィックが高すぎる場合、トラフィックが減速するまでＲＢＳ１００はアプリケーションのいずれのコンピュータジョブもスケジュールしない。ネットワークトラフィックが十
分に低ければ、ＲＢＳ１００は実行用にコンピュータジョブをスケジュールする。ＲＢＳ１００は、ネットワークトラフィックが十分に低いままであることを念のために確認し続ける。ネットワークトラフィックが十分に低いままであれば、別のコンピュータジョブがスケジュールされてもよい。しかし、トラフィックが高くなりすぎると、実行するようにスケジュールされるさらに他のコンピュータジョブはない。これらの最後２つの例では、コンピュータジョブはマイクロジョブであってもよい。しかし、それは必要ではない。
【００６６】
ハードウェア概要
図３は、本発明の実施例が実現され得るコンピュータシステム３００を図示するブロック図である。プロセス２００のステップは、システム３００の１つ以上のコンピュータ読取可能媒体の命令として記憶され、コンピュータシステム３００のプロセッサ上で実行される。コンピュータシステム３００は、情報を通信するためのバス３０２または他の通信メカニズムと、バス３０２に結合される、情報を処理するためのプロセッサ３０４とを含む。コンピュータシステム３００はまた、バス３０２に結合される、プロセッサ３０４によって実行されるべき情報および命令を記憶するための、ランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置などのメインメモリ３０６も含む。メインメモリ３０６はまた、プロセッサ３０４によって実行されるべき命令の実行中に、一時変数または他の中間情報を記憶するために用いられ得る。コンピュータシステム３００はさらに、バス３０２に結合される、プロセッサ３０４のための静的情報および命令を記憶するための読出専用メモリ（ＲＯＭ）３０８または他の静的記憶装置を含む。情報および命令を記憶するための、磁気ディスクまたは光学ディスクなどの記憶装置３１０が設けられ、バス３０２に結合される。コンピュータシステム３００は、プロセッサ３０４をいくつでも有してよい。たとえば、１つの実施例では、コンピュータシステム３００はマルチプロセッサシステムである。プロセッサ３０４は、コアをいくつでも有してよい。１つの実施例では、プロセッサ３０４はマルチコアプロセッサ３０４である。コンピュータシステム３００は、ハイパースレッドマシン内で用いられ得る。
【００６７】
コンピュータシステム３００は、コンピュータユーザに情報を表示するための、陰極線管（ＣＲＴ）などのディスプレイ３１２にバス３０２を介して結合され得る。プロセッサ３０４に情報および指令選択を通信するための、英数字および他のキーを含む入力装置３１４がバス３０２に結合される。別の種類のユーザ入力装置は、プロセッサ３０４に方向情報および指令選択を通信するため、ならびにディスプレイ３１２上のカーソルの動きを制御するためのマウス、トラックボール、またはカーソル方向キーなどのカーソル制御部３１６である。この入力装置は典型的に、第１の軸（たとえばｘ）および第２の軸（たとえばｙ）の２本の軸における２自由度を有し、これにより、この装置が平面内の位置を指定することができる。
【００６８】
本発明は、本明細書中において説明される技術を実現するためのコンピュータシステム３００の使用に関する。本発明の１つの実施例によると、それらの技術は、プロセッサ３０４がメインメモリ３０６に含まれる１つ以上の命令の１つ以上のシーケンスを実行するのに応答して、コンピュータシステム３００によって行われる。そのような命令は、記憶装置３１０などの別の機械読取可能媒体からメインメモリ３０６に読込まれ得る。メインメモリ３０６に含まれる命令のシーケンスの実行により、プロセッサ３０４が、本明細書中において説明されるプロセスステップを実行することになる。代替的な実施例では、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せて、配線による回路構成を用いて本発明を実現してもよい。したがって、本発明の実施例は、ハードウェア回路構成およびソフトウェアのいずれの特定的な組合せにも限定されない。
【００６９】
本明細書中で用いられるような「機械読取可能媒体」という用語は、機械に特定的な態様で操作させるデータを与えるのに関与するいずれかの媒体を指す。コンピュータシステ
ム３００を用いて実現される実施例では、たとえばプロセッサ３０４に実行用の命令を与える際に、さまざまな機械読取可能媒体が含まれる。そのような媒体は、不揮発性媒体、揮発性媒体、および送信媒体を含む多くの形態を取り得るがこれらに限定されない。不揮発性媒体は、たとえば、記憶装置３１０などの光学または磁気ディスクを含む。揮発性媒体は、メインメモリ３０６などの動的メモリを含む。送信媒体は、バス３０２を備える配線を含む、同軸ケーブル、銅線および光ファイバを含む。送信媒体はまた、電波および赤外線データ通信中に発生するような音波または光波の形態も取り得る。すべてのそのような媒体は、媒体によって搬送される命令が、機械に命令を読込む物理メカニズムによって検出され得るように具体的である必要がある。
【００７０】
機械読取可能媒体の一般的な形態は、たとえば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、もしくはいずれかの他の磁気媒体、ＣＤ−ＲＯＭ、いずれかの他の光学媒体、パンチカード、紙テープ、孔のパターンを有するいずれかの他の物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、いずれかの他のメモリチップもしくはカートリッジ、後で説明されるような搬送波、またはそこからコンピュータが読込可能ないずれかの他の媒体を含む。
【００７１】
実行用の１つ以上の命令の１つ以上のシーケンスをプロセッサ３０４に搬送する際、さまざまな形態の機械読取可能媒体が含まれ得る。たとえば、命令は当初、リモートコンピュータの磁気ディスクで搬送され得る。リモートコンピュータは、自身の動的メモリに命令をロードし、モデムを用いて電話線で命令を送ることができる。コンピュータシステム３００にローカルなモデムが電話線上のデータを受け、赤外線送信機を用いてそのデータを赤外線信号に変換することができる。赤外線検出器が、赤外線信号内に搬送されるデータを受信することができ、適切な回路構成がそのデータをバス３０２に乗せることができる。バス３０２は、データをメインメモリ３０６に搬送し、そこからプロセッサ３０４が命令を取出して実行する。メインメモリ３０６が受けた命令は、プロセッサ３０４による実行の前または後のいずれかに、記憶装置３１０に任意で記憶され得る。
【００７２】
コンピュータシステム３００はまた、バス３０２に結合される通信インターフェイス３１８も含む。通信インターフェイス３１８は、ローカルネットワーク３２２に接続されるネットワークリンク３２０に、双方向データ通信結合を与える。たとえば、通信インターフェイス３１８は、対応する種類の電話線にデータ通信接続を与えるための統合サービスデジタル網（ＩＳＤＮ）カードまたはモデムであり得る。別の例として、通信インターフェイス３１８は、互換性のあるＬＡＮにデータ通信接続を与えるためのローカルエリアネットワーク（ＬＡＮ）カードであり得る。無線リンクも実現され得る。いずれのそのような実現例においても、通信インターフェイス３１８は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気、電磁または光学信号を送受信する。
【００７３】
ネットワークリンク３２０は典型的に、１つ以上のネットワークを通じて他のデータ装置にデータ通信を与える。たとえば、ネットワークリンク３２０は、ローカルネットワーク３２２を通じてホストコンピュータ３２４に、またはインターネットサービスプロバイダ（ＩＳＰ）３２６によって操作されるデータ機器に接続を与え得る。ＩＳＰ３２６は次に、現在一般的に「インターネット」３２８と称される広域パケットデータ通信網を通じてデータ通信サービスを与える。ローカルネットワーク３２２およびインターネット３２８は両方とも、デジタルデータストリームを搬送する電気、電磁または光学信号を用いる。さまざまなネットワークを通る信号、ならびにコンピュータシステム３００との間でデジタルデータを搬送し合うネットワークリンク３２０上のおよび通信インターフェイス３１８を通る信号は、情報を移送する搬送波の例示的な形態である。
【００７４】
コンピュータシステム３００は、ネットワーク、ネットワークリンク３２０および通信
インターフェイス３１８を通じて、メッセージを送り、プログラムコードを含むデータを受信することができる。インターネットの例では、サーバ３３０が、インターネット３２８、ＩＳＰ３２６、ローカルネットワーク３２２および通信インターフェイス３１８を通じてアプリケーションプログラムについての要求コードを送信し得る。
【００７５】
受けたコードは受信時にプロセッサ３０４によって実行され得、および／または後で実行するために記憶装置３１０もしくは他の不揮発性記憶装置に記憶され得る。この態様で、コンピュータシステム３００は、搬送波の形態のアプリケーションコードを得ることができる。
【００７６】
上記の明細書では、本発明の実施例が、実現例ごとに異なり得る多数の特定的な詳細を参照して説明された。したがって、発明であるもの、および出願人によって発明であると意図されるものを唯一および独占的に示すものは、いずれの後の訂正も含む、この出願から生じる一組の請求項であり、そのような請求項が生じる特定的な形態におけるものである。そのような請求項に含まれる用語について本明細書中において明示的に記載されるいずれの定義も、請求項において用いられるようなそのような用語の意味を決定するものとする。したがって、請求項において明示的に列挙されていない限定、要素、性質、特徴、利点または属性は、そのような請求項の範囲を如何なる意味でも限定するものではない。明細書および図面はしたがって、限定的ではなく例示的に認識されるべきである。
【図１Ａ】
2009541851.tif 000003
【図１Ｂ】
2009541851.tif 000004
【図２】
2009541851.tif 000005
【図３】
2009541851.tif 000006
【手続補正書】
【提出日】平成21年3月26日(2009.3.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
機械によって実現される方法であって、
第１のジョブに関連付けられた第１の利用閾値を得るステップと、
前記第１のジョブの実行を要求する前に第１のリソースの利用を監視するステップと、
前記第１のリソースの利用が、前記第１のジョブに関連付けられた前記利用閾値を下回っていることを検出するステップと、
前記第１のリソースの利用が、前記第１のジョブに関連付けられた前記第１の利用閾値を下回っていることを検出することに応答して、前記第１のリソース上で前記第１のジョブの実行を要求するステップとを備え、
前記方法は、一組のソフトウェア命令に基づいて、特殊用途の機械となるように構成されたプロセッサを備える汎用機械によって実行され、
任意の特徴として、前記第１のジョブは第１のコンピュータジョブである、方法。
【請求項２】
第２のコンピュータジョブに関連付けられた第２の利用閾値を得るステップと、
前記第２のコンピュータジョブの実行を要求する前に前記第１のリソースの利用を監視するステップと、
前記第１のリソースの利用が、前記第２のコンピュータジョブに関連付けられた前記第２の利用閾値を下回っていることを検出するステップと、
前記第１のリソースの利用が、前記第２のコンピュータジョブに関連付けられた前記第２の利用閾値を下回っていることを検出することに応答して、前記第１のリソース上で前記第２のコンピュータジョブの実行を要求するステップとをさらに備え、
前記第１の利用閾値と前記第２の利用閾値とは異なる、請求項１に記載の方法。
【請求項３】
前記第１のコンピュータジョブに関連付けられた第２の利用閾値を得るステップと、
前記第１のコンピュータジョブの実行を要求する前に第２のリソースの利用を監視するステップと、
前記第２のリソースの利用が、前記第１のコンピュータジョブに関連付けられた前記第２の利用閾値を下回っていることを検出するステップと、
前記第２のリソースの利用が、前記第１のコンピュータジョブに関連付けられた前記第２の利用閾値を下回っていることを検出することに応答して、前記第２のリソース上で前
記第１のコンピュータジョブの実行を要求するステップとをさらに備え、
前記第１の利用閾値と前記第２の利用閾値とは異なる、請求項１に記載の方法。
【請求項４】
前記第１のコンピュータジョブに関連付けられた前記第１の利用閾値は、
前記第１のリソースの利用割合、および／または
前記第１のリソースを用いるために受取られる要求の数に基づく、および／または
コンピュータジョブを所有するプログラムによって決定される、および／または
前記第１のコンピュータジョブによる前記第１のリソースの予想される利用に基づく、のうちの１つ以上である、請求項１に記載の方法。
【請求項５】
前記コンピュータジョブによる前記第１のリソースの予想される利用は、
前記コンピュータジョブにおけるソフトウェア命令を調べること、および／または
前記第１のコンピュータジョブによる前記第１のリソースの以前の利用、のうちの１つ以上に基づいて判断される、請求項４に記載の方法。
【請求項６】
前記第１のリソースの利用を監視するステップおよび前記第１のコンピュータジョブの実行を要求するステップは、オペレーティングシステムによって行なわれる、請求項１に記載の方法。
【請求項７】
前記第１のリソースの利用を監視するステップおよび前記第１のコンピュータジョブの実行を要求するステップは、オペレーティングシステムの外部のリソースに基づいたスケジューラによって行なわれる、請求項１に記載の方法。
【請求項８】
前記第１のリソース上で前記第１のコンピュータジョブの実行を要求するステップはさらに、前記第１のコンピュータジョブが必要とする他のリソースが利用可能であることを判断することに応答する、請求項１に記載の方法。
【請求項９】
方法であって、
リソースを必要とする複数のジョブの各ジョブを、前記リソースについてのリソースに基づいたスケジューリングワークリストに入れるステップと、
前記リソースに基づいたスケジューリングワークリストにおける前記複数のジョブから任意のジョブの実行を要求する前に、前記リソースの利用を監視するステップと、
前記リソースの利用が、前記複数のジョブの第１のジョブに関連付けられた第１の利用閾値を下回っていることを検出するステップと、
前記リソースの利用が、前記第１のジョブに関連付けられた前記第１の利用閾値を下回っていることを検出することに応答して、前記リソース上で前記第１のジョブの実行を要求するステップとを備え、
前記方法は、一組のソフトウェア命令に基づいて、特殊用途の機械となるように構成されたプロセッサを備える汎用機械によって実行され、
任意の特徴として、前記第１のジョブは第１のコンピュータジョブであり、
任意の特徴として、前記複数のジョブは複数のコンピュータジョブである、方法。
【請求項１０】
前記第１のコンピュータジョブは、第２のコンピュータジョブが前記リソースに基づいたスケジューリングワークリストに載せられた後、前記リソースに基づいたスケジューリングワークリストに載せられ、前記第１のコンピュータジョブの実行は、前記第２のコンピュータジョブの実行が要求される前に要求される、請求項９に記載の方法。
【請求項１１】
前記第１のコンピュータジョブの実行は、前記リソースの利用が、前記第１のコンピュータジョブに関連付けられた前記第１の利用閾値を下回っていることを検出すること、および前記リソースの利用が、前記第２のコンピュータジョブに関連付けられた第２の利用
閾値を下回っていないことを検出することに応答して、前記第２のコンピュータジョブの実行が要求される前に要求される、請求項１０に記載の方法。
【請求項１２】
方法であって、
複数のリソースを必要とするジョブを受取るステップと、
他のリソースに対する各リソースの相対速度に基づいて前記複数のリソースに優先順位をつけるステップとを備え、より遅いリソースはより高い優先順位を受取り、より速いリソースはより低い優先順位を受取り、前記方法はさらに、
前記複数のリソースの優先順位付けに基づいて、前記複数のリソースを必要とする前記ジョブを実行するステップを備え、
前記方法は、一組のソフトウェア命令に基づいて、特殊用途の機械となるように構成されたプロセッサを備える汎用機械によって実行され、
任意の特徴として、前記ジョブはコンピュータジョブである、方法。
【請求項１３】
命令の１つ以上のシーケンスを格納するコンピュータ読取可能格納媒体であって、命令の１つ以上のシーケンスは、１つ以上のコンピュータプロセッサによって実行されると、請求項１から１２のいずれかに記載の方法を前記１つ以上のコンピュータプロセッサに実行させる、コンピュータ読取可能格納媒体。
【請求項１４】
１つ以上のコンピュータプロセッサと、前記１つ以上のコンピュータプロセッサに通信可能に結合されたコンピュータ読取可能媒体とを備えるシステムであって、前記コンピュータ読取可能媒体は、格納された命令の１つ以上のシーケンスを格納しており、格納された命令の１つ以上のシーケンスは、前記１つ以上のコンピュータプロセッサによって実行されると、請求項１から１２のいずれかに記載の方法を前記１つ以上のコンピュータプロセッサに実行させる、システム。
【国際調査報告】
2009541851.tif 000007
2009541851.tif 000008