JP6532385B2 - 情報処理システムおよびその制御方法、並びにプログラム - Google Patents

情報処理システムおよびその制御方法、並びにプログラム Download PDF

Info

Publication number
JP6532385B2
JP6532385B2 JP2015215694A JP2015215694A JP6532385B2 JP 6532385 B2 JP6532385 B2 JP 6532385B2 JP 2015215694 A JP2015215694 A JP 2015215694A JP 2015215694 A JP2015215694 A JP 2015215694A JP 6532385 B2 JP6532385 B2 JP 6532385B2
Authority
JP
Japan
Prior art keywords
subtask
subtasks
queue
controller
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015215694A
Other languages
English (en)
Other versions
JP2017090961A5 (ja
JP2017090961A (ja
Inventor
中澤 紀之
紀之 中澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2015215694A priority Critical patent/JP6532385B2/ja
Priority to CN201610921235.3A priority patent/CN106648850B/zh
Priority to US15/334,744 priority patent/US10203985B2/en
Priority to KR1020160144319A priority patent/KR102062945B1/ko
Publication of JP2017090961A publication Critical patent/JP2017090961A/ja
Publication of JP2017090961A5 publication Critical patent/JP2017090961A5/ja
Application granted granted Critical
Publication of JP6532385B2 publication Critical patent/JP6532385B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

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

Description

本発明は、情報処理システムおよびその制御方法、並びにプログラムに関する。
従来、PCなどの情報処理装置において、マルチスレッドを用いた複数タスクの実行処理では、スレッドに対応付けられたキューにタスクをエンキューする際に、キューの長さやタスクの実行時間等に基づき各スレッドの処理が均等になるように制御している。これにより、効率的にタスクの実行を行っていた(例えば、特許文献1参照)。
特開2013−54451号公報
しかし、上記従来技術では、タスクの優先度が高い(緊急に実行したい)場合であっても、タスクはキューの末尾にエンキューされるため、先にエンキューされた優先度の低いタスクが終了しない限り、優先度の高いタスクは実行されないという問題がある。また、空のキューが存在し、その空のキューに対応付けられたスレッドがアイドル状態であっても、その空のキューとは別のキューに蓄積されたタスクはその別のキューに対応付けられたスレッドによりエンキューされるまで実行されない。その結果、非効率な動作となる。
上記課題を解決するために、本願発明は以下の構成を有する。すなわち、情報処理システムであって、複数のタスクの実行を制御する第一のコントローラーと、前記第一のコントローラーにて動作する1のタスクから生成される1または複数のサブタスクが登録される複数のキューであって、第一のキューと、前記第一のキューよりも優先度の低い第二のキューとを含む複数のキューと、前記複数のキューに登録されたサブタスクを取得し、スレッドを作成して当該取得したサブタスクを実行させる第二のコントローラーと、を備え、前記複数のキューそれぞれは、自身に登録されたサブタスクのうち同時に実行されるサブタスクの数の上限値が定義され、前記第二のコントローラーは、前記情報処理システムにて同時に実行されるサブタスクの数に対する閾値を管理し、前記情報処理システムにて実行中のサブタスクの数が前記閾値を超えない場合には、前記複数のキューのいずれかからサブタスクを取得し、スレッドを新たに作成して当該取得したサブタスクを実行させ、前記情報処理システムにて実行中のサブタスクの数が前記閾値を超える場合には、スレッドを新たに作成せず、記第一のキューに登録されたサブタスクのうち実行中のサブタスクの数が前記第一のキューに対して定義された上限値よりも少ない場合、前記情報処理システムにて実行中のサブタスクの数が前記閾値を超えているか否かに関わらず、前記第一のキューに登録されているサブタスクを取得し、スレッドを新たに作成して当該取得したサブタスクを実行させる。
本願発明により、キューを利用してタスクを処理する際に、効率的に処理を行うことが可能となる。
本願発明に係る管理アプリケーションの機能構成を説明するための図。 本発明に係るネットワークシステムの構成例を示す図。 ホストコンピューターのハードウェア構成の例を示す図。 タスクをエンキューする際の処理のフローチャート。 タスクの処理クラスのGoメソッドの処理のフローチャート。 サブタスクキューにサブタスク定義データをエンキューする処理のフローチャート。 サブタスクの実行処理のフローチャート。 サブタスクキューからサブタスク定義データをデキューする処理のフローチャート。 サブタスクキューからサブタスク定義データをデキューする処理のフローチャート。 サブタスクの実行終了通知の処理の流れを示す図。 サブタスクを実行するスレッドの処理のフローチャート。 タスクコントローラーが有するメソッドの例を示す図。 TaskBase抽象クラスを継承したクラスインスタンスの例を示す図。 サブタスク定義データ、およびクラスの記述例を示す図。 第二の実施形態に係るクラスの記述例を示す図。
以下、本発明を実施するための形態について図面を用いて説明する。
<第一の実施形態>
[システム構成]
図2は、本発明に係るネットワークシステムの構成例を示す図である。ホストコンピューター201は、情報処理装置であって、ネットワーク202に接続された複数のネットワークデバイスを管理するための管理アプリケーションが動作する。画像形成装置203〜208はそれぞれ、ネットワークデバイスであり、ホストコンピューター201が備える管理アプリケーションにより管理される。本願発明に係る管理アプリケーションの動作については後述する。
図3は、ホストコンピューター201のハードウェア構成の例を示す図である。ホストコンピューター201は、CPU301、RAM302、ROM303、および外部記憶装置307を備える。CPU301は、ROM303や外部記憶装置307に記憶された、或いはネットワーク202よりダウンロードしたソフトウェアを実行し、ホストコンピューター201が備える各デバイスを総括的に制御する。RAM302は、揮発性の記憶領域であり、CPU301の主メモリあるいはワークエリアなどとして機能する。外部記憶装置307は、不揮発性の記憶領域であり、ハードディスク(HD)やソリッドステートドライブ(SSD)等から構成される。外部記憶装置307は、不揮発性の記憶領域であり、ブートプログラム、オペレーティングシステム、認証サーバおよび認証クライアント等を含む各種アプリケーション、データベースデータ、およびユーザファイル等を記憶する。
更に、ホストコンピューター201は、キーボードコントローラー(KBDC)304、ビデオコントローラー(VC)305、ディスクコントローラー(DC)306、および通信コントローラー(NIC)308を備える。キーボードコントローラー304は、キーボードやポインティングデバイス(不図示)からの入力情報をCPU301に送る。ビデオコントローラー305は、LCD(Liquid Crystal Display)等から構成される表示装置の表示を制御する。ディスクコントローラー306は、外部記憶装置307とのアクセスを制御する。通信コントローラー308は、ネットワーク202とのインタフェースであり、ホストコンピューター201とネットワーク202とを接続する。また、上記の外部記憶装置307以外の構成要素は、バス309を介して、互いに通信可能に接続される。
[管理アプリケーション]
本願発明に係るホストコンピューター201が備える管理アプリケーションの機能について説明する。管理アプリケーションは、例えば、ネットワーク202に接続された各画像形成装置から以下のような各種情報を取得し、管理する。
(1)一定期間毎に各画像形成装置の状態情報を取得
(2)画像形成装置にエラーが発生した際に画像形成装置から送信されるエラー発生通知を受信し、該画像形成装置の状態情報を取得
(3)一定期間毎に各画像形成装置の消耗品情報を取得
(4)一定期間毎に各画像形成装置の入力情報(用紙の種別と残量)を取得
(5)一定期間毎に各画像形成装置の各種カウンター情報を取得
(6)一定期間毎に各画像形成装置の各種設定値データを取得
(7)指定時刻にネットワークをスキャンし、ネットワーク上の画像形成装置を探索
ここでの一定期間や指定時刻は予め定義されているものとし、また、処理ごとに異なる値が設定されていてもよい。また、管理アプリケーションの機能として、上記にて7つの機能を示したが、これに限定するものではない。また、どの機能を有効にするかは、管理アプリケーションの利用者が自由に選択可能であってよい。
例えば、状態情報の取得機能は、定期的に各画像形成装置に対してその状態情報を取得するための処理を開始する。更に、状態情報の取得機能は、定期的に各画像形成装置に対して、画像形成装置がエラー発生時に管理アプリケーションに対してエラー発生通知を送信するための設定を行う。また、状態情報の取得機能は、画像形成装置からのエラー発生通知を受信すると、該画像形成装置から現在の状態の情報を取得する。
状態情報、消耗品情報、入力情報、および各種カウンター情報は、その情報量が比較的少量であるため、各画像形成装置からのこれら情報の取得は短時間で終了する。各種設定値データはデータ量が多く、その取得には長い時間が必要となる場合が多い。また、状態情報の取得は、画像形成装置のエラーの発生から規定時間内にエラーの発生を利用者に通知する、といった制約が設けられている場合が多い。このため、画像形成装置からのエラー通知を受信した場合、速やかに該画像造形装置より状態情報を取得する必要がある。各種設定値データの取得に関しては、このような時間的制約は設けられていない。つまり、管理アプリケーションが管理する画像形成装置の情報は、その情報の内容に応じて扱う際の特性が異なる。
図1は、本発明に係るホストコンピューター201の管理アプリケーションの機能構成を説明するための図である。図1を用いて、本願発明に係るタスク及びサブタスクの制御を説明する。
本願発明において、1のタスクコントローラー101は、複数のタスクの実行を制御する。言い換えると、複数のタスクが、1のタスクコントローラー101にて動作する。図1では、一例として、タスクコントローラー101にて動作する3つのタスク103〜105を示している。例えば、状態情報の取得、消耗品情報の取得、各種設定値データの取得等が、タスク103〜105それぞれに相当する。また、1のタスクは、複数のサブタスクに分割される。例えば、管理アプリケーションにおける状態情報の取得処理に関するタスクであれば、各画像形成装置からの状態情報の取得処理や、各画像形成装置へのエラー発生通知設定がそれぞれ、サブタスクとなる。なお、1のタスクから作成されれるサブタスクの数は、タスクの処理内容や対象に応じて異なる。
図1において、サブタスク定義データ109〜111として示される各要素はそれぞれ、サブタスクの処理内容を定義したデータである。また、サブタスク実行処理112〜114として示される各要素は、サブタスク定義データで示される処理を実行するためのサブタスク実行処理であり、それぞれ別々のスレッドで実行される。つまり、スレッドの数は、実行中のサブタスク(サブタスク実行処理)の数となる。
また、本願発明において、1のサブタスクコントローラー102は、複数のサブタスクキューを管理する。図1では、一例として、3つのサブタスクキュー106、107、108が設けられる。サブタスクキュー106、107、108はそれぞれ、サブタスク定義データを格納する。タスク103〜105はそれぞれ、複数のサブタスク定義データを作成し、これをサブタスクコントローラー102が管理する複数のサブタスクキューのいずれかに追加(エンキュー)する。サブタスク実行処理は、サブタスクキューからサブタスク定義データを取得(デキュー)し、サブタスク定義データに従ってサブタスクを実行する。
図1に示すように、複数のサブタスクキューはそれぞれ、格納されるサブタスク定義データの特徴に応じて使い分けがなされる。サブタスクキュー106には、実行の優先順位が高いサブタスク定義データが格納される。例えば、画像形成装置からのエラー通知に伴う状態取得のように、直近に処理する必要があるサブタスク定義データはサブタスクキュー106に格納される。サブタスクキュー106に格納されたサブタスク定義データは、他のサブタスクキューに格納されたサブタスク定義データよりも優先的にサブタスク実行処理により処理される。サブタスクキュー107には、状態情報の取得や消耗品情報の取得等の短時間で処理が終了するサブタスク定義データが格納される。サブタスクキュー108には、各種設定データの取得処理等の処理の終了に長時間を要するサブタスク定義データが格納される。そして、サブタスク定義データは、格納された各サブタスクキューの優先度に応じて処理され、ここでは、サブタスクキュー106、サブタスクキュー107、サブタスクキュー108の順に優先的に処理されるものとする。
また、本実施形態では、ホストコンピューター201の性能や状態等に応じて、装置全体として動作させるスレッド(サブタスク実行処理)の数の推奨値(閾値)が定義して管理される。また、複数のサブタスクキューそれぞれには、サブタスクキューからデキューされたサブタスク定義データを処理しているスレッド(サブタスク実行処理)が対応付けられる。このサブタスクキューに対応付けられるスレッドの数の範囲(上限値)も定義して管理される。この管理については、フローチャートと併せて後述する。
タスクコントローラー101は、各タスクの実行を制御する。タスクコントローラー101はタスクの作成/起動/破棄、およびサブタスク定義データを作成したタスクへの対応するサブタスクの終了通知等の処理を行う。サブタスクコントローラー102は、サブタスク定義データのサブタスクキューへのエンキュー/デキュー、及びスレッドを作成してサブタスク実行処理を開始する等の処理を行う。本明細書では、タスクコントローラー101を「第一のコントローラー」、サブタスクコントローラー102を「第二のコントローラー」とも称する。
以下では、各構成要素を代表して、タスク103、サブタスク実行処理112、およびサブタスク定義データ109を用いて説明する。タスクコントローラー101とサブタスクコントローラー102は相互への参照を保持する。タスクコントローラー101とタスク103も相互への参照を保持する。サブタスク実行処理112は、サブタスクコントローラー102への参照を保持する。
また、以下に説明するメソッドの定義やコードの引用では、プログラミング言語としてC#を用いて説明するが、同等の機能が実現できれば他のプログラム言語を用いて実現してもよい。
ここで、タスクコントローラー101が備えるメソッドについて、図11Aを用いて説明する。
Startメソッド1101は、管理アプリケーションがタスクコントローラー101にタスクの追加する際に呼び出すメソッドである。Startメソッド1101において、第一引数のtaskId1105はタスクを一意に識別するための文字列である。taskIdとしては、例えば、UUID(Universally Unique Identifier)やGUID(Globally Unique Identifier)が用いられる。第二引数のclassName1106は、タスクの処理を実装したクラスの名前を示す文字列である。異なる処理(状態取得、カウンター取得等)はそれぞれ、異なるクラス名を持つ。第三引数のcontents1107は、タスクの詳細を定義した文字列であり、例えば、タスクの詳細を格納するオブジェクトをシリアライズした文字列が用いられる。
Enqueueメソッド1102は、タスクがサブタスク定義データをサブタスクキューにエンキューする際に呼び出すメソッドである。
OnSubtaskEndメソッド1103は、サブタスク定義データに対する、サブタスク実行処理による処理が終了した際に、サブタスク実行処理がサブタスクコントローラー102経由で呼び出すメソッドである。
Removeメソッド1104は、タスクが処理の終了時に呼び出すメソッドである。Removeメソッドが呼び出されると、タスクコントローラー101は、保持しているタスクへの参照をタスク管理マップから削除する。
[処理フロー]
以下、本願発明に係る処理の流れについて説明する。なお、以下に示す各処理は、ホストコンピューター201のCPU301が、ROM303等の記憶部に格納されたプログラムを読み出して実行することにより実現される。
(タスクの追加)
図4は、ホストコンピューター201が備える管理アプリケーションがタスクコントローラー101にタスクを追加する際の処理の流れを示すフローチャートである。
管理アプリケーションがタスクコントローラー101にタスクの追加を依頼する場合、図11Aに示す、タスクコントローラー101のStartメソッド1101を呼び出す。図4のフローチャートはこのStartメソッド1101の処理の流れを示す。
Startメソッド1101が呼び出されると、S401にて、タスクコントローラー101は、引数として渡されたclassName1106を用いて、タスクの実行を実装したクラスのインスタンス(ここでは、タスク103とする)を作成する。ここで作成されるクラスインスタンスは、例えば、画像形成装置から状態情報を取得するタスクであったり、画像形成装置から各種設定値データを取得するタスクであったりする。異なるタスクに対してそれぞれ異なるクラスのインスタンスが作成される。更に、タスクコントローラー101は、作成したタスク103にタスクコントローラー101への参照を設定する。
S402にて、タスクコントローラー101は、タスク管理マップ(不図示)に、引数として渡されたtaskId1105をキーとしてS401で作成したタスク103への参照を追加する。タスク管理マップとは、実行中のタスクのtaskIdをキーとし、タスクへの参照を値として対応付けたマップ(辞書)であり、タスクコントローラー101により管理される。タスク管理マップは、RAM302内に保持される。
S403にて、タスクコントローラー101は、S401で作成したタスク103の開始メソッドを呼び出す。そして、本処理フローを終了する。
タスクコントローラー101がS401で作成するタスク103は、図11Bに示すような、TaskBase抽象クラスを継承したクラスのインスタンスである。なお、「継承」とは、継承元の機能を引き継ぎ、新たなクラスを生成することを意味する。つまり、ここでは、タスク103は、TaskBase抽象クラスの機能を引き継いで新たなクラスとして生成されている。承継については、C#などのオブジェクト指向型の言語の分野にて周知であるため、ここでは詳細な説明を省略する。
TaskBase抽象クラスを継承したタスク103は、WithControllerメソッド1111、Goメソッド1112、OnSubtaskEndメソッド1113、およびEnqueueメソッド1114を実装する。WithControllerメソッド1111は、タスクコントローラー101への参照の設定を行うためのメソッドである。Goメソッド1112は、タスクを実行するためのメソッドである。OnSubtaskEndメソッド1113は、サブタスクの実行終了通知を受け取るためのメソッドである。Enqueueメソッド1114は、サブタスク定義データ109をサブタスクキューへエンキューするためのメソッドである。
タスクコントローラー101は、S401にて、作成したタスク103からタスクコントローラー101への参照の設定を、WithControllerメソッド1111を呼び出すことにより行う。また、タスクコントローラー101は、S403の開始メソッドの呼び出しを、Goメソッド1112を呼び出すことにより実行する。
(タスクの開始)
図5は、TaskBase抽象クラスを継承したタスク103の、Goメソッド1112の処理の流れを示すフローチャートである。
S501にて、タスク103は、Goメソッド1112の引数であるcontentsをデシリアライズ(変換)し、タスクの詳細を含むオブジェクト(タスク詳細情報)を作成する。例えば、contentsとして管理アプリケーションの状態情報取得タスクが指定された場合、タスク詳細情報は、状態情報の取得対象となる画像記憶装置のネットワークアドレスのリストである。
S502にて、タスク103は、S501で作成したタスク詳細情報から、タスクを複数のサブタスクに分割し、各サブタスクを表現するサブタスク定義データ109を作成する。例えば、上述したような状態情報取得タスクの場合、サブタスクは画像形成装置ごとの状態取得であり、サブタスク定義データには取得対象の画像形成装置それぞれのネットワークアドレスが指定される。
更に、タスク103は、生成されたサブタスク定義データの特性に応じて、サブタスク定義データを、サブタスクコントローラー102が備える複数のサブタスクキューのうちのいずれかにエンキューする。タスク103は、サブタスク定義データ109をサブタスクキューへエンキューするために、TaskBaseクラスのEnqueueメソッド1114を呼び出す。基底クラスTaskBaseのEnqueueメソッド1114の処理は、図11Bで示すように、まず、タスクコントローラー101のEnqueueメソッド1115を呼び出す。タスクコントローラー101のEnqueueメソッド1115の処理では、指定されたサブタスクキューへのサブタスク定義データのエンキューに成功した場合は真を、失敗した場合は偽が返される。基底クラスTaskBaseは、サブタスク定義データのサブタスクキューへのエンキューに成功した場合、クラス内部に保持するサブタスクカウンターの値を1増加させる(1116)。このサブタスクカウンターの値は、タスク103がサブタスクキューにエンキューしたサブタスク定義データのうち、現在サブタスクキュー内にあるサブタスク定義データの数と、サブタスク実行処理により実行中のサブタスクの数の和である。
図11C(a)は、サブタスク定義データ109の構造例を示す。TaskId1121は、図4のタスクの追加処理にて渡されたTaskId(Startメソッド1101に渡されたtaskId1105)である。SubtaskId1122は、各サブタスクを一意に識別するための文字列である。ClassName1123は、サブタスクを実行するクラスの名前である。Contents1124は、各サブタスクの処理の詳細を含む文字列である。SubtaskId1122、ClassName1123、およびContents1124は共に、タスク103により生成される。
サブタスクキューはそれぞれ、自身を一意に識別するための名前、自身にエンキューされたサブタスクであって現在サブタスク実行処理により実行中のサブタスクの数、および、自身に対応する同時に実行可能なサブタスクの数の上限値の情報を有する。また、サブタスクコントローラー102は、全体として同時に実行可能なサブタスクの合計数の閾値を保持している。各サブタスクキューのサブタスクの同時実行数の上限値と、サブタスクコントローラー102が管理する全体としての合計数の閾値とには、次の関係がある。
1.各サブタスクキューの上限数の合計 > 合計数の閾値
2.優先度高以外のサブタスクキューの上限数の合計 ≦ 合計数の閾値
本実施形態において、各サブタスクキューの上限数および合計数の閾値は、ホストコンピューター201の性能や状態に基づき、サブタスクコントローラー102の作成時(起動時)にサブタスクコントローラー102が決定する。
(サブタスク定義データのエンキュー)
図6は、図5のS502にて要求されたエンキュー要求に従って、サブタスクコントローラー102が指定されたサブタスクキューにサブタスク定義データをエンキューする処理を示すフローチャートである。このとき、Enqueueメソッド1114が呼び出され、サブタスク定義データとエンキュー先となるサブタスクキューの名前が引数として渡される。
S601にて、サブタスクコントローラー102は、与えられたサブタスクキューの名前を持つサブタスクキューをサブタスクキューの一覧から取得する。
S602にて、サブタスクコントローラー102は、与えられたサブタスク定義データのTaskIdとSubtaskIdの組み合わせと同じ組み合わせを持つサブタスク定義データが、S601にて取得したサブタスクキュー内に存在するか否かを確認する。確認の結果、同じ組み合わせのサブタスク定義データが、S601で取得したサブタスクキュー内に存在する場合(S602にてYES)、S609にて、サブタスクコントローラー102は偽を返す。そして、本処理フローを終了する。ここで、偽を返すことは、指定されたサブタスク定義データがサブタスクキューへエンキューされなかったことを意味する。サブタスクキュー内に同じTaskIdとSubtaskIdの組み合わせを持つサブタスク定義データが存在しない場合(S602にてNO)、S603へ遷移する。
S603にて、サブタスクコントローラー102は、取得したサブタスクキューに、与えられたサブタスク定義データをエンキューする。
例えば、管理アプリケーションの状態情報取得タスクが、一定期間毎に管理対象の画像形成装置から状態情報を取得する場合、期間内に取得処理が終了しない場合はサブタスクキュー内に、前回に追加したサブタスク定義データが存在する可能性がある。IDの組み合わせの重複判定(S602)により、同じ処理をするサブタスク定義データのエンキューを抑止することができる。
以降の処理で、サブタスクコントローラー102は、サブタスク実行用のスレッドを開始するか否かの判定を行う。
S604にて、サブタスクコントローラー102は、取得したサブタスクキューが優先度高のサブタスクキューであるか否かを判定する。ここでの優先度高のサブタスクキューとは、例えば、図1のサブタスクキュー106が該当する。判定の結果、優先度高のサブタスクキューの場合には(S604にてYES)S605に遷移し、そうでない場合には(S604にてNO)S606に遷移する。
S605にて、サブタスクコントローラー102は、優先度高のサブタスクキューの現在実行中のサブタスクの数が、そのサブタスクキューに対して定義された上限数以下であるか否かを判定する。現在実行中のサブタスクの数が上限を超えている場合(S605にてNO)、S608にてサブタスクコントローラー102は、真を返す。そして、本処理フローを終了する。ここで、真を返すことは、指定されたタスク定義データがエンキューされたことを意味する。一方、上限数以下である場合には(S605にてYES)S607に遷移する。
S606にて、サブタスクコントローラー102は、実行中のサブタスク実行処理(スレッド)の総数がスレッドの合計数の閾値以下であるか否かを判定する。判定の結果、閾値を超えている場合には(S606にてNO)S608にて、サブタスクコントローラー102は、真を返す。そして、本処理フローを終了する。一方、閾値以下である場合には(S606にてYES)、S607に遷移する。
S607にて、サブタスクコントローラー102は、サブタスク実行用のスレッドを作成し、サブタスク実行処理112を開始する。その後、S608にて、サブタスクコントローラー102は、真を返す。そして、本処理フローを終了する。
(サブタスク実行処理)
図7は、個別のスレッドで実行されるサブタスクの実行処理の流れを示すフローチャートである。図6のS607にて、サブタスクコントローラー102は、スレッドを作成し、サブタスクの処理を開始する。この処理の実行主体はサブタスクコントローラー102である。
S701にて、サブタスクコントローラー102は、サブタスクキューからサブタスク定義データをデキューする処理を呼び出す。ここでの処理の詳細については、図8Aおよび図8Bを用いて後述する。
S702にて、サブタスクコントローラー102は、サブタスク定義データがデキューできたか否かを判定する。サブタスク定義がデキューできなかった場合は(S702にてNO)、本処理フローを終了し、スレッドを終了する。サブタスク定義データがデキューできた場合(S702にてYES)、S703へ遷移する。
S703にて、サブタスクコントローラー102は、サブタスク定義データ109内のClassName属性(図11C(a)のClassName1123)からサブタスクを実行するためのクラスのインスタンスを作成する。ここで作成されるサブタスクを実行するためのクラスインスタンスは、図11C(b)に示すように、抽象クラスを継承したクラスである。図11C(b)に示すGoメソッド1125は、サブタスク定義データを引数に持ち、サブタスク定義データに記載された処理内容に従ってサブタスクを実行する処理である。
S704にて、サブタスクコントローラー102は、S703で作成したサブタスクを実行するためのクラスインスタンスのGoメソッド1125を呼び出し、メソッドの戻り値である実行結果(図11C(c))を取得する。
S705にて、サブタスクコントローラー102は、S704にて取得した実行結果を引数にしてサブタスクコントローラー102のOnSubtaskEndメソッド1103を呼び出す。その後、サブタスクコントローラー102は、S701の処理に戻る。このサブタスク終了時処理を含むサブタスクの終了時の処理全体の詳細に関しては図9を用いて後述する。
図11C(c)は、サブタスクの実行結果を格納するクラスの定義を示す。実行結果において、TaskId1126とSubtaskId1127は、サブタスク定義データ109に含まれる同名の属性の値が格納される。Status1128は、実行結果の状態(成功、エラー終了、例外による終了)を示す。Result1129は、結果の詳細を含むobjectクラスを継承したクラスのインスタンスへの参照である。
(サブタスク定義データのデキュー)
図8Aは、図7のS701で呼び出されるサブタスクキューからサブタスク定義データをデキューする処理の流れを示すフローチャートである。
S801にて、サブタスクコントローラー102は、優先度高のサブタスクキュー106からサブタスク定義データをデキューする処理を呼び出す。ここでの処理の詳細は、図8Bを用いて後述する。
S802にて、サブタスクコントローラー102は、優先度高のサブタスクキュー106からのサブタスク定義データのデキューの可否を判定する。サブタスク定義データをデキューできた場合は(S802にてYES)、S808にて、サブタスクコントローラー102は、デキューしたサブタスク定義データを返す。そして、本処理フローを終了する。デキューできなかった場合(S802にてNO)、S803へ遷移する。ここで、デキューできない場合とは、優先度高のサブタスクキューにサブタスク定義が存在しない場合、もしくは、優先度高のサブタスクキューの現在実行中のサブタスクの数がその上限値に達している場合が該当する。
S803にて、サブタスクコントローラー102は、現在のサブタスクの実行数(各サブタスクキュー内の現在実行中のサブタスクの数の合計)と、装置全体として実行するサブタスクの合計数の閾値とを比較する。比較の結果、実行数が閾値と等しいか大きい場合(S803にてNO)、S809にて、サブタスクコントローラー102は、nullを返す。そして、本処理フローを終了する。これは、この処理を呼び出したサブタスク実行処理112が処理を終了し、処理を実行していたスレッドが終了することを意味する。合計数が閾値よりも少ない場合(S803にてYES)、S804に遷移する。
S804以降の処理にて、サブタスクコントローラー102は、優先度高以外のサブタスクキューから、優先度に従って、サブタスク定義データをデキューする処理を行う。
S804にて、サブタスクコントローラー102は、優先度高以外のサブタタスクキューから優先度の高い順にデキュー処理の対象とする。図1の例では、まず、サブタスクキュー107をデキュー処理の対象とし、サブタスクキュー107への処理が完了した後、サブタスクキュー108をデキュー処理の対象とする。
S805にて、サブタスクコントローラー102は、全てのサブタスクキューへの処理が終了したか否かを判定する。全てのサブタスクキューに対する処理が完了した場合(S805にてYES)、S809にて、サブタスクコントローラー102は、nullを返す。そして、本処理フローを終了する。全てのサブタスクキューに対する処理が完了していない場合(S805にてNO)、S806へ遷移する。
S806にて、サブタスクコントローラー102は、処理対象のサブタスクキューからサブタスク定義データをデキューする処理を行う。ここでの処理は、S801の処理と同様であり、詳細は図8Bを用いて説明する。
S807にて、サブタスクコントローラー102は、サブタスク定義データのデキューの可否を判定する。デキューできた場合は(S807にてYES)、S808にて、サブタスクコントローラー102は、デキューしたサブタスク定義データを返す。そして、本処理フローを終了する。デキューできなかった場合は(S807にてNO)、S804に戻り、サブタスクコントローラー102は、優先度が次のサブタスクキューに対して同様の処理を繰り返す。
図8Bは、図8AのS801とS806にて呼び出される、サブタスクキューからタスク定義データをデキューする処理の流れを示すフローチャートである。
S810にて、サブタスクコントローラー102は、処理対象のサブタスクキュー内にサブタスク定義データが存在するか否かを判定する。サブタスク定義データが存在しない、即ち処理対象のサブタスクキューが空の場合は(S810にてYES)、S815にて、サブタスクコントローラー102は、nullを返す。そして、本処理フローを終了する。サブタスクキュー内にサブタスク定義データが存在する場合は(S810にてNO)、S811へ遷移する。
S811にて、サブタスクコントローラー102は、処理対象のサブタスクキューの現在のサブタスクの実行数とその上限値とを比較する。実行数が上限値と等しいあるいは大きい場合は(S811にてNO)、S815にて、サブタスクコントローラー102は、nullを返す。そして、本処理フローを終了する。実行数が上限値よりも小さい場合(S811にてYES)、S812へ遷移する。
S812にて、サブタスクコントローラー102は、処理対象のサブタスクキューからサブタスク定義データをデキューする。
S813にて、サブタスクコントローラー102は、現在のサブタスクの実行数を1増加(カウント)する。
S814にて、サブタスクコントローラー102は、デキューしたサブタスク定義データを返す。そして、本処理フローを終了する。
以上、優先度高のサブタスクキューにエンキューされたサブタスク定義データは、実行中のサブタスク数が閾値を超えた場合でも、優先度高のサブタスクキューに定義された上限数を超えていなければ、スレッドを作成して実行を開始させる。一方、その他のサブタスクキューにエンキューされたサブタスク定義データは、実行中のタスク数が閾値を超えた場合にはスレッドを作成しない。これにより、スレッドによる処理数を制御しつつ、効率的にサブタスクを処理することが可能となる。
[サブタスクの実行終了の通知]
図9は、サブタスクの実行処理しているスレッドから、サブタスクの実行終了通知が、そのサブタスク定義データを作成したタスクに通知されるまでの流れを示すシーケンス図である。図9において右端のSubtaskはサブタスク実行処理112であり、サブタスクコントローラー102の処理であるが、説明を解りやすくするために、サブタスクコントローラー102の列とは別の列に記載している。
図7のS705にて、サブタスクコントローラー102が、サブタスク終了処理OnSubtaskEnd(S901)を呼び出す。OnSubtaskEnd(S901)には、サブタスクの実行結果と当該サブタスクの定義データが格納されていたサブタスクキューの名前が渡される。
S901にて、サブタスクコントローラー102は、渡されたサブタスクキューの名前を持つサブタスクキューの現在のサブタスクの実行数を1減算する。その後、サブタスクコントローラー102は、タスクコントローラー101のサブタスク終了処理OnSubtaskEnd(S902)を呼び出す。サブタスク終了処理OnSubtaskEnd(S902)には、サブタスクの実行結果が渡される。
S902にて、タスクコントローラー101は、渡されたサブタスク実行結果内のSubtaskId1127をキーにして、タスク管理マップからタスク103への参照を取得する。次にタスクコントローラー101は、取得したタスク103のタスク終了処理OnSubtaskEnd(S903)を呼び出す。タスク終了処理OnSubtaskEnd(S903)では、タスク103の基底クラスであるTaskBase抽象クラスのOnSubtaskEndメソッドが呼び出される(図11BのOnSubtaskEndメソッド1113参照)。
タスク103は、図11Bの1117に示すように、自身が保持しているサブタスクカウンターの値を1減算し、タスク103が実装しているTaskBaseクラスの抽象メソッドOnSubtaskEndメソッド(S904)を呼び出す。図11Bの1117に示すように、このOnSubtaskEndメソッド(S904)はサブタスクの実行結果と論理値を引数とする。第2引数である論理値には、サブタスクカウンターの値を1減算した結果が0か否かが渡される。つまり、減算した結果が0である場合には理論値として真が渡され、0でない場合には偽が渡される。この論理値が真である場合、タスク103がサブタスクキューに追加した全てのサブタスク定義の実行が終了したことを意味する。
タスク103は、サブタスク終了処理OnSubtaskEndメソッド(S904)にて、サブタスクの実行結果に基づき適当な処理を行う。その後、S905にて、タスク103の実行が完了した場合は真を、タスク103の実行が完了していない場合は偽をタスクコントローラー101に返す。ここで真が返された場合は、タスクコントローラー101は、タスク管理マップからタスク103を削除する。つまり、図11Aに示すRemoveメソッド1104が呼び出され、タスクコントローラー101は、図4のS402にて追加したtaskIdとタスク103への参照をタスク管理マップから削除する。なお、S902及びS901の処理は、処理結果を呼び出し側に返さない(返り値は無し)。
以上、本実施形態により、タスクから生成された複数のサブタスクを複数のサブタスクキューを用いて処理する際に、効率的に処理を行うことが可能となる。
<第二の実施形態>
本願発明に係る第二の実施形態について説明する。第二の実施形態における全体の構成は第一の実施形態と同じであるため、詳細な説明は省略する。また、以下、第一の実施形態と同じ構成物、同じステップについては同じ符号を用いることとする。
第二の実施形態は、第一の実施形態のタスクコントローラー101に、実行中のタスクを停止する手段を追加する。
タスクコントローラー101に、図11D(a)に示すような、実行中のタスクを停止(キャンセル)するためのCancelメソッド1131と、実行中のタスクが停止を指示されたか否かを返すためのIsCancelingメソッド1132を追加する。
ここで、Cancelメソッド1131、およびIsCancelingメソッド1132の引数であるtaskIdは、Startメソッド1101の第1引数で指定した、タスクを一意に識別するための文字列である。実行中のタスクのキャンセル状態の情報を格納するために、図11D(b)に示すようなクラスの構成とする。図11D(b)に示すように、タスク管理マップのtaskIdをキーにして格納される実行中のタスクの情報は、タスクへの参照(Task1133)と実行状態(Status1134)を含む。
タスクコントローラー101は、Startメソッド1101の呼び出し時にタスクをタスク管理マップへ登録する際、タスクの実行状態としてStatus1134に“Running”を設定する。また、タスクコントローラー101は、図11D(a)に示すCancelメソッド1131が呼び出されると、引数として指定されたtaskIdをキーにしてタスク管理マップから実行中のタスクに関する情報を取り出す。そして、タスクコントローラー101は、そのタスクのStatus1134を“Canceling”に変更する。Status1134が取りうる値は、1135にて定義されている。
タスクコントローラー101は、図11D(a)に示すIsCancelingメソッド1132が呼び出されると、引数として指定されたtaskIdをキーにしてタスク管理マップから実行中のタスクに関する情報を取り出す。そして、タスクコントローラー101は、Status1134が“Canceling”であるか否かを返す。Status1134が“Canceling”である場合には真が返され、Status1134が“Running”である場合には偽が返される。
また、図11C(c)に示すサブタスク実行結果を格納するクラスSubtaskResultの実行結果の状態を示す属性(Status1128)の取り得る値として、成功、エラー終了、例外による終了に加えて、キャンセルを追加する。
(サブタスク実行処理)
図10は、タスクの実行のキャンセルを実現するために拡張された、図7の個別のスレッドで実行されるサブタスク実行処理112の処理の流れを示すフローチャートである。以下、図7と異なる部分のみを説明する。
サブタスクキューからサブタスクがデキューできた場合(S702にてYES)、S1001にて、サブタスクコントローラー102は、S701でサブタスクキューから取得したサブタスク定義データを作成したタスクの状態がキャンセルであるか否かを判定する。判定は、タスクコントローラー101のIsCancelingメソッド1132を呼び出すことにより行う。判定の結果、タスクの状態がキャンセルでない場合(S1001にてNO)、S703に遷移し、サブタスクコントローラー102は、サブタスクの実行を継続する。タスクの状態がキャンセルの場合(S1001にてYES)、S1002に遷移する。
S1002にて、サブタスクコントローラー102は、タスクの実行結果の状態がキャンセルである実行結果を作成する。その後、S705に遷移し、サブタスクコントローラー102は、S1002にて作成した実行結果を渡す。この処理により、キャンセルされたタスクがエンキューしたサブタスク定義データは、サブタスクキューよりデキューされた後、そのサブタスク定義データ内にて定義された処理は実行されることなく実行結果(キャンセル)のみが通知される。ここでの通知の流れは、図9に示した通りである。
以上、本実施形態により、第一の実施形態の効果に加え、キャンセルされたタスクによりエンキューされたサブタスク(サブタスク定義データ)は実行されることなく、処理を効率的に進めることができる。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピューターにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101…タスクコントローラー、102…サブタスクコントローラー、103…タスク、106…サブタスクキュー、201…ホストコンピューター

Claims (9)

  1. 数のタスクの実行を制御する第一のコントローラーと、
    前記第一のコントローラーにて動作する1のタスクから生成される1または複数のサブタスクが登録される複数のキューであって、第一のキューと、前記第一のキューよりも優先度の低い第二のキューとを含む複数のキューと、
    前記複数のキューに登録されたサブタスクを取得し、スレッドを作成して当該取得したサブタスクを実行させる第二のコントローラーと、
    を備える情報処理システムであって
    前記複数のキューそれぞれは、自身に登録されたサブタスクのうち同時に実行されるサブタスクの数の上限値が定義され、
    前記第二のコントローラーは、
    前記情報処理システムにて同時に実行されるサブタスクの数に対する閾値を管理し、
    前記情報処理システムにて実行中のサブタスクの数が前記閾値を超えない場合には、前記複数のキューのいずれかからサブタスクを取得し、スレッドを新たに作成して当該取得したサブタスクを実行させ、
    前記情報処理システムにて実行中のサブタスクの数が前記閾値を超える場合には、スレッドを新たに作成せず、
    記第一のキューに登録されたサブタスクのうち実行中のサブタスクの数が前記第一のキューに対して定義された上限値よりも少ない場合、前記情報処理システムにて実行中のサブタスクの数が前記閾値を超えているか否かに関わらず、前記第一のキューに登録されているサブタスクを取得し、スレッドを新たに作成して当該取得したサブタスクを実行させることを特徴とする情報処理システム
  2. サブタスクは、定義された処理内容に応じて、優先度の異なる前記複数のキューのいずれかに登録されることを特徴とする請求項1に記載の情報処理システム
  3. 前記複数のキューそれぞれは、登録されたサブタスクのうち実行中のサブタスクの数が管理され、
    実行中のサブタスクの数は、サブタスクに対するスレッドが新たに作成された際に増加され、当該スレッドによる当該サブタスクの実行が完了した際に減らされることを特徴とする請求項1または2に記載の情報処理システム
  4. 前記第二のコントローラーは、スレッドによるサブタスクの実行が完了した際に、前記第一のコントローラーへ実行結果を通知することを特徴とする請求項1乃至3のいずれか一項に記載の情報処理システム
  5. 前記第二のコントローラーは、前記第一のコントローラーによりタスクがキャンセルされた場合、当該キャンセルされたタスクから生成されたサブタスクにて定義された処理内容を実行することなく、キャンセルである旨を実行結果として当該サブタスクの実行を完了することを特徴とする請求項1乃至4のいずれか一項に記載の情報処理システム
  6. 前記第二のコントローラーは、当該第二のコントローラーの起動時における前記情報処理システムの機能及び状態に応じて、前記閾値、および、前記複数のキューそれぞれに対する前記上限値を決定することを特徴とする請求項1乃至5のいずれか一項に記載の情報処理システム
  7. 前記第二のコントローラーは、前記第一のキューに登録されたサブタスクに対する処理を行った後、キューの優先度が高い順に、その他のキューに登録されたサブタスクに対する処理を行うことを特徴とする請求項1乃至6のいずれか一項に記載の情報処理システム
  8. 複数のタスクの実行を制御する第一のコントローラーと、
    前記第一のコントローラーにて動作する1のタスクから生成される1または複数のサブタスクが登録される複数のキューであって、第一のキューと、前記第一のキューよりも優先度の低い第二のキューとを含む複数のキューと、
    前記複数のキューに登録されたサブタスクを取得し、スレッドを作成して当該取得したサブタスクを実行させる第二のコントローラーと、
    を備える情報処理システムの制御方法であって、
    前記複数のキューそれぞれは、自身に登録されたサブタスクのうち同時に実行されるサブタスクの数の上限値が定義され、
    前記第二のコントローラーにおいて、
    前記情報処理システムにて同時に実行されるサブタスクの数に対する閾値を管理し、
    前記情報処理システムにて実行中のサブタスクの数が前記閾値を超えない場合には、前記複数のキューのいずれかからサブタスクを取得し、スレッドを新たに作成して当該取得したサブタスクを実行させ、
    前記情報処理システムにて実行中のサブタスクの数が前記閾値を超える場合には、スレッドを新たに作成せず、
    記第一のキューに登録されたサブタスクのうち実行中のサブタスクの数が前記第一のキューに対して定義された上限値よりも少ない場合、前記情報処理システムにて実行中のサブタスクの数が前記閾値を超えているか否かに関わらず、前記第一のキューに登録されているサブタスクを取得し、スレッドを新たに作成して当該取得したサブタスクを実行させることを特徴とする御方法。
  9. コンピューターを、
    複数のタスクの実行を制御する一のコントローラーにて動作する1のタスクから生成される1または複数のサブタスクが登録される数のキューに登録されたサブタスクを取得し、スレッドを作成して当該取得したサブタスクを実行させる第二のコントローラーして機能させ、
    前記複数のキューは、第一のキューと、前記第一のキューよりも優先度の低い第二のキューと、を含み、
    前記複数のキューそれぞれは、自身に登録されたサブタスクのうち同時に実行されるサブタスクの数の上限値が定義され、
    前記第二のコントローラーは、
    前記コンピューターにて同時に実行されるサブタスクの数に対する閾値を管理し、
    前記コンピューターにて実行中のサブタスクの数が前記閾値を超えない場合には、前記複数のキューのいずれかからサブタスクを取得し、スレッドを新たに作成して当該取得したサブタスクを実行させ、
    前記コンピューターにて実行中のサブタスクの数が前記閾値を超える場合には、スレッドを新たに作成せず、
    記第一のキューに登録されたサブタスクのうち実行中のサブタスクの数が前記第一のキューに対して定義された上限値よりも少ない場合、前記コンピューターにて実行中のサブタスクの数が前記閾値を超えているか否かに関わらず、前記第一のキューに登録されているサブタスクを取得し、スレッドを新たに作成して当該取得したサブタスクを実行させることを特徴とするプログラム。
JP2015215694A 2015-11-02 2015-11-02 情報処理システムおよびその制御方法、並びにプログラム Active JP6532385B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2015215694A JP6532385B2 (ja) 2015-11-02 2015-11-02 情報処理システムおよびその制御方法、並びにプログラム
CN201610921235.3A CN106648850B (zh) 2015-11-02 2016-10-20 信息处理装置及其控制方法
US15/334,744 US10203985B2 (en) 2015-11-02 2016-10-26 Information processing apparatus, method and non-transitory computer-readable medium for managing a number of concurrently executing subtasks based on a threshold and priorities of subtask queues
KR1020160144319A KR102062945B1 (ko) 2015-11-02 2016-11-01 정보 처리 장치 및 그의 제어 방법, 및 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015215694A JP6532385B2 (ja) 2015-11-02 2015-11-02 情報処理システムおよびその制御方法、並びにプログラム

Publications (3)

Publication Number Publication Date
JP2017090961A JP2017090961A (ja) 2017-05-25
JP2017090961A5 JP2017090961A5 (ja) 2018-11-29
JP6532385B2 true JP6532385B2 (ja) 2019-06-19

Family

ID=58634654

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015215694A Active JP6532385B2 (ja) 2015-11-02 2015-11-02 情報処理システムおよびその制御方法、並びにプログラム

Country Status (4)

Country Link
US (1) US10203985B2 (ja)
JP (1) JP6532385B2 (ja)
KR (1) KR102062945B1 (ja)
CN (1) CN106648850B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106990946A (zh) * 2016-01-21 2017-07-28 阿里巴巴集团控股有限公司 一种界面处理方法、装置和智能终端
CN108279977B (zh) * 2017-12-29 2021-12-10 深圳市德兰明海科技有限公司 一种基于rtos的数据处理方法、装置和控制器
CN109992382B (zh) * 2017-12-29 2021-06-01 浙江宇视科技有限公司 任务调度方法、装置及任务调度器
CN109146393B (zh) * 2018-06-09 2024-02-02 安行惠保(北京)科技发展有限公司 人伤查勘信息处理方法及系统
US10491668B1 (en) * 2018-07-03 2019-11-26 EMC IP Holding Company LLC Intelligent service distributor and controller with real time service calibration
JP7251182B2 (ja) * 2019-02-06 2023-04-04 日本電気株式会社 制御装置、処理装置の制御方法及びプログラム
JP7197794B2 (ja) 2019-03-28 2022-12-28 富士通株式会社 情報処理装置および実行制御プログラム
CN110362401A (zh) * 2019-06-20 2019-10-22 深圳壹账通智能科技有限公司 数据跑批方法、装置、存储介质及集群中的成员主机
JP7353836B2 (ja) * 2019-07-16 2023-10-02 キヤノン株式会社 情報処理装置、方法およびプログラム
US11079984B2 (en) * 2019-09-30 2021-08-03 Ricoh Company, Ltd. Image processing mechanism
CN115378142B (zh) * 2022-10-20 2023-01-31 安徽华速达电子科技有限公司 一种基于mqtt通讯方式电力负荷监测方法及系统

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3231101B2 (ja) 1992-10-28 2001-11-19 株式会社日立製作所 タスクキュー管理方法
US5940612A (en) * 1995-09-27 1999-08-17 International Business Machines Corporation System and method for queuing of tasks in a multiprocessing system
US6671065B1 (en) * 1999-11-29 2003-12-30 Xerox Corporation Method and apparatus to optimize transition of resources from a lower priority to a higher priority job
US6748593B1 (en) * 2000-02-17 2004-06-08 International Business Machines Corporation Apparatus and method for starvation load balancing using a global run queue in a multiple run queue system
JP2003054451A (ja) 2001-08-13 2003-02-26 Exedy Corp タイヤハウス
JP3828444B2 (ja) * 2002-03-26 2006-10-04 株式会社日立製作所 データ通信中継装置及びシステム
US7657889B2 (en) * 2004-04-06 2010-02-02 International Business Machines Corporation Method, system, and storage medium for searching multiple queues for prioritized work elements
JP4953753B2 (ja) 2006-10-17 2012-06-13 キヤノン株式会社 情報処理装置及びその制御方法、プログラム
US8312464B2 (en) * 2007-08-28 2012-11-13 International Business Machines Corporation Hardware based dynamic load balancing of message passing interface tasks by modifying tasks
US8209702B1 (en) * 2007-09-27 2012-06-26 Emc Corporation Task execution using multiple pools of processing threads, each pool dedicated to execute different types of sub-tasks
JP2011164876A (ja) 2010-02-09 2011-08-25 Canon Inc タスク処理装置、タスク処理方法、及び、プログラム
JP5521610B2 (ja) 2010-02-15 2014-06-18 日本電気株式会社 入出力制御装置、入出力制御方法
KR101311305B1 (ko) 2011-08-26 2013-09-25 국방과학연구소 데드라인 기반 우선순위상속 시스템 및 그 방법
JP5672199B2 (ja) 2011-09-01 2015-02-18 富士通株式会社 情報処理装置、情報処理方法及び情報処理プログラム
US20130081033A1 (en) * 2011-09-23 2013-03-28 Elwha Llc Configuring interface devices with respect to tasks and subtasks
US20160069919A1 (en) * 2011-09-25 2016-03-10 Theranos, Inc. Systems and methods for multi-analysis
CN102508704A (zh) * 2011-11-10 2012-06-20 上海市共进通信技术有限公司 计算机软件系统中实现任务分解和并行处理控制的方法
CN102591721A (zh) * 2011-12-30 2012-07-18 北京新媒传信科技有限公司 一种分配线程执行任务的方法和系统
US8621479B2 (en) * 2012-01-05 2013-12-31 The Boeing Company System and method for selecting task allocation method based on load balancing and core affinity metrics
CN102546946B (zh) * 2012-01-05 2014-04-23 中国联合网络通信集团有限公司 移动终端处理任务的方法及装置
US8930584B2 (en) * 2012-08-09 2015-01-06 Oracle International Corporation System and method for providing a linearizable request manager
US9189272B2 (en) * 2012-08-29 2015-11-17 Fujitsu Limited Information processing apparatus, computer program, and method for controlling execution of jobs
US10095526B2 (en) * 2012-10-12 2018-10-09 Nvidia Corporation Technique for improving performance in multi-threaded processing units
US20150205633A1 (en) * 2013-05-24 2015-07-23 Google Inc. Task management in single-threaded environments
JP6245700B2 (ja) * 2014-04-11 2017-12-13 国立大学法人 東京大学 計算機システム、データの検査方法及び計算機
CN104731663B (zh) * 2015-03-31 2018-04-13 北京奇艺世纪科技有限公司 任务处理方法及系统
US20170293606A1 (en) * 2016-04-06 2017-10-12 Gang Xu Methods and systems for optimized selection of data features for a neuro-linguistic cognitive artifical intelligence system

Also Published As

Publication number Publication date
JP2017090961A (ja) 2017-05-25
US20170123850A1 (en) 2017-05-04
CN106648850A (zh) 2017-05-10
KR20170051360A (ko) 2017-05-11
CN106648850B (zh) 2020-11-10
US10203985B2 (en) 2019-02-12
KR102062945B1 (ko) 2020-01-06

Similar Documents

Publication Publication Date Title
JP6532385B2 (ja) 情報処理システムおよびその制御方法、並びにプログラム
CN109155782B (zh) 容器之间的进程间通信
JP5627187B2 (ja) 情報処理装置、情報処理方法及びプログラム
US9141422B2 (en) Plug-in task scheduler
US10853114B2 (en) Systems and methods for executing software robot computer programs on virtual machines
US8881161B1 (en) Operating system with hardware-enabled task manager for offloading CPU task scheduling
US9342369B2 (en) System and method for increasing throughput of a PaaS system
JP2013537340A (ja) ポータブルコンピューティングデバイスのリソースを管理するためのシステムおよび方法
US20180276021A1 (en) Information processing system, autoscaling association apparatus, and non-transitory computer readable medium
US9038081B2 (en) Computing job management based on priority and quota
US11347724B2 (en) System and method of allocation and centralized transaction handling across multiple micro service clients
US8972997B2 (en) Work item processing in distributed applications
US20220291907A1 (en) Compiling monoglot function compositions into a single entity
JP2018513460A (ja) 制限されたサービスインスタンスへのアクセスを要求する方法およびシステム
US10642580B1 (en) Simplifying and reusing visual programming graphs
CN114443181A (zh) 一种业务处理方法、应用生成方法、服务器、装置及设备
KR101448861B1 (ko) 동기적 메시지 기반 대량 병렬처리 시스템
US20170075736A1 (en) Rule engine for application servers
US10678515B1 (en) Simplifying and reusing visual programming graphs
US8051141B2 (en) Controlled storage utilization
US11593222B2 (en) Method and system for multi-pronged backup using real-time attributes
JP5818264B2 (ja) 計算機システム及びジョブネット実行方法
CN114416372A (zh) 一种请求处理方法及装置
JP2017033208A (ja) 通常部の故障が安全部へ伝播することを防止するapi及びその処理部
CN111209107A (zh) 多集群操作方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181018

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181018

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190327

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190423

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190521

R151 Written notification of patent or utility model registration

Ref document number: 6532385

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151