JP2013232207A - コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置 - Google Patents
コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置 Download PDFInfo
- Publication number
- JP2013232207A JP2013232207A JP2013127355A JP2013127355A JP2013232207A JP 2013232207 A JP2013232207 A JP 2013232207A JP 2013127355 A JP2013127355 A JP 2013127355A JP 2013127355 A JP2013127355 A JP 2013127355A JP 2013232207 A JP2013232207 A JP 2013232207A
- Authority
- JP
- Japan
- Prior art keywords
- computer
- microjob
- instructions
- processors
- microjobs
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 62
- 238000012545 processing Methods 0.000 claims abstract description 37
- 230000008569 process Effects 0.000 claims description 29
- 230000003111 delayed effect Effects 0.000 claims description 5
- 238000004891 communication Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000002411 adverse Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 241000700605 Viruses Species 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 238000013467 fragmentation Methods 0.000 description 3
- 238000006062 fragmentation reaction Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
【課題】コンピュータ処理ジョブをマイクロジョブに分割し、マイクロジョブを動作させるための所望のリソースが遊休状態であるときにマイクロジョブを実行する。
【解決手段】コンピュータジョブを複数のマイクロジョブに分割し、第1のマイクロジョブを実行するために必要とされる1つ以上のリソースの利用が、1つ以上の遊休基準を満たしているかどうかを判断し、満たしている場合に、前記複数のマイクロジョブのうちの前記第1のマイクロジョブを実行させる。
【選択図】図3
【解決手段】コンピュータジョブを複数のマイクロジョブに分割し、第1のマイクロジョブを実行するために必要とされる1つ以上のリソースの利用が、1つ以上の遊休基準を満たしているかどうかを判断し、満たしている場合に、前記複数のマイクロジョブのうちの前記第1のマイクロジョブを実行させる。
【選択図】図3
Description
発明の分野
この発明は、コンピュータ処理環境でソフトウェアアプリケーションを実行することに関する。特に、この発明の実施例は、マイクロジョブの実行が他のアプリケーションおよびジョブの性能に重大な影響を与えないように、アプリケーションのコンピュータ処理または入出力ジョブをマイクロジョブに分割すること、ならびに、マイクロジョブの実行を低いコンピュータリソース利用の期間に割当てることに関する。
この発明は、コンピュータ処理環境でソフトウェアアプリケーションを実行することに関する。特に、この発明の実施例は、マイクロジョブの実行が他のアプリケーションおよびジョブの性能に重大な影響を与えないように、アプリケーションのコンピュータ処理または入出力ジョブをマイクロジョブに分割すること、ならびに、マイクロジョブの実行を低いコンピュータリソース利用の期間に割当てることに関する。
背景
初期のメインフレームコンピュータにおいては、ジョブのバッチでソフトウェアプログラムを動作させるという概念は標準的なものであった。コンピュータの数が制限されていたため、ユーザは、コンピュータが他の何らかのより重要なジョブに用いられていないときにジョブをコンピュータ上で動作させるようスケジュールしなければならなかった。このようなシステムにおいては、各々のジョブは、中断することなく次のジョブを続けてコンピュータ上で走って(run)完了するようスケジュールされていた。利用可能なコンピュータ時間が限られているので、優先順位のより高いアプリケーションを遅らせることのないように、優先順位のより低いジョブを「時間外」に動作させる必要があった。
初期のメインフレームコンピュータにおいては、ジョブのバッチでソフトウェアプログラムを動作させるという概念は標準的なものであった。コンピュータの数が制限されていたため、ユーザは、コンピュータが他の何らかのより重要なジョブに用いられていないときにジョブをコンピュータ上で動作させるようスケジュールしなければならなかった。このようなシステムにおいては、各々のジョブは、中断することなく次のジョブを続けてコンピュータ上で走って(run)完了するようスケジュールされていた。利用可能なコンピュータ時間が限られているので、優先順位のより高いアプリケーションを遅らせることのないように、優先順位のより低いジョブを「時間外」に動作させる必要があった。
最近になって、マルチタスクコンピュータシステムにより、単一のCPUにより2つ以上のジョブを並行してまたはインタリーブで実行させることが可能となった。マルチタスクコンピュータシステムにより、その全体的な期間に多くのアプリケーションを実行させることが可能となる。典型的には、マルチタスクシステムは複雑な内部スケジューリングアルゴリズムを有しており、プロセスは、割当てられた優先順位に従ってスケジュールされる。しかしながら、アプリケーションは依然としてコンピュータ処理リソースを取り合っている。リソースの取り合いを軽減するために、マルチタスクシステムにおけるアプリケーションは、オペレータによるスケジュールに基づいて「時間外」に動作してもよい。
時間外に動作するアプリケーションは、バックアップ、索引付け、ソフトウェア更新、ウイルスおよび有害ソフトスキャン、ならびにフラグメンテーション解消などのメンテナンスジョブを含み得る。時間外の処理についての候補としては、また、リポートを実行したり、財務計算を行なったりするソフトウェアアプリケーションが含まれてもよい。しかしながら、索引付けなどのいくつかのアプリケーションは生産時間中に動作させなければならない。したがって、すべてのアプリケーションが時間外での実行にとって優れた候補になるわけではない。
ジョブを時間外に動作させるようスケジュールする場合の別の問題は、ジョブを動作させるようスケジュールした時間にコンピュータがオフにされる可能性があることである。さらに別の問題は、いくつかの機械が時間外を明確に識別しないことである。たとえば、重要であるため実質的な期間にわたってその活動を中断すべきでないとみなされるコンピュータ処理活動のために、多くのコンピュータシステムが1日24時間にわたって用いられる。したがって、ジョブをスケジュールするための「時間外」がなくなってしまう。さらに別の問題は、典型的に、ジョブをいつ時間外のコンピュータ処理用にスケジュールすべきかをユーザが決定しなければならないことである。このため、スケジュールの設定にユーザの時間が取られてしまい、ユーザがエラーを起こしやすくなる。
上述の通り、コンピュータ処理ジョブの動作は、コンピュータを使用するユーザの能力を妨害する可能性があり、他の、場合によってはより緊急のアプリケーションおよびジョブからリソースを奪ってしまう可能性がある。スロットリング(throttling)は、これらの悪影響を最小限にするための技術である。スロットリングにより、アプリケーションまたはジョブが割当てられたリソース量以上を使用してしまうことが防止される。スロットリングの種類には、ディスクI/Oスロットリング、CPUスロットリングおよびネットワークスロットリングが含まれる。たとえば、CPUスロットリングは、アプリケーションについて目標となるCPU利用限度を設定し、アプリケーションが目標限度を上回った場合にアプリケーションの作業を停止させることを含み得る。スロットリングは、時として、メンテナンスアプリケーションまたは重要性の低いコンピュータ処理ジョブのためにコンピュータリソースに適用される。スロットリングには利点があるが、コンピュータ処理ジョブのリソースの使用は、他のジョブおよびアプリケーションにとって完全に透明ではない。
同時に、緊急で最優先のジョブの処理中であってもかなりのコンピュータ処理リソースが使用されないままになることが観察できる。CPU、メモリ、ディスクドライブおよびネットワークの速度の差が大きいために、典型的に、これらの構成要素のうちの1つ以上が遊休状態になり、他の構成要素のうちの1つが十分に消費される。3ギガヘルツのCPUは、たとえば、ディスクドライブがミリ秒で測定された平均アクセス時間でデータを検索するのを待つ間、しばしば遊休状態になる。
これらの失われたリソースを回復させて利用するために、他のジョブまたはアプリケーションに重大な影響を与えることなくコンピュータシステムにおいて1つ以上のジョブを実行することを可能にする技術が必要とされる。この技術は、ジョブをスケジュールする際にユーザの時間を消費するものであってはならず、また、ジョブの動作時におけるコンピュータシステムとのユーザの対話に悪影響を及ぼすものであってはならない。当該技術は、ジョブを時間外に動作させるようスケジュールする必要があるものであってはならない。当該技術は、時間外には使えないコンピュータシステムが利用可能なものでなければならず、かつ当該コンピュータシステムにとって有利なものでなければならない。
この段落に記載される方策は、追求可能な方策であるが、必ずしも以前に想到または追及された方策である必要はない。したがって、特に指定のない限り、この段落に記載される方策はいずれも、単にこの段落における記載によって先行技術と見なされるものと想定されるべきではない。
この発明は、同様の参照番号が同様の要素を指す添付の図面において、限定的ではなく例示的に図示される。
詳細な説明
以下の記載においては、この発明を完全に理解できるようにするために、説明の目的で、多数の具体的な詳細が提供される。しかしながら、これらの具体的な詳細なしにこの発明が実施可能であることが明らかとなるだろう。他の例においては、周知の構造および装置は、この発明を不必要に曖昧にすることを避けるために、ブロック図の形で示される。
以下の記載においては、この発明を完全に理解できるようにするために、説明の目的で、多数の具体的な詳細が提供される。しかしながら、これらの具体的な詳細なしにこの発明が実施可能であることが明らかとなるだろう。他の例においては、周知の構造および装置は、この発明を不必要に曖昧にすることを避けるために、ブロック図の形で示される。
概要
大多数のコンピュータは、常にそれら自体のリソース容量のすべてを利用しているとは限らない。これは典型的には、1日24時間、週7日にわたり使用頻度が高いように見えるコンピュータ、および毎日わずかな間しか立ち上げられないコンピュータについても当てはまる。したがって、コンピュータ時間およびリソースが無駄になる。たとえば、24時間にわたって、かなり多用され、かつ活動時に短時間のスパイクを有し得るコンピュータシステムは、平均して約5〜20パーセントのリソースしか使用していない可能性がある。
大多数のコンピュータは、常にそれら自体のリソース容量のすべてを利用しているとは限らない。これは典型的には、1日24時間、週7日にわたり使用頻度が高いように見えるコンピュータ、および毎日わずかな間しか立ち上げられないコンピュータについても当てはまる。したがって、コンピュータ時間およびリソースが無駄になる。たとえば、24時間にわたって、かなり多用され、かつ活動時に短時間のスパイクを有し得るコンピュータシステムは、平均して約5〜20パーセントのリソースしか使用していない可能性がある。
コンピュータ処理ジョブをマイクロジョブに分割し、マイクロジョブを動作させるための所望のリソースが遊休状態であるときにマイクロジョブを実行することにより、これらの未使用のコンピュータリソースを利用するための方法、システムおよび装置がこの明細書中に開示される。この明細書で用いられるように、マイクロジョブという語はコンピュータプロセスの一部であり、その実行は、プロセスの残りの部分の結果に影響を及ぼすことなく遅らせることができる。この明細書中で用いられるように、「遊休リソース」、「遊休時間」などの語は、リソースの利用が100%未満である時間を指している。すなわち、利用されていないリソースの一部が、当該リソースの他の何らかの部分が利用されている場合であっても「遊休状態」であると見なされる。
このため、マイクロジョブは継続的に実行されるが、可能な限り迅速にコンピュータ処理ジョブを完了させようとしなくてもよい。この方法を利用するソフトウェアプログラムは、コンピュータの起動時でも常に動作可能であり、同じコンピュータ上で同時に動作している他のソフトウェアプログラムの性能に与える影響はごくわずかなものであり、結果として、単位時間当たりに行なわれる作業が実質的にさらに一層有用になり得る。
現在のリソース制約を考慮してジョブを可能な限り迅速に動作させようと試みること、または他のジョブおよびアプリケーションに重大な影響を与えるのを避けるためにジョブを「時間外」に動作させるようスケジュールすることとは異なり、ジョブは継続的にコンピュータ上で動作するが、あまりに微小であるため、ユーザまたは他のコンピュータジョブには感知不可能であり得る。したがって、ジョブは、ユーザならびに他のジョブおよびアプリケーションにとって完全に透明であり得る。ユーザはジョブをスケジュールする必要はなく、この方法を用いれば、ジョブは性能臨界時間中を含み、いつでも動作可能である。
この記載全体を通じて用いられるように、他のジョブ、プロセスおよびアプリケーションに関する「透明な」という語は、マイクロジョブの実行に起因する性能に対する重大な悪影響を被ることなく他のジョブおよびアプリケーションが実行可能となることを意味する。悪影響は、テストジョブが単独で動作するのにどれくらいかかるかと、マイクロジョブに分割されるコンピュータ処理ジョブが実行されている期間とを比較することによって決定され得る。これらの2つの場合について、テストジョブの動作時間に大きな違いはないはずである。
マイクロジョブスケジューラ(MJS)は、この発明の実施例に従って、マイクロジョブがいつ実行されるべきかを決定する。一実施例において、アプリケーションプログラムがそのコンピュータ処理ジョブを複数のマイクロジョブに分割する。この明細書中で用いられるように、複数という語は、1よりも大きな任意の数を意味する。MJSは、マイクロジョブがいつ実行されるべきかを決定する。この明細書中では、MJSとともに作動可能なアプリケーションをMJS対応のアプリケーションと称する。
一実施例においては、MJSはメモリマネージャを有する。MJS対応のアプリケーションは、オペレーティングシステムからのメモリの要求とは対照的に、MJSメモリマネージャからのメモリを要求する。一実施例においては、MJS対応のアプリケーションは、極めて小さなメモリ内フットプリントを有する(これは、MJS対応のアプリケーションに割当てられたメモリの量を意味し、そこからMJS対応のアプリケーションが実行される)。小さなフットプリントを実現するために、MJSを使用するプログラムが利用するメモリの量が制限される。
別の実施例においては、コンピュータリソース利用が監視および分析されて、リソース利用が1つ以上の遊休基準に準拠しているかどうかが判断される。MJSは、1つ以上の遊休基準が満たされるとマイクロジョブを実行させる。特定のマイクロジョブを実行させるのに必要な時間が、特定のマイクロジョブによって用いられるリソースについての遊休時間の典型的なウインドウよりも小さいので、リソースは、別のジョブによって必要とされる前に放棄される。このため、マイクロジョブによるリソース利用は気づかれない可能性があり、マイクロジョブはそのアプリケーションの環境にとって不可視となる可能性がある。
MJS対応のアプリケーションは、この発明の実施例に従って、リソース利用閾値パラメータをMJSに送信し、そのリソース利用が得られるべき状況を規定する。これらのリソースは、ディスクI/O、CPUおよびネットワーク利用を含むがこれらに限定されない。たとえば、MJS対応のアプリケーションは、上述の3つのリソースのいずれかの組合せについての最小閾値レベルが得られるまで、マイクロジョブの実行を要求することができる。
一実施例においては、アプリケーションは記憶媒体のデフラグ用プログラムである。デフラグ用プログラムは、毎日のスケジュールされたデフラグジョブを完了するのに、壁掛け時計の時間で12分かかる。MJS対応のデフラグ用プログラムはデフラグジョブを多くのマイクロジョブに分割する。これは、一度に数ミリ秒実行可能であり、デフラグ用プログラムが必要とするリソースが、他のいずれかのジョブまたはアプリケーションによって使用されていない時間を選択し得る。MJS対応のデフラグ用プログラムは、コンピュータシステムがオンであれば常に動作可能であり、12分のジョブを、より長期間にわって実行されるマイクロジョブに分割し得る。
特別な例として、MJS対応のデフラグ用プログラムは、第1のマイクロジョブを実行して、ファイルを断片化するかどうかを判断する。第1のマイクロジョブを実行すると、他の遊休状態のリソースだけが消費される。すなわち、その利用が1つ以上の遊休基準に準拠しているリソースである。結果として、マイクロジョブの実行は他のアプリケーションにとって透明になる。さらに、メモリ利用が低く維持され、デフラグ用プログラムに関連するメモリ割当をマイクロジョブの実行前または実行後に変更する必要がなくなる。
各々のマイクロジョブの実行前に、MJS対応のデフラグ用プログラムは、コンピュータリソース利用が1つ以上の遊休基準に準拠しているかどうか判断する。こうして、MJS対応のデフラグ用プログラムは、コンピュータリソース利用がそれまでのところ、マイクロジョブを進めることができるほど十分に低いかどうかを判断した。リソース利用が高すぎる場合、マイクロジョブの実行は延期される。第1のマイクロジョブが実行された後、MJS対応のデフラグ用プログラムは、必ずしも第2のマイクロジョブを直ちに実行する必要はない。逆に、次のマイクロジョブの実行は、他のアプリケーションが同じリソースを必要とする場合、時間の経過とともに分散する可能性がある。
アーキテクチャ概要
図1は、この発明の実施例に従った、マイクロジョブを実行するためのアーキテクチャ100を示す図である。各々のMJS対応のアプリケーション115(1)〜115(n)は、そのコンピュータ処理ジョブ(またはジョブ)をマイクロジョブ125に分割して実行する。たとえば、アプリケーションプログラマは、実際にはコンピュータ処理ジョブが分割されたものであるマイクロジョブ125を実行する許可をMJS110に要求する呼出をアプリケーションコードにおける適切な位置で行い得る。マイクロ−コンピュータ処理ジョブは、一実施例に従って、次のマイクロジョブ125が実行されるまでの実行の一時休止を安全に可能にしつつ単一の単位として完了され得る、実質的により小さい(たとえば最小の)作業単位である。実行の一時休止を安全に可能にするというのは、特定のマイクロジョブの実行を、すべてのマイクロジョブの実行から生じる結果に影響を及ぼすことなく遅らせることができるという意味である。マイクロジョブ125を小さく維持することにより、MJS対応のアプリケーション115は一度に少量のコンピュータリソースしか使用できなくなる。このため、マイクロジョブ125を実行すると、この発明の一実施例に従って、コンピュータシステムにおける他のアプリケーションの性能に重大な影響を及ぼさないように、十分に少量のリソースが消費される。たとえば、MJS対応のアプリケーション115(1)〜115(n)は、バックアップ、索引付け、ソフトウェア更新、ウイルスおよび有害ソフトスキャン、ならびにフラグメンテーション解消などのメンテナンスを実行し得る。しかしながら、MJS対応のアプリケーション115(1)〜115(n)はメンテナンス以外のソフトウェアであってもよい。
図1は、この発明の実施例に従った、マイクロジョブを実行するためのアーキテクチャ100を示す図である。各々のMJS対応のアプリケーション115(1)〜115(n)は、そのコンピュータ処理ジョブ(またはジョブ)をマイクロジョブ125に分割して実行する。たとえば、アプリケーションプログラマは、実際にはコンピュータ処理ジョブが分割されたものであるマイクロジョブ125を実行する許可をMJS110に要求する呼出をアプリケーションコードにおける適切な位置で行い得る。マイクロ−コンピュータ処理ジョブは、一実施例に従って、次のマイクロジョブ125が実行されるまでの実行の一時休止を安全に可能にしつつ単一の単位として完了され得る、実質的により小さい(たとえば最小の)作業単位である。実行の一時休止を安全に可能にするというのは、特定のマイクロジョブの実行を、すべてのマイクロジョブの実行から生じる結果に影響を及ぼすことなく遅らせることができるという意味である。マイクロジョブ125を小さく維持することにより、MJS対応のアプリケーション115は一度に少量のコンピュータリソースしか使用できなくなる。このため、マイクロジョブ125を実行すると、この発明の一実施例に従って、コンピュータシステムにおける他のアプリケーションの性能に重大な影響を及ぼさないように、十分に少量のリソースが消費される。たとえば、MJS対応のアプリケーション115(1)〜115(n)は、バックアップ、索引付け、ソフトウェア更新、ウイルスおよび有害ソフトスキャン、ならびにフラグメンテーション解消などのメンテナンスを実行し得る。しかしながら、MJS対応のアプリケーション115(1)〜115(n)はメンテナンス以外のソフトウェアであってもよい。
マイクロジョブスケジューラ(MJS)110は、いつマイクロジョブ125が実行可能であるかを判断する。この実施例では、MJS110は、特定のMJS対応のアプリケーション(たとえば115(1))が、1つ以上のマイクロジョブ125を実行可能にする要求を行なえるようにするためのアプリケーションプログラムインターフェイス(API)130を有する。API130はまた、以下により十分に説明されるように、MJS対応のアプリケーション115が、マイクロジョブ125がどれだけ分散され得るかを指定できるようにする。例示的なAPIが以下の明細書中に含まれる。しかしながら、アーキテクチャ100はこの例示的なAPIに限定されない。
マイクロジョブスケジューラ110は、次にどのマイクロジョブ125を実行可能にすべきかを判断できるように、マイクロジョブ待ち行列を維持する。マイクロジョブの実行は、他のアプリケーションに対する影響が無視できるものとなるようにMJS110によってタイミングが取られる。一実施例においては、MJS110は、マイクロジョブが遊休リソースしか利用しないようにマイクロジョブをスケジュールする。MJS110は、リソース利用が1つ以上の遊休基準に準拠しているかどうかを判断してスケジューリング決定を下す。すなわち、MJS100はこの実施例においてはリソースベースである。マイクロジョブの実行は、アプリケーションとMJSとの間のAPIの呼出しまたは他の通信方法において、MJS対応のアプリケーションによって指定され得る。次のマイクロジョブ125が他のジョブに影響を与えることなく実行可能であるとスケジューラ105が判断すると、MJS110は、MJS対応のアプリケーション115(1)にマイクロジョブ125を実行するよう命令することによって、MJS対応のアプリケーション115に応答する。MJSの判断は、一実施例においては、リソース利用に基づいたジョブのスケジュールをいつ行なうかに基づいている。一例として、MJSはディスク使用率を分析し得る。マイクロジョブを有するアプリケーション以外のアプリケーションがそのディスクを使用している場合、MJSは、当該他のアプリケーションが終わるのを待ってからマイクロジョブをスケジュールする。MJSはディスクI/O利用を監視し続け、ディスクI/Oへのアクセスを求めている他のアプリケーションがなければ、別のマイクロジョブをスケジュールできるようにする。しかしながら、別のアプリケーションがディスクI/Oの利用を求めている場合、MJSは別のマイクロジョブをスケジュールできないようにする。このとき、当該他のアプリケーションはディスクI/Oを利用することができる。
別の例として、MJSはネットワーク使用率を分析し得る。ネットワークトラフィックが高すぎる場合、MJSはトラフィックが遅くなるまでいずれのマイクロジョブもスケジュールしないこととなる。ネットワークトラフィックが十分低い場合、MJSはマイクロジョブの実行をスケジュールする。MJSは、ネットワークトラフィックが十分に低いままであることを確認し続ける。ネットワークトラフィックが十分に低いままであれば、別のマイクロジョブがスケジュールされ得る。しかしながら、トラフィックが高くなりすぎると、マイクロジョブの実行はそれ以上スケジュールされない。
MJSは、いずれかの種類のコンピュータ処理リソースおよびリソースのいずれかの組合せに基づいて、リソースに基づいたスケジューリング決定を下し得る。一実施例においては、MJSには、実行の許可を待っているマイクロジョブの複数の待ち行列がある。各待ち行列は特定のリソースに対応し得る。たとえば、ディスクI/Oを利用する必要があるマイクロジョブの待ち行列、ネットワークを利用する必要があるマイクロジョブの待ち行列、CPUを利用する必要があるマイクロジョブの待ち行列などがあり得る。リソースの組合せを利用するマイクロジョブに対する1つ以上の待ち行列もあり得る。MJSは、特定のリソースまたはリソースの組合せが利用可能であればマイクロジョブを配布する。特定のマイクロジョブは2つのリソースの使用を必要とし得る。たとえば、特定のマイクロジョブは、ネットワークリソースおよびディスクリソースの使用を必要とし得る。しかしながら、この特定のマイクロジョブはCPUリソースを必要としない。CPUリソース利用が現在高いとしても、この特定のマイクロジョブをなおもスケジュールし、実行することができる。
MJS110は、MJS対応のアプリケーション115とは別個のプログラムとして図1に示されており、MJS110は、MJS対応のアプリケーション115に統合され得る。このため、MJS110は、一実施例に従って、MJS対応のアプリケーション115(1)に応答を送信することなくマイクロジョブ125を実行させることができる。したがって、API130は任意となる。
一実施例においては、MJS110はオペレーティングシステムの一部である。別の実施例においては、MJS100はオペレーティングシステムの外部で実行される。MJSは、一実施例において、オペレーティングシステムの外部で実行される場合、それ自体のリソース利用を自主制限する。たとえば、MJS110は、それ自体のリソース利用を監視し、それ自体のリソース利用が高くなりすぎると、ある期間にわたってMJS110のスケジュールを停止するようオペレーティングシステムに要求する。
MJS対応のアプリケーション115は、この発明の実施例に従って、MJS110にパラメータを送ってリソース利用を制御する。リソース利用の制御は、ディスクI/O、CPUおよびネットワークを含むが、これらに限定されない。たとえば、MJS対応のアプリケーション115は、上述の3つのリソースの閾値レベルのいずれかの組合せが得られるまでは、マイクロジョブの実行を要求することができる。さらに、MJS対応のアプリケーション115は、異なるマイクロジョブ125に異なるリソース閾値レベルを指定することができる。たとえば、MJS対応のアプリケーション115は、一実施例に従って、各マイクロジョブ125で異なるリソース閾値レベルを指定する。したがって、細分化されたリソース管理が可能である。MJS110がリソース利用を計算する場合、この発明の一実施例に従うと、測定されるのは、MJS対応のアプリケーション以外のプロセスのリソース利用である。CPU利用閾値が20パーセントに設定される以下の例を用いて説明する。MJS対応のアプリケーションを実行可能にする前にCPU利用が20パーセント未満である場合、CPU利用は、マイクロジョブが実行されると20パーセント超まで増加し得る。この20パーセントを超える増加は、この例ではCPUリソース利用違反とはみなされない。同様の原理がネットワークおよびディスクI/Oリソースに当てはまる。
MJS110はまた、一実施例においてはメモリマネージャ140を有する。MJS110は初期化されると、オペレーティングシステムによってメモリが割当てられ、そのうちのいくらかをそれ自体の目的のために使用し、そのうちのいくらかをMJS対応のアプリケーション115に割当てる。MJS対応のアプリケーション115(1)は起動すると、MJS110からのメモリ割当てを要求する。MJS110は、すべてのプロセスによる現在のコンピュータシステムメモリ利用およびMJS対応のアプリケーション115(1)のニーズなどの要因に基づいて、どれくらいのメモリをMJS対応のアプリケーション115(1)に割当てるべきかを判断し得る。メモリ要件は、各MJS対応のアプリケーション115に特定的であってもよいし、コンピュータソフトウェアプログラマによってMJS対応のアプリケーション115にプログラムされてもよい。
図2は、この発明の一実施例に従った、MJS対応のアプリケーションメモリフットプリント204(1)〜204(n)と比較された、従来のアプリケーションメモリフットプリント202の比較例を示す。MJS対応のアプリケーション115(1)がマイクロジョブ125を実行するので、メモリ割当204(1)が極めて小さくなり得る。さらに、メモリ割当204(1)が小さすぎるので、MJS対応のアプリケーション115(1)がその割当てられたメモリ204(1)を放棄する必要がなくなるかもしれない。したがって、MJS対応のアプリケーション115は頻繁なメモリ割当およびメモリ割当解除を引起こさない。メモリ割当がこのように低減するかまたはなくなる1つの理由として、MJS対応のアプリケーション115が他のアプリケーションおよびジョブに重大な影響を及ぼさないことが挙げられる。
プロセスフロー
図3は、この発明の一実施例に従った、マイクロジョブを用いてMJS対応のアプリケーションを実行するためのプロセス300のステップを示すフローチャートである。ステップ301において、MJS対応のアプリケーションプログラムが起動される。一実施例においては、コンピュータシステムが立ち上がるとMJS対応のアプリケーションプログラムが起動される。MJS対応のアプリケーションは、実行すべきジョブを有していない場合、動作させるべきジョブを有するまで遊休状態のままとなる。この遊休状態では、MJS対応のアプリケーションは、時折の監視などのいくつかの機能を果たし得る。ステップ302において、MJS対応のアプリケーションは、記憶媒体のデフラグ、またはウイルススキャンなどの実行すべきジョブを有する。ジョブは、単一のディスクおよびそこに記憶されるファイルをデフラグすることであってもよく、MJS対応のアプリケーションは継続的にそのディスクをデフラグする。
図3は、この発明の一実施例に従った、マイクロジョブを用いてMJS対応のアプリケーションを実行するためのプロセス300のステップを示すフローチャートである。ステップ301において、MJS対応のアプリケーションプログラムが起動される。一実施例においては、コンピュータシステムが立ち上がるとMJS対応のアプリケーションプログラムが起動される。MJS対応のアプリケーションは、実行すべきジョブを有していない場合、動作させるべきジョブを有するまで遊休状態のままとなる。この遊休状態では、MJS対応のアプリケーションは、時折の監視などのいくつかの機能を果たし得る。ステップ302において、MJS対応のアプリケーションは、記憶媒体のデフラグ、またはウイルススキャンなどの実行すべきジョブを有する。ジョブは、単一のディスクおよびそこに記憶されるファイルをデフラグすることであってもよく、MJS対応のアプリケーションは継続的にそのディスクをデフラグする。
MJS対応のアプリケーションは、起動されると少量のメモリが割当てられる。MJS対応のアプリケーションは典型的に、1度に単一のマイクロジョブしか実行しようとしないため、割当てられる量は非常に少量であり得る。しかしながら、場合によっては、MJS対応のアプリケーションは、実行すべき他のプロセスを待たずに複数のマイクロジョブを実行しようとし得る。たとえば、所要のコンピュータシステムリソースが遊休状態にあるとMJS110が判断した場合、MJSは、複数のマイクロジョブによって利用されるリソースを別のプロセスが利用することなく、MJS対応のアプリケーションがその複数のマイクロジョブを続けて実行できるようにし得る。
ステップ304において、コンピュータ処理ジョブがマイクロジョブに分割される。マイクロジョブは、この発明の実施例に従って、マイクロジョブの実行が、コンピュータシステム内の他のジョブの性能に重大な影響を与えないよう十分に少量のリソースを利用するようなサイズである。コンピュータ処理ジョブのマイクロジョブへの分割は、MJS対応のアプリケーション内の命令によって達成され得る。一般に、これらの命令は、MJS対応のアプリケーション内の決定点である。たとえば、命令は、マイクロジョブを実行する許可を要求する、MJSへのAPIの呼出しであり得る。しかしながら、MJSはMJS対応のアプリケーションに統合されてもよく、その場合、命令は、MJS対応のアプリケーション内のスケジューリング機能への呼出しであり得る。他の技術を用いてコンピュータ処理ジョブをマイクロジョブに分割してもよい。
ステップ306において、マイクロジョブの各々について、特定のマイクロジョブが使用すべきコンピュータシステムの1つ以上のリソースの利用が1つ以上の遊休基準を満たすかどうかについての判断が下される。したがって、マイクロジョブが実行されるのは、マイクロジョブによって必要とされるコンピュータシステムのリソースが十分に遊休状態にある場合に限られる。遊休基準は一実施例においてはリソース閾値に基づく。たとえば、MJS対応のアプリケーションのマイクロジョブが、他のプロセスによるリソース利用がそのMJS対応のアプリケーションによって指定される閾値未満である場合にのみ実行されるようなリソース閾値が使用され得る。以下に説明する例示的なAPIは、いくつかのリソース閾値パラメータの一例を含む。しかしながら、プロセス300はこれらのリソース閾値パラメータに限定されない。ステップ306は、各マイクロジョブが必要とするリソースの可用性に従ってマイクロジョブの実行を時間の経過とともに分散させる。したがって、マイクロジョブを実行しても、コンピュータシステムにおける他のジョブおよびアプリケーションの性能に重大な影響を及ぼさない。
特定のリソースについての遊休基準は1つ以上の要因に基づき得る。たとえば、一実施例においては、CPUリソース利用の遊休基準としてCPU利用が用いられる。
ステップ307において、マイクロジョブが実行される。一実施例においては、MJSは、特定のマイクロジョブの実行を可能にする許可をMJS対応のアプリケーションに与える。より多くのマイクロジョブを実行すべき場合、制御がステップ306に進められ、次のマイクロジョブが使用すべきコンピュータシステムの1つ以上のリソースの利用が1つ以上の遊休基準を満たすかどうかが判断される。
メンテナンスタイプの実施例においては、MJS対応のアプリケーションは継続的に動作し、コンピュータシステムが立ち上がっているかぎり動作し続ける。したがって、MJS対応のアプリケーションがそのジョブを完了したとしても、ステップ308で示されるように動作し続ける。したがって、MJS対応のアプリケーションは、アプリケーションの起動に典型的な付加的なリソースを消費しない。MJS対応のアプリケーションは、行うべき別のジョブを有すると判断した場合、ステップ304において新しいコンピュータ処理ジョブをマイクロジョブに分割し、ステップ306において、マイクロジョブが時間とともに実行される。
例示的なAPI
この発明の実施例は、MJS対応のアプリケーションがMJSとインターフェイス接続できるようにするためのAPIである。例示的なAPIは、CPU、ディスクおよびネットワークについて以下のリソース閾値パラメータを有する。
この発明の実施例は、MJS対応のアプリケーションがMJSとインターフェイス接続できるようにするためのAPIである。例示的なAPIは、CPU、ディスクおよびネットワークについて以下のリソース閾値パラメータを有する。
・CPU利用閾値
・保留ディスクI/Oカウント閾値
・ネットワーク利用閾値
各マイクロジョブについて上述のパラメータが指定され得る。換言すれば、異なるマイクロジョブには異なるリソース閾値パラメータを割振ることができる。たとえば、ネットワークを使用するマイクロジョブについては、ネットワーク閾値が使用され得る。しかしながら、ネットワークを使用しないマイクロジョブについては、ネットワーク閾値はゼロであり得る。したがって、この発明の実施例に従って、細分化されたリソース管理が提供される。
・保留ディスクI/Oカウント閾値
・ネットワーク利用閾値
各マイクロジョブについて上述のパラメータが指定され得る。換言すれば、異なるマイクロジョブには異なるリソース閾値パラメータを割振ることができる。たとえば、ネットワークを使用するマイクロジョブについては、ネットワーク閾値が使用され得る。しかしながら、ネットワークを使用しないマイクロジョブについては、ネットワーク閾値はゼロであり得る。したがって、この発明の実施例に従って、細分化されたリソース管理が提供される。
特定の例として、MJS対応のアプリケーションは、CPU利用が50%未満であり、I/Oディスク利用が40%未満であり、ネットワークトラフィックが60%未満である場合にのみ特定のマイクロジョブの実行を要求し得る。全く何もない場合も含めて、リソース閾値因子のいずれかの組合せが用いられ得る。CPU利用閾値は、この発明の実施例に従って、他のいずれかのジョブの利用閾値とは対照的に、MJSのCPUの使用ごとに異なる。
以下の2つのパラメータを用いて、リソース利用をどれほど頻繁に測定すべきかを指定する。
・CPU利用ウィンドウ
・ネットワーク利用ウィンドウ
CPU利用ウィンドウパラメータが規定するタイムウィンドウにわたってCPU利用が計算される。たとえば、最新のnミリ秒にわたるCPU利用が平均化される。ネットワーク利用ウィンドウが規定するタイムウィンドウにわたって、ネットワーク利用が計算される。これらのパラメータはMJSに内在し得る。しかしながら、MJS対応のアプリケーションはこれらのパラメータをオーバーライドし得る。保留ディスクI/Oはどの時点においても絶対的なものであるので、計算する必要はない。
・ネットワーク利用ウィンドウ
CPU利用ウィンドウパラメータが規定するタイムウィンドウにわたってCPU利用が計算される。たとえば、最新のnミリ秒にわたるCPU利用が平均化される。ネットワーク利用ウィンドウが規定するタイムウィンドウにわたって、ネットワーク利用が計算される。これらのパラメータはMJSに内在し得る。しかしながら、MJS対応のアプリケーションはこれらのパラメータをオーバーライドし得る。保留ディスクI/Oはどの時点においても絶対的なものであるので、計算する必要はない。
必須の遊休時間パラメータがMJS対応のアプリケーションからMJSエンジンに渡されて、マイクロジョブが時間の経過とともに如何に分散されるかを制御し得る。必須の遊休時間パラメータは任意である。さらに、使用時には、必須の遊休パラメータの値はゼロであり得る。
・必須の遊休時間
MJSは、すべてのマイクロジョブが実行された後のシステム遊休時間として規定される「遊休時間」を追跡する。上述のように、MJS対応のアプリケーションは、MJSを用いてマイクロジョブを待ち行列に入れることができる。MJS待ち行列にマイクロジョブがない場合、MJSは指定された必須の遊休時間だけ待ってから立上がり、MJS対応のアプリケーションが付加的な作業を行なうことを認可する。たとえば、MJS対応のデフラグ用プログラムは、最初にいくつかのマイクロジョブを実行してディスクドライブをデフラグし、次いでMJSマイクロジョブスケジューラによって休止され得る。指定された必須の遊休時間の後、MJSは、MJS対応のデフラグ用プログラムを呼出して付加的な作業を認可する。たとえば、MJS対応のデフラグ用プログラムは、メモリの解放などのクリーンアップジョブを実行し得る。必須の遊休時間は、MJS対応のアプリケーションによって調整され得るデフォルトパラメータであり得る。
MJSは、すべてのマイクロジョブが実行された後のシステム遊休時間として規定される「遊休時間」を追跡する。上述のように、MJS対応のアプリケーションは、MJSを用いてマイクロジョブを待ち行列に入れることができる。MJS待ち行列にマイクロジョブがない場合、MJSは指定された必須の遊休時間だけ待ってから立上がり、MJS対応のアプリケーションが付加的な作業を行なうことを認可する。たとえば、MJS対応のデフラグ用プログラムは、最初にいくつかのマイクロジョブを実行してディスクドライブをデフラグし、次いでMJSマイクロジョブスケジューラによって休止され得る。指定された必須の遊休時間の後、MJSは、MJS対応のデフラグ用プログラムを呼出して付加的な作業を認可する。たとえば、MJS対応のデフラグ用プログラムは、メモリの解放などのクリーンアップジョブを実行し得る。必須の遊休時間は、MJS対応のアプリケーションによって調整され得るデフォルトパラメータであり得る。
以下のパラメータは、リソース利用が閾値を上回るときにマイクロジョブの実行を待つことに関連する。
・待ち時間
・最大待ち時間
リソース利用が現在高すぎてマイクロジョブを実行できないとMJSが判断した場合、MJSは、指定された待ち時間だけ待ってから、リソース利用を再確認する。待ち時間パラメータは、リソース利用が高すぎるとMJSが判断するたびに増加させることができる。たとえば、MJSは、最大待ち時間に達するまで待ち時間パラメータを増加させることができる。これらのパラメータは、MJS対応のアプリケーションが最初に始動されるときにMJS対応のアプリケーションによって指定され得る。MJS対応のアプリケーションは、動作時間中にこれらのパラメータを調整することができる。
・最大待ち時間
リソース利用が現在高すぎてマイクロジョブを実行できないとMJSが判断した場合、MJSは、指定された待ち時間だけ待ってから、リソース利用を再確認する。待ち時間パラメータは、リソース利用が高すぎるとMJSが判断するたびに増加させることができる。たとえば、MJSは、最大待ち時間に達するまで待ち時間パラメータを増加させることができる。これらのパラメータは、MJS対応のアプリケーションが最初に始動されるときにMJS対応のアプリケーションによって指定され得る。MJS対応のアプリケーションは、動作時間中にこれらのパラメータを調整することができる。
デフラグ用プログラムの実施例
MJS対応のアプリケーションは一実施例に従ったデフラグ用プログラムである。図4は、この発明の一実施例に従った、マイクロジョブを用いるMJSデフラグ用プログラムのプロセス400のステップを示す。プロセス400は、デフラグ用プログラムの少なくとも一部がマイクロジョブの概念を使用することのできる一方法の例を示す。この例において、MJS対応のアプリケーションは、APIを介してMJSとのインターフェイスを取る。しかしながら、上述のとおり、MJSはMJS対応のアプリケーションに統合されてもよく、APIは不要となる。
MJS対応のアプリケーションは一実施例に従ったデフラグ用プログラムである。図4は、この発明の一実施例に従った、マイクロジョブを用いるMJSデフラグ用プログラムのプロセス400のステップを示す。プロセス400は、デフラグ用プログラムの少なくとも一部がマイクロジョブの概念を使用することのできる一方法の例を示す。この例において、MJS対応のアプリケーションは、APIを介してMJSとのインターフェイスを取る。しかしながら、上述のとおり、MJSはMJS対応のアプリケーションに統合されてもよく、APIは不要となる。
デフラグのプロセスは、断片化されたファイルのためのディスクドライブのスキャンを含む。このスキャンは、ファイル記録を獲得し、ファイルを断片化するかどうかを判断する別個のマイクロジョブに分解され得る。ディスクドライブのスキャンは図4のステップ402〜408に示される。
ステップ402において、MJS対応のデフラグ用プログラムはマイクロジョブAPIを呼出して、マイクロジョブを実行する許可をMJSに要求する。APIは、このマイクロジョブのためのリソース利用閾値パラメータを指定し得る。代替的には、予め規定されたパラメータがこのマイクロジョブに適用され得る。要求の受信に応じて、MJSは、マイクロジョブがいつ実行され得るかを決定する。この決定は、リソース利用閾値パラメータに基づき得る。
ステップ404において、MJS対応のアプリケーションが許可を受取った後、MJSデフラグ用プログラムが、この場合、次のファイル記録を獲得するためにマイクロジョブを実行する。ステップ406において、MJS対応のアプリケーションは再びマイクロジョブAPIを呼出す。MJS対応のアプリケーションがMJSから実行の許可を受取ると、MJS対応のアプリケーションは、ステップ404からのファイルが断片化されたかどうかを判断する。ファイルが断片化されていなければ、プロセス400はステップ402に戻る。
ファイルが断片化されていれば、ステップ410〜416に記載されるように、MJS対応のデフラグ用プログラムがファイルをデフラグし得る。ステップ410は、マイクロジョブAPIへの呼出である。ステップ412では、ファイルのために空いたディスクスペースを見つけ出し、空いたスペースの割当を獲得する。
マイクロジョブAPIを呼出すステップ414およびファイルの断片を移動させるステップ416は、ファイル全体が移動されるまで繰返される。たとえば、移動されるべきファイルは、他のアプリケーションの性能に重大な影響を及ぼさないほど十分に小さな断片にして移動され得る。
こうして、マイクロジョブの概念は、継続的に断片化を監視し、断片化が起こると直ちにファイルをデフラグする動的なデフラグ用プログラムを提供する。結果として、MJS対応のデフラグ用プログラムは、スケジュールされたデフラグ実行時間を待たずに、断片化の発生直後に断片化されたファイルをデフラグすることとなる。したがって、MJS対応のデフラグ用プログラムは、この発明の一実施例に従った実時間のデフラグ用プログラムである。
シェル・マイクロジョブ・スケジューラ
一実施例においては、MJSは、コンピュータ処理ジョブを自動的にマイクロジョブに分割する。たとえば、MJSは、MJS対応でないアプリケーションプログラムに巻付けられたシェルとして作動する。したがって、シェルMJSは完全なソフトウェアアプリケーションであり、それを通じて如何なる実行形式のファイルをも動作させることできる。シェルMJSは、コンピュータ処理ジョブを実行形式のファイルからマイクロジョブに自動的に分割する。換言すれば、この実施例においては、アプリケーションプログラマはアプリケーションをマイクロジョブに分割する必要がない。
一実施例においては、MJSは、コンピュータ処理ジョブを自動的にマイクロジョブに分割する。たとえば、MJSは、MJS対応でないアプリケーションプログラムに巻付けられたシェルとして作動する。したがって、シェルMJSは完全なソフトウェアアプリケーションであり、それを通じて如何なる実行形式のファイルをも動作させることできる。シェルMJSは、コンピュータ処理ジョブを実行形式のファイルからマイクロジョブに自動的に分割する。換言すれば、この実施例においては、アプリケーションプログラマはアプリケーションをマイクロジョブに分割する必要がない。
シェルMJSは、一実施例においては、リソース利用に基づいてコンピュータ処理ジョブを実行形式のファイルからマイクロジョブに分割する。シェルMJSは、アプリケーションと、そのアプリケーションがどのように動作するかとを分析して、そのアプリケーションがどのリソースを使用するかを調べ得る。たとえば、MJSは、アプリケーションがどのリソースを使用するか、および、そのアプリケーションがどの程度までリソースを使用するかを分析する。たとえば、ディスクデフラグ用プログラムが動作すると、シェルMJSは、アプリケーションがどのリソースを使用するか(たとえばCPU、ネットワーク、ディスクI/O)を判断することができる。シェルMJSは、一実施例においては、この分析に基づいてアプリケーションを如何にマイクロジョブに分割するかを自動的に判断する。シェルMJSはまた、この分析に基づいて、マイクロジョブを如何にスケジュールするかを判断し得る。
シェルMJSはさまざまなパラメータを使用して、コンピュータ処理ジョブを如何にマイクロジョブに分割するかを判断し得、および/または、マイクロジョブの実行を如何にスケジュールするかを判断し得る。これらのパラメータは、ユーザ入力に基づき得るか、またはシェルMJSによって確立され得る。たとえば、ユーザは、特定のアプリケーションの優先順位が高くなるよう指定し得る。
ハードウェア概要
図5は、本発明の実施例が実現され得るコンピュータシステム500を図示するブロック図である。プロセス300およびプロセス400のステップは、システム500の1つ以上のコンピュータ読取可能媒体の命令として記憶され、コンピュータシステム500のプロセッサ上で実行される。コンピュータシステム500は、情報を通信するためのバス502または他の通信メカニズムと、バス502に結合され情報を処理するためのプロセッサ504とを含む。コンピュータシステム500はまた、プロセッサ504によって実行されるべき情報および命令を記憶するための、バス502に結合されるランダムアクセスメモリ(RAM)または他の動的記憶装置などのメインメモリ506を含む。メインメモリ506はまた、プロセッサ504によって実行されるべき命令の実行中に、一時変数または他の中間情報を記憶するために用いられ得る。コンピュータシステム500はさらに、バス502に結合される、プロセッサ504のための静的情報および命令を記憶するための読出専用メモリ(ROM)508または他の静的記憶装置を含む。情報および命令を記憶するための、磁気ディスクまたは光学ディスクなどの記憶装置510が設けられ、バス502に結合される。コンピュータシステム500は、プロセッサ504をいくつ有していてもよい。たとえば、コンピュータシステム500は一実施例においてはマルチプロセッサシステムである。プロセッサ504は、コアをいくつ有していてもよい。一実施例においては、プロセッサ504はマルチコアプロセッサ504である。コンピュータシステム500は、ハイパースレッドマシン内で用いられ得る。
図5は、本発明の実施例が実現され得るコンピュータシステム500を図示するブロック図である。プロセス300およびプロセス400のステップは、システム500の1つ以上のコンピュータ読取可能媒体の命令として記憶され、コンピュータシステム500のプロセッサ上で実行される。コンピュータシステム500は、情報を通信するためのバス502または他の通信メカニズムと、バス502に結合され情報を処理するためのプロセッサ504とを含む。コンピュータシステム500はまた、プロセッサ504によって実行されるべき情報および命令を記憶するための、バス502に結合されるランダムアクセスメモリ(RAM)または他の動的記憶装置などのメインメモリ506を含む。メインメモリ506はまた、プロセッサ504によって実行されるべき命令の実行中に、一時変数または他の中間情報を記憶するために用いられ得る。コンピュータシステム500はさらに、バス502に結合される、プロセッサ504のための静的情報および命令を記憶するための読出専用メモリ(ROM)508または他の静的記憶装置を含む。情報および命令を記憶するための、磁気ディスクまたは光学ディスクなどの記憶装置510が設けられ、バス502に結合される。コンピュータシステム500は、プロセッサ504をいくつ有していてもよい。たとえば、コンピュータシステム500は一実施例においてはマルチプロセッサシステムである。プロセッサ504は、コアをいくつ有していてもよい。一実施例においては、プロセッサ504はマルチコアプロセッサ504である。コンピュータシステム500は、ハイパースレッドマシン内で用いられ得る。
コンピュータシステム500は、コンピュータユーザに情報を表示するための、陰極線管(CRT)などのディスプレイ512にバス502を介して結合され得る。プロセッサ504に情報および指令選択を通信するための、英数字および他のキーを含む入力装置514がバス502に結合される。別の種類のユーザ入力装置は、プロセッサ504に方向情報および指令選択を通信するため、ならびにディスプレイ512上のカーソルの動きを制御するためのマウス、トラックボール、またはカーソル方向キーなどのカーソル制御部516である。この入力装置は、典型的には、第1の軸(たとえばx)および第2の軸(たとえばy)の2本の軸における2自由度を有しており、この装置が平面内の位置を指定することを可能にする。
本発明は、本明細書中において記載される技術を実現するためのコンピュータシステム500の使用に関する。本発明の一実施例に従うと、それらの技術は、プロセッサ504がメインメモリ506に含まれる1つ以上の命令の1つ以上のシーケンスを実行することに応答して、コンピュータシステム500によって実行される。このような命令は、記憶装置510などの別の機械読取可能媒体からメインメモリ506に読込まれ得る。メインメモリ506に含まれる命令のシーケンスを実行して、プロセッサ504に、本明細書中において記載されるプロセスステップを実行させる。代替的な実施例においては、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せて、配線による回路構成を用いて本発明を実現してもよい。したがって、本発明の実施例は、ハードウェア回路構成およびソフトウェアのいずれの特定的な組合せにも限定されない。
本明細書中で用いられるような「機械読取可能媒体」という語は、特定的な態様で機械に操作させるデータを与えることに関与するいずれかの媒体を指す。コンピュータシステム500を用いて実現される実施例においては、たとえばプロセッサ504に実行するよう命令を与える際に、さまざまな機械読取可能媒体が含まれる。このような媒体は、不揮発性媒体、揮発性媒体および送信媒体を含む多くの形態を取り得るがこれらに限定されない。不揮発性媒体は、たとえば、記憶装置510などの光学または磁気ディスクを含む。揮発性媒体は、メインメモリ506などの動的メモリを含む。送信媒体は、バス502を備える配線を含む、同軸ケーブル、銅線および光ファイバを含む。送信媒体はまた、電波および赤外線データ通信中に発生されるような音波または光波の形態を取り得る。すべてのこのような媒体は、媒体によって搬送される命令が、機械に命令を読込む物理メカニズムによって検出され得るように具体的でなければならない。
機械読取可能媒体の一般的な形態は、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、もしくは他のいずれかの磁気媒体、CD−ROM、他のいずれかの光学媒体、パンチカード、紙テープ、孔のパターンを有する他のいずれかの物理媒体、RAM、PROM、EPROM、FLASH−EPROM、他のいずれかのメモリチップもしくはカートリッジ、後で説明されるような搬送波、またはそこからコンピュータが読込可能な他のいずれかの媒体をも含む。
実行用の1つ以上の命令の1つ以上のシーケンスをプロセッサ504に搬送する際、さまざまな形態の機械読取可能媒体が含まれ得る。たとえば、命令は初め、リモートコンピュータの磁気ディスクで搬送され得る。リモートコンピュータは、その動的メモリに命令をロードし、モデムを用いて電話線で命令を送ることができる。コンピュータシステム500にローカルなモデムが電話線上のデータを受信し、赤外線送信機を用いてそのデータを赤外線信号に変換することができる。赤外線検出器は赤外線信号で搬送されるデータを受信することができ、適切な回路構成が当該データをバス502に乗せることができる。バス502は、データをメインメモリ506に搬送し、そこからプロセッサ504が命令を取出して実行する。メインメモリ506が受けた命令は、プロセッサ504による実行の前または後に、記憶装置510に任意で記憶され得る。
コンピュータシステム500はまた、バス502に結合される通信インターフェイス518を含む。通信インターフェイス518は、ローカルネットワーク522に接続されるネットワークリンク520に双方向データ通信結合を与える。たとえば、通信インターフェイス518は、対応する種類の電話線にデータ通信接続を与えるための統合サービスデジタル網(ISDN)カードまたはモデムであり得る。別の例として、通信インターフェイス518は、互換性のあるLANにデータ通信接続を与えるためのローカルエリアネットワーク(LAN)カードであり得る。無線リンクも実現され得る。このようないずれの実現例においても、通信インターフェイス518は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気、電磁または光学信号を送受信する。
ネットワークリンク520は典型的に、1つ以上のネットワークを通じて他のデータ装置にデータ通信を与える。たとえば、ネットワークリンク520は、ローカルネットワーク522を通じてホストコンピュータ524に、またはインターネットサービスプロバイダ(ISP)526によって操作されるデータ機器に接続を提供し得る。ISP526は次いで、現在一般的に「インターネット」528と称される広域パケットデータ通信網を通じてデータ通信サービスを提供する。ローカルネットワーク522およびインターネット528はともに、デジタルデータストリームを搬送する電気、電磁または光学信号を用いる。さまざまなネットワークを通る信号、ならびにコンピュータシステム500との間でデジタルデータを搬送し合う通信インターフェイス518を通るネットワークリンク520上の信号は、情報を移送する搬送波の例示的な形態である。
コンピュータシステム500は、ネットワーク、ネットワークリンク520および通信インターフェイス518を通じて、メッセージを送り、プログラムコードを含むデータを受信することができる。インターネットの例では、サーバ530が、インターネット528、ISP526、ローカルネットワーク522および通信インターフェイス518を通じてアプリケーションプログラムについての要求コードを送信し得る。
受信されたコードは、その受信時にプロセッサ504によって実行され得、および/または、後で実行するために記憶装置510もしくは他の不揮発性記憶装置に記憶され得る。この態様で、コンピュータシステム500は、アプリケーションコードを搬送波の形態で得ることができる。
上述の明細書においては、本発明の実施例が、実現例ごとに異なり得る多数の特定的な詳細を参照して説明された。したがって、発明であるもの、および出願人によって発明であると意図されるものを唯一および独占的に示すものは、いずれの後の訂正をも含む、この出願から生じる一組の請求項であり、そのような請求項が生じる特定的な形態におけるものである。そのような請求項に含まれる用語について本明細書中において明示的に記載されるいずれの定義も、請求項において用いられるようなそのような用語の意味を決定するものとする。したがって、請求項において明示的に列挙されていない限定、要素、性質、特徴、利点または属性は、そのような請求項の範囲を如何なる意味でも限定するものではない。したがって、明細書および図面は、限定的ではなく例示的に認識されるべきである。
Claims (41)
- 機械によって実現される方法であって、
複数のマイクロジョブの各々について、
特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの利用が1つ以上の遊休基準にいつ準拠するかを判断するステップと、
前記特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの前記利用が1つ以上の遊休基準に準拠するという判断に少なくとも部分的に基づいて、前記特定のマイクロジョブを実行させるステップとを含む、方法。 - コンピュータ処理ジョブを前記複数のマイクロジョブに分割するステップをさらに含む、請求項1に記載の方法。
- コンピュータ処理ジョブを前記複数のマイクロジョブに分割するステップは、前記コンピュータ処理ジョブを開始するアプリケーションプログラムによって実行される、請求項2に記載の方法。
- コンピュータ処理ジョブを複数のマイクロジョブに分割するステップは、前記コンピュータ処理ジョブを開始するアプリケーションプログラム以外のソフトウェアプロセスによって実行される、請求項2に記載の方法。
- 特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの利用が1つ以上の遊休基準にいつ準拠するかを判断するステップは、オペレーティングシステムによって実行される、請求項1に記載の方法。
- 特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの利用が1つ以上の遊休基準にいつ準拠するかを判断するステップは、オペレーティングシステムの外部でマイクロジョブスケジューラによって実行される、請求項1に記載の方法。
- 各マイクロジョブの実行の間に待つべき最小限の時間量を指定する待ち時間に基づいて前記マイクロジョブのうち少なくとも1つの実行を遅らせるステップをさらに含む、請求項1に記載の方法。
- 前記待ち時間を指定するアプリケーションプログラムをさらに含む、請求項7に記載の方法。
- 前記待ち時間を指定するステップは、前記マイクロジョブのうち異なるマイクロジョブのために異なる最小限の時間量を指定するステップを含む、請求項8に記載の方法。
- 前記1つ以上の遊休基準は1つ以上のリソース利用閾値に基づく、請求項1に記載の方法。
- 前記1つ以上のリソース利用閾値を指定するステップをさらに含む、請求項10に記載の方法。
- 前記マイクロジョブのうち異なるマイクロジョブのために異なるリソース利用閾値を指定するステップをさらに含む、請求項10に記載の方法。
- 前記特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの前記利用が1つ以上の遊休基準に準拠するという判断に少なくとも部分的に基づいて前記特定のマイクロジョブを実行するステップは、さらに、他のジョブがコンピュータリソースを利用できるようにする前に実行可能にされるマイクロジョブの数を制限することに基づいている、請求項1に記載の方法。
- 実行可能にされるマイクロジョブの数を制限することは、前記アプリケーションプログラム以外のプロセスによってコンピュータリソース利用を調べることによって決定される、請求項13に記載の方法。
- 前記コンピュータ処理ジョブを開始するアプリケーションに割当てるべきメモリの量を決定するステップをさらに含み、前記メモリの量を決定するステップは、全体として前記アプリケーションについてのメモリ要件に基づくのではなく、前記アプリケーションのマイクロジョブを実行するのに必要な、はるかに少ないメモリの量に基づいている、請求項1に記載の方法。
- メモリの量を決定するステップはさらに、前記コンピュータシステムにおいて利用可能な前記メモリの量に基づいている、請求項15に記載の方法。
- 前記マイクロジョブはコンピュータプロセスの一部であり、各マイクロジョブの実行は、前記コンピュータプロセスの残りの部分の結果に影響を及ぼすことなく遅らせることができる、請求項1に記載の方法。
- 命令の1つ以上のシーケンスを搬送するコンピュータ読取可能媒体であって、前記命令の1つ以上のシーケンスは、1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、
複数のマイクロジョブの各々について、
特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの利用が1つ以上の遊休基準にいつ準拠するかを判断するステップと、
前記特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの前記利用が1つ以上の遊休基準に準拠するという判断に少なくとも部分的に基づいて前記特定のマイクロジョブを行なうステップとを実行させる、コンピュータ読取可能媒体。 - 前記1つ以上のプロセッサによって実行されると、コンピュータ処理ジョブを前記複数のマイクロジョブに分割するステップを前記1つ以上のプロセッサに実行させる命令をさらに含む、請求項18に記載のコンピュータ読取可能媒体。
- 前記1つ以上のプロセッサによって実行されると、各マイクロジョブの実行の間に待つべき最小限の時間量を指定する待ち時間に基づいて前記マイクロジョブのうち少なくとも1つの実行を遅らせるステップを前記1つ以上のプロセッサに実行させる命令をさらに含む、請求項18に記載のコンピュータ読取可能媒体。
- 各マイクロジョブの実行の間に待つべき最小限の時間量を指定する待ち時間に基づいて前記マイクロジョブのうち少なくとも1つの実行を遅らせるための前記命令は、前記マイクロジョブのうち異なるマイクロジョブのために異なる最小限の時間量を指定するステップを実行するための命令を含む、請求項20に記載のコンピュータ読取可能媒体。
- 特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの利用が1つ以上の遊休基準にいつ準拠するかを判断するステップを実行するための前記命令は、特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの利用が1つ以上のリソース利用閾値に基づいて1つ以上の遊休基準にいつ準拠するかを判断するステップを実行するための命令を含む、請求項18に記載のコンピュータ読取可能媒体。
- 前記1つ以上のプロセッサによって実行されると、前記1つ以上のリソース利用閾値を指定するステップを前記1つ以上のプロセッサに実行させる命令をさらに含む、請求項22に記載のコンピュータ読取可能媒体。
- 前記1つ以上のプロセッサによって実行されると、前記マイクロジョブのうち異なるマイクロジョブについて異なるリソース利用閾値を指定するステップを前記1つ以上のプロセッサに実行させる命令をさらに含む、請求項22に記載のコンピュータ読取可能媒体。
- 前記特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの前記利用が1つ以上の遊休基準に準拠するという判断に少なくとも部分的に基づいて前記特定のマイクロジョブを行なうステップを実行するための前記命令は、他のジョブがコンピュータリソースを利用できるようにする前に実行可能にされるマイクロジョブの数を制限することにさらに基づいて、前記特定のマイクロジョブを行なうステップを実行するための命令を含む、請求項18に記載のコンピュータ読取可能媒体。
- 前記1つ以上のプロセッサによって実行されると、アプリケーション以外のプロセスによってコンピュータリソース利用を調べることにより他のジョブがコンピュータリソースを利用できるようにする前に実行可能にされるマイクロジョブの前記数を制限することを前記1つ以上のプロセッサに実行させる命令をさらに含む、請求項25に記載のコンピュータ読取可能媒体。
- 前記1つ以上のプロセッサによって実行されると、前記アプリケーションに割当てるべきメモリの量を決定するステップを前記1つ以上のプロセッサに実行させる命令をさらに含み、メモリの量を決定するステップは、前記アプリケーションのマイクロジョブを実行するための最小限のメモリ要件に基づいている、請求項18に記載のコンピュータ読取可能媒体。
- メモリの量を決定する前記ステップを実行するための前記命令は、前記コンピュータシステムにおいて利用可能な前記メモリの量に基づいてメモリの量を決定する前記ステップを実行するための命令をさらに含む、請求項27に記載のコンピュータ読取可能媒体。
- 前記マイクロジョブはコンピュータプロセスの一部であり、各マイクロジョブの実行は、前記コンピュータプロセスの残りの部分の結果に影響を及ぼすことなく遅らせることができる、請求項18に記載のコンピュータ読取可能媒体。
- システムであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサに通信可能に結合されたコンピュータ読取可能媒体とを含み、前記コンピュータ読取可能媒体は、前記1つ以上のプロセッサによって実行されると、
複数のマイクロジョブの各々について、
特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの利用が1つ以上の遊休基準にいつ準拠するかを判断するステップと、
前記特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの前記利用が1つ以上の遊休基準に準拠するという判断に少なくとも部分的に基づいて前記特定のマイクロジョブを実行するステップとを、
前記1つ以上のプロセッサに実行させる命令の1つ以上の記憶されたシーケンスが記憶されている、システム。 - 前記コンピュータ読取可能媒体は、前記1つ以上のプロセッサによって実行されると、
コンピュータ処理ジョブを前記複数のマイクロジョブに分割するステップを前記1つ以上のプロセッサに実行させる命令をさらに含む、請求項30に記載のシステム。 - 前記コンピュータ読取可能媒体は、前記1つ以上のプロセッサによって実行されると、各マイクロジョブの実行の間に待つべき最小限の時間量を指定する待ち時間に基づいて前記マイクロジョブのうち少なくとも1つの実行を遅らせるステップを前記1つ以上のプロセッサに実行させる命令をさらに含む、請求項30に記載のシステム。
- 各マイクロジョブの実行の間に待つべき最小限の時間量を指定する待ち時間に基づいて前記マイクロジョブのうち少なくとも1つの実行を遅らせるための前記命令は、前記マイクロジョブのうち異なるマイクロジョブのために異なる最小限の時間量を指定するステップを実行するための命令を含む、請求項32に記載のシステム。
- 特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの利用が1つ以上の遊休基準にいつ準拠するかを判断するステップを実行するための前記命令は、1つ以上のリソース利用閾値に基づいて、特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの利用が1つ以上の遊休基準にいつ準拠するかを判断するステップを実行するための命令を含む、請求項30に記載のシステム。
- 前記コンピュータ読取可能媒体は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のリソース利用閾値を指定するステップを前記1つ以上のプロセッサに実行させる命令をさらに含む、請求項34に記載のシステム。
- 前記コンピュータ読取可能媒体は、前記1つ以上のプロセッサによって実行されると、前記マイクロジョブのうち異なるマイクロジョブのために異なるリソース利用閾値を指定するステップを前記1つ以上のプロセッサに実行させる命令をさらに含む、請求項34に記載のシステム。
- 前記特定のマイクロジョブを動作させるのに必要な1つ以上のリソースの前記利用が1つ以上の遊休基準に準拠するという判断に少なくとも部分的に基づいて前記特定のマイクロジョブを実行するステップを実行させるための前記命令は、他のジョブがコンピュータリソースを利用できるようにする前に実行可能にされるマイクロジョブの数を制限することにさらに基づいて前記特定のマイクロジョブを行なうステップを実行するための命令を含む、請求項30に記載のシステム。
- 前記コンピュータ読取可能媒体は、前記1つ以上のプロセッサによって実行されると、アプリケーション以外のプロセスによってコンピュータリソース利用を調べることにより他のジョブがコンピュータリソースを利用できるようにする前に実行可能にされるマイクロジョブの数を制限するステップを前記1つ以上のプロセッサに実行させる命令をさらに含む、請求項37に記載のシステム。
- 前記コンピュータ読取可能媒体は、前記1つ以上のプロセッサによって実行されると、前記アプリケーションに割当てるべきメモリの量を決定するステップを前記1つ以上のプロセッサに実行させる命令をさらに含み、メモリの量を決定するステップは、前記アプリケーションのマイクロジョブを実行するための最小限のメモリ要件に基づいている、請求項30に記載のシステム。
- メモリの量を決定する前記ステップを実行するための前記命令は、前記コンピュータシステムにおいて利用可能な前記メモリの量に基づいてメモリの量を決定する前記ステップを実行するための命令をさらに含む、請求項39に記載のシステム。
- 前記マイクロジョブはコンピュータプロセスの一部であり、各マイクロジョブの実行は、前記コンピュータプロセスの残りの部分の結果に影響を及ぼすことなく遅らせることができる、請求項30に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/471,466 | 2006-06-19 | ||
US11/471,466 US8239869B2 (en) | 2006-06-19 | 2006-06-19 | Method, system and apparatus for scheduling computer micro-jobs to execute at non-disruptive times and modifying a minimum wait time between the utilization windows for monitoring the resources |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009516491A Division JP2009541848A (ja) | 2006-06-19 | 2007-05-29 | コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013232207A true JP2013232207A (ja) | 2013-11-14 |
Family
ID=38572804
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009516491A Pending JP2009541848A (ja) | 2006-06-19 | 2007-05-29 | コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置 |
JP2013127355A Pending JP2013232207A (ja) | 2006-06-19 | 2013-06-18 | コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009516491A Pending JP2009541848A (ja) | 2006-06-19 | 2007-05-29 | コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置 |
Country Status (10)
Country | Link |
---|---|
US (3) | US8239869B2 (ja) |
EP (1) | EP2030113A1 (ja) |
JP (2) | JP2009541848A (ja) |
KR (2) | KR101471394B1 (ja) |
CN (3) | CN101473307B (ja) |
AU (1) | AU2007261666C1 (ja) |
CA (1) | CA2654416A1 (ja) |
RU (1) | RU2454704C2 (ja) |
TW (1) | TW200813818A (ja) |
WO (1) | WO2007149188A1 (ja) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9588809B2 (en) * | 2006-10-10 | 2017-03-07 | Invistasking LLC | Resource-based scheduler |
US8056083B2 (en) * | 2006-10-10 | 2011-11-08 | Diskeeper Corporation | Dividing a computer job into micro-jobs for execution |
US8510741B2 (en) * | 2007-03-28 | 2013-08-13 | Massachusetts Institute Of Technology | Computing the processor desires of jobs in an adaptively parallel scheduling environment |
EP2269783A1 (de) | 2009-06-30 | 2011-01-05 | Leica Geosystems AG | Kalibrierungsverfahren für ein Messsystem |
US9122537B2 (en) * | 2009-10-30 | 2015-09-01 | Cisco Technology, Inc. | Balancing server load according to availability of physical resources based on the detection of out-of-sequence packets |
CN102096599A (zh) * | 2009-12-14 | 2011-06-15 | 中国移动通信集团公司 | 一种多队列任务调度方法及相关系统和设备 |
CN101887384A (zh) * | 2010-06-30 | 2010-11-17 | 中山大学 | 一种基于马尔科夫模型的进程时间片长度确定方法 |
CN101968750B (zh) * | 2010-10-15 | 2012-12-26 | 珠海举天软件科技有限公司 | 计算机系统及其工作方法 |
JP5948933B2 (ja) * | 2012-02-17 | 2016-07-06 | 日本電気株式会社 | ジョブ継続管理装置、ジョブ継続管理方法、及び、ジョブ継続管理プログラム |
CN103019853A (zh) * | 2012-11-19 | 2013-04-03 | 北京亿赞普网络技术有限公司 | 一种作业任务的调度方法和装置 |
US9152451B2 (en) * | 2013-01-03 | 2015-10-06 | GM Global Technology Operations LLC | Method of distributing processor loading between real-time processor threads |
JP5778200B2 (ja) * | 2013-02-28 | 2015-09-16 | 株式会社大和総研ビジネス・イノベーション | 情報処理装置、情報処理システム、情報処理方法、及び情報処理プログラム |
CN104026744B (zh) * | 2013-03-05 | 2018-12-18 | 惠州市吉瑞科技有限公司 | 电子烟微控制器的多任务执行方法及装置 |
CN103279351B (zh) * | 2013-05-31 | 2016-06-29 | 北京高森明晨信息科技有限公司 | 一种任务调度的方法及装置 |
US9477523B1 (en) * | 2013-06-25 | 2016-10-25 | Amazon Technologies, Inc. | Scheduling data access jobs based on job priority and predicted execution time using historical execution data |
US8706798B1 (en) * | 2013-06-28 | 2014-04-22 | Pepperdata, Inc. | Systems, methods, and devices for dynamic resource monitoring and allocation in a cluster system |
JP5466786B1 (ja) * | 2013-08-28 | 2014-04-09 | 株式会社 ディー・エヌ・エー | 画像処理装置及び画像処理プログラム |
KR101604303B1 (ko) * | 2013-10-30 | 2016-03-18 | 삼성에스디에스 주식회사 | 업데이트 실행 장치 및 방법과 이를 이용한 기록 매체, 업데이트 제공 서버 및 업데이트 제공 방법 |
US9727387B2 (en) | 2014-11-10 | 2017-08-08 | International Business Machines Corporation | System management and maintenance in a distributed computing environment |
US20180198855A1 (en) * | 2014-11-24 | 2018-07-12 | Alibaba Group Holding Limited | Method and apparatus for scheduling calculation tasks among clusters |
CN104731662B (zh) * | 2015-03-26 | 2018-02-23 | 华中科技大学 | 一种可变并行作业的资源分配方法 |
US20170032000A1 (en) * | 2015-07-28 | 2017-02-02 | Bank Of America Corporation | Database manager |
RU2617923C2 (ru) * | 2015-09-30 | 2017-04-28 | Акционерное общество "Лаборатория Касперского" | Система и способ настройки антивирусной проверки |
US10034407B2 (en) * | 2016-07-22 | 2018-07-24 | Intel Corporation | Storage sled for a data center |
US10860373B2 (en) * | 2016-10-11 | 2020-12-08 | Microsoft Technology Licensing, Llc | Enhanced governance for asynchronous compute jobs |
JP7151219B2 (ja) * | 2018-07-05 | 2022-10-12 | 株式会社リコー | 組み込み機器、ウィルススキャンプログラム実行方法、プログラム |
CN109460254B (zh) * | 2018-09-25 | 2021-03-19 | 杭州旗捷科技有限公司 | 一种指令处理方法、cpu交互系统及采用该系统的耗材芯片 |
US20210382705A1 (en) * | 2020-06-08 | 2021-12-09 | Acronis International Gmbh | Systems and methods for seamless software migration |
KR102585591B1 (ko) * | 2021-06-23 | 2023-10-10 | 한국과학기술원 | 이기종 프로세서 기반 엣지 시스템에서 slo 달성을 위한 인공지능 추론 스케쥴러 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003288224A (ja) * | 2002-03-28 | 2003-10-10 | Fujitsu Ltd | 処理装置、サーバ、およびプログラム |
JP2004302986A (ja) * | 2003-03-31 | 2004-10-28 | Alps Electric Co Ltd | タスク管理方法 |
JP2006126973A (ja) * | 2004-10-26 | 2006-05-18 | Mitsubishi Electric Corp | 記憶領域管理方法、記憶領域割当プログラム、ガベージコレクション処理プログラム、記憶領域管理プログラム、およびメッセージ管理プログラム |
Family Cites Families (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US246461A (en) * | 1881-08-30 | Blotting-pad | ||
US73508A (en) * | 1868-01-21 | Improvement in cued-breaiees | ||
US32293A (en) * | 1861-05-14 | Improved projectile for rifled ordnance | ||
US71841A (en) * | 1867-12-10 | Improvement in horse-rakes | ||
US231630A (en) * | 1880-08-24 | theodoe stefflway | ||
US125793A (en) * | 1872-04-16 | Improvement in water-meters | ||
US10065A (en) * | 1853-10-04 | Improvement in machines for topping cotton jn the field | ||
SU849893A1 (ru) | 1979-07-16 | 1996-01-10 | Институт Кибернетики Ан Усср | Вычислительная система |
RU2027219C1 (ru) * | 1990-12-17 | 1995-01-20 | Грибков Владимир Александрович | Устройство для распределения заданий процессорам |
RU2018945C1 (ru) | 1991-06-07 | 1994-08-30 | Научно-производственное объединение интегрированных микроэлектронных систем | Блок выбора направления обмена децентрализованной вычислительной системы |
JPH06237348A (ja) | 1993-02-08 | 1994-08-23 | Fuji Xerox Co Ltd | メモリ制御装置 |
US5675790A (en) | 1993-04-23 | 1997-10-07 | Walls; Keith G. | Method for improving the performance of dynamic memory allocation by removing small memory fragments from the memory pool |
DE19500957A1 (de) | 1994-07-19 | 1996-01-25 | Bosch Gmbh Robert | Verfahren zur Steuerung von technischen Vorgängen oder Prozessen |
US6330583B1 (en) * | 1994-09-09 | 2001-12-11 | Martin Reiffin | Computer network of interactive multitasking computers for parallel processing of network subtasks concurrently with local tasks |
JP2940450B2 (ja) | 1995-10-26 | 1999-08-25 | 日本電気株式会社 | クラスタ型コンピュータのジョブスケジュール方法及び装置 |
JP4110593B2 (ja) | 1997-05-19 | 2008-07-02 | ソニー株式会社 | 信号記録方法及び信号記録装置 |
JP3588231B2 (ja) | 1997-08-04 | 2004-11-10 | 東京エレクトロンデバイス株式会社 | データ処理システム及びブロック消去型記憶媒体 |
US6016503A (en) * | 1997-08-29 | 2000-01-18 | International Business Machines Corporation | Methods, systems and computer program products for preemptive avoidance of constraints for shared resources |
US5974439A (en) * | 1997-11-21 | 1999-10-26 | International Business Machines Corporation | Resource sharing between real-time and general purpose programs |
US6226728B1 (en) | 1998-04-21 | 2001-05-01 | Intel Corporation | Dynamic allocation for efficient management of variable sized data within a nonvolatile memory |
US7268774B2 (en) | 1998-08-18 | 2007-09-11 | Candledragon, Inc. | Tracking motion of a writing instrument |
US6567840B1 (en) | 1999-05-14 | 2003-05-20 | Honeywell Inc. | Task scheduling and message passing |
US6591287B1 (en) * | 1999-09-08 | 2003-07-08 | Lucent Technologies Inc. | Method to increase the efficiency of job sequencing from sequential storage |
US6609131B1 (en) * | 1999-09-27 | 2003-08-19 | Oracle International Corporation | Parallel partition-wise joins |
US6357016B1 (en) | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal within a multithreaded processor |
US7096327B2 (en) | 2000-03-24 | 2006-08-22 | Koninklijke Philips Electronics N.V. | System for and method of accessing blocks on a storage medium |
US7007090B1 (en) * | 2000-03-31 | 2006-02-28 | Intel Corporation | Techniques of utilizing actually unused bandwidth |
JP4475614B2 (ja) * | 2000-04-28 | 2010-06-09 | 大正製薬株式会社 | 並列処理方法におけるジョブの割り当て方法および並列処理方法 |
US7170891B2 (en) | 2001-08-30 | 2007-01-30 | Messenger Terabit Networks, Inc. | High speed data classification system |
US7237016B1 (en) * | 2001-09-07 | 2007-06-26 | Palau Acquisition Corporation (Delaware) | Method and system to manage resource requests utilizing link-list queues within an arbiter associated with an interconnect device |
EP1310869A1 (en) | 2001-11-12 | 2003-05-14 | Hewlett-Packard Company | Data processing system and method |
US7076781B2 (en) * | 2002-05-31 | 2006-07-11 | International Business Machines Corporation | Resource reservation for large-scale job scheduling |
US20040030882A1 (en) | 2002-08-08 | 2004-02-12 | Forman George Henry | Managed application pre-launching |
US7451704B1 (en) | 2003-03-20 | 2008-11-18 | The United States Of America As Represented By The Secretary Of The Army | Multifunctional explosive fragmentation airburst munition |
JP3936924B2 (ja) | 2003-06-18 | 2007-06-27 | 株式会社日立製作所 | ジョブスケジューリング方法及びシステム |
US7467102B2 (en) | 2003-09-11 | 2008-12-16 | International Business Machines Corporation | Request type grid computing |
US20050071841A1 (en) | 2003-09-30 | 2005-03-31 | Hoflehner Gerolf F. | Methods and apparatuses for thread management of mult-threading |
US7512948B2 (en) * | 2003-11-20 | 2009-03-31 | International Business Machines Corporation | Method, system, and program for managing operation requests using different resources |
US7650601B2 (en) | 2003-12-04 | 2010-01-19 | International Business Machines Corporation | Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment |
WO2005060575A2 (en) | 2003-12-10 | 2005-07-07 | X1 Technologies, Inc. | Performing operations in response to detecting a computer idle condition |
US20050240934A1 (en) * | 2004-04-21 | 2005-10-27 | Hewlett-Packard Development Company, L.P. | Task management based on system utilization |
US7441242B2 (en) * | 2004-04-22 | 2008-10-21 | International Business Machines Corporation | Monitoring performance of a logically-partitioned computer |
US20050246461A1 (en) | 2004-04-29 | 2005-11-03 | International Business Machines Corporation | Scheduling threads in a multi-processor computer |
US8856793B2 (en) * | 2004-05-11 | 2014-10-07 | International Business Machines Corporation | System, method and program for scheduling computer program jobs |
US7480840B2 (en) | 2004-10-12 | 2009-01-20 | International Business Machines Corporation | Apparatus, system, and method for facilitating port testing of a multi-port host adapter |
US20060168214A1 (en) * | 2004-10-29 | 2006-07-27 | International Business Machines Corporation | System for managing logical partition preemption |
US7814485B2 (en) * | 2004-12-07 | 2010-10-12 | Intel Corporation | System and method for adaptive power management based on processor utilization and cache misses |
US7793308B2 (en) * | 2005-01-06 | 2010-09-07 | International Business Machines Corporation | Setting operation based resource utilization thresholds for resource use by a process |
JP2006237348A (ja) | 2005-02-25 | 2006-09-07 | Ulvac Japan Ltd | 静電チャック及びこれを備えた真空処理装置 |
US8594311B2 (en) * | 2005-06-02 | 2013-11-26 | Virtual Hold Technology, Llc | Expected wait time augmentation system and method |
JP4871546B2 (ja) * | 2005-08-22 | 2012-02-08 | 株式会社日立製作所 | ストレージシステム |
US7831971B2 (en) * | 2005-10-24 | 2010-11-09 | International Business Machines Corporation | Method and apparatus for presenting a visualization of processor capacity and network availability based on a grid computing system simulation |
US7853948B2 (en) | 2005-10-24 | 2010-12-14 | International Business Machines Corporation | Method and apparatus for scheduling grid jobs |
US20070143759A1 (en) * | 2005-12-15 | 2007-06-21 | Aysel Ozgur | Scheduling and partitioning tasks via architecture-aware feedback information |
US20070150871A1 (en) * | 2005-12-22 | 2007-06-28 | International Business Machines Corporation | Autonomically adjusting the collection of performance data from a call stack |
US8056083B2 (en) | 2006-10-10 | 2011-11-08 | Diskeeper Corporation | Dividing a computer job into micro-jobs for execution |
US9588809B2 (en) | 2006-10-10 | 2017-03-07 | Invistasking LLC | Resource-based scheduler |
GB2439577B (en) | 2006-06-30 | 2011-12-14 | Data Equation Ltd | Data processing |
-
2006
- 2006-06-19 US US11/471,466 patent/US8239869B2/en active Active
-
2007
- 2007-05-29 WO PCT/US2007/012746 patent/WO2007149188A1/en active Application Filing
- 2007-05-29 KR KR1020147002683A patent/KR101471394B1/ko not_active IP Right Cessation
- 2007-05-29 AU AU2007261666A patent/AU2007261666C1/en not_active Ceased
- 2007-05-29 CA CA002654416A patent/CA2654416A1/en not_active Abandoned
- 2007-05-29 EP EP07777320A patent/EP2030113A1/en not_active Withdrawn
- 2007-05-29 KR KR1020097000686A patent/KR20090024256A/ko not_active Application Discontinuation
- 2007-05-29 RU RU2008149052/08A patent/RU2454704C2/ru not_active IP Right Cessation
- 2007-05-29 CN CN200780022931XA patent/CN101473307B/zh not_active Expired - Fee Related
- 2007-05-29 JP JP2009516491A patent/JP2009541848A/ja active Pending
- 2007-06-06 CN CN2007800231413A patent/CN101501645B/zh not_active Expired - Fee Related
- 2007-06-06 CN CNA2007800229216A patent/CN101473306A/zh active Pending
- 2007-06-12 TW TW096121175A patent/TW200813818A/zh unknown
-
2012
- 2012-08-07 US US13/569,018 patent/US9384040B2/en active Active
-
2013
- 2013-06-18 JP JP2013127355A patent/JP2013232207A/ja active Pending
-
2016
- 2016-07-04 US US15/201,592 patent/US9727372B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003288224A (ja) * | 2002-03-28 | 2003-10-10 | Fujitsu Ltd | 処理装置、サーバ、およびプログラム |
JP2004302986A (ja) * | 2003-03-31 | 2004-10-28 | Alps Electric Co Ltd | タスク管理方法 |
JP2006126973A (ja) * | 2004-10-26 | 2006-05-18 | Mitsubishi Electric Corp | 記憶領域管理方法、記憶領域割当プログラム、ガベージコレクション処理プログラム、記憶領域管理プログラム、およびメッセージ管理プログラム |
Also Published As
Publication number | Publication date |
---|---|
KR20140022963A (ko) | 2014-02-25 |
AU2007261666C1 (en) | 2013-05-23 |
AU2007261666B2 (en) | 2012-10-11 |
WO2007149188A1 (en) | 2007-12-27 |
KR20090024256A (ko) | 2009-03-06 |
JP2009541848A (ja) | 2009-11-26 |
CN101473306A (zh) | 2009-07-01 |
CA2654416A1 (en) | 2007-12-27 |
AU2007261666A1 (en) | 2007-12-27 |
CN101473307A (zh) | 2009-07-01 |
US8239869B2 (en) | 2012-08-07 |
RU2008149052A (ru) | 2010-07-27 |
TW200813818A (en) | 2008-03-16 |
CN101473307B (zh) | 2013-07-17 |
US20120304181A1 (en) | 2012-11-29 |
US9384040B2 (en) | 2016-07-05 |
US9727372B2 (en) | 2017-08-08 |
RU2454704C2 (ru) | 2012-06-27 |
US20070294695A1 (en) | 2007-12-20 |
CN101501645B (zh) | 2013-04-03 |
CN101501645A (zh) | 2009-08-05 |
EP2030113A1 (en) | 2009-03-04 |
KR101471394B1 (ko) | 2014-12-10 |
US20160314015A1 (en) | 2016-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2013232207A (ja) | コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置 | |
US8056083B2 (en) | Dividing a computer job into micro-jobs for execution | |
US10733032B2 (en) | Migrating operating system interference events to a second set of logical processors along with a set of timers that are synchronized using a global clock | |
US9588809B2 (en) | Resource-based scheduler | |
US8424007B1 (en) | Prioritizing tasks from virtual machines | |
JP2013218744A (ja) | リソースに基づいたスケジューラ | |
JP5299869B2 (ja) | コンピュータマイクロジョブ | |
JPWO2003040948A1 (ja) | コンピュータ及び制御方法 | |
JP2008225641A (ja) | コンピュータシステム、割り込み制御方法及びプログラム | |
RU2356087C1 (ru) | Система и способ антиблокировки доступа к диску | |
CN114691279A (zh) | 资源调度方法、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141007 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20150303 |