JP2021015544A - 情報処理装置、方法およびプログラム - Google Patents

情報処理装置、方法およびプログラム Download PDF

Info

Publication number
JP2021015544A
JP2021015544A JP2019131059A JP2019131059A JP2021015544A JP 2021015544 A JP2021015544 A JP 2021015544A JP 2019131059 A JP2019131059 A JP 2019131059A JP 2019131059 A JP2019131059 A JP 2019131059A JP 2021015544 A JP2021015544 A JP 2021015544A
Authority
JP
Japan
Prior art keywords
manager
threads
agent
threshold value
information processing
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.)
Granted
Application number
JP2019131059A
Other languages
English (en)
Other versions
JP7353836B2 (ja
Inventor
中澤 紀之
Noriyuki Nakazawa
紀之 中澤
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 JP2019131059A priority Critical patent/JP7353836B2/ja
Priority to US16/926,152 priority patent/US11500676B2/en
Publication of JP2021015544A publication Critical patent/JP2021015544A/ja
Application granted granted Critical
Publication of JP7353836B2 publication Critical patent/JP7353836B2/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
    • 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/5083Techniques for rebalancing the load in a distributed system
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 マネージャ/エージェントシステムで、マネージャのためのリソースを動的に調整できない場合に、マネージャが高負荷状態になるとそのパフォーマンスが著しく劣化してしまう。【解決手段】 エージェントは、マネージャとの通信から求めた応答時間を管理し、スレッド数の閾値以下の複数のスレッドによりマネージャからの指示に従う処理を実行し、前記実行された処理の結果を示すデータをマネージャに送信し、エージェントとマネージャとの間で行われた複数回の通信に対応する応答時間の変化に基づき前記閾値を減らすように調整することを特徴とする。【選択図】 図6

Description

本発明は、マネージャ/エージェントシステムにおける、マネージャの負荷の調整のための技術に関する。
従来から複数台の機器を管理するために、マネージャとしての管理装置と、マネージャと連携するエージェントとしての中継装置とを含むシステム(マネージャ/エージェントシステムと呼ぶ)が存在する。
例えば、特許文献1では、マネージャ/エージェントシステムの開示があり、複数台のエージェントを設置する例が開示されている。エージェントとしての中継装置は、中継装置が所属するネットワーク上のネットワークデバイスを探索して、発見した場合には、管理システムにその機器情報を通知するためのリクエストを生成して送信するための機能をもつ。また、中継装置は、ネットワークデバイスから収集した稼働情報を、管理システムに通知するためのリクエストを生成して送信するための機能をもっている。
ほかにも、マネージャ/エージェントシステムでは、マネージャがエージェントに対して処理内容を指示し、エージェントはその指示に従って処理を行い、処理結果をマネージャに通知するように構成されている。
マネージャの管理対象のデバイスの台数などに起因して、エージェントからのリクエストや通知が非常に多い場合には、マネージャの処理負荷が高まり、当初の処理能力を超えるようなケースが発生し得る。特許文献1では、管理システムにおいてリクエスト量や処理負荷を監視して、そのリクエスト処理のためにリソース量(仮想マシンの台数など)の増やすように自動調整する(オートスケール)機能が開示されている。
特開2016−115333号公報
ここで、マネージャ/エージェントシステムを利用できるリソースに制限がある環境に構築する場合がある。そういった環境では、特許文献1に記載のように、マネージャのためのPCリソース(仮想マシンの台数など)を追加するといった調整ができない。リソースを調整できないままマネージャがその処理能力を超えるような高負荷状態になってしまうと、マネージャのパフォーマンスが著しく劣化してしまい、復旧することが困難になる場合がある。
そこで、本発明は、そのような環境において、マネージャが高負荷状態となることを抑制するための仕組みを提供することを目的とする。
マネージャから指示に従う処理を実行するエージェントが動作する情報処理装置であって、前記エージェントのデータの送信と前記マネージャからの応答とを含む通信から求めた応答時間を管理する管理手段と、スレッド数の第1閾値以下の複数のスレッドにより、前記指示に従う処理を実行する実行手段と、前記実行された処理の結果を示すデータを、前記マネージャに送信する送信手段と、前記エージェントと前記マネージャとの間で行われた複数回の通信に対応する応答時間の変化に基づき、前記第1閾値を減らすように調整する調整手段と、を有することを特徴とする。
本発明によれば、そのような環境において、マネージャが高負荷状態となることを抑制するための仕組みを提供できる。
ネットワークシステム全体の構成図 情報処理装置のハードウェア構成の一例を示すブロック図 マネージャおよびエージェントでの処理を説明するための概念図を示す。 サブタスク実行処理を説明するためのフローチャート Aはエージェントがマネージャにデータを送信する際の処理を説明するためのフローチャート。Bはデータ送信に際して実行される管理処理を説明するためのフローチャート エージェントでの調整処理を説明するためのフローチャート 調整処理で行われるスレッド数の調整についての処理を説明するためのフローチャート 図6で示す処理の変形例を説明するためのフローチャート 実施例2におけるエージェントのタスク実行部の詳細を示す図
(実施例1)
以下、本発明を実施するための形態について図面を用いて説明する。
図1は、マネージャ/エージェントシステムが含まれるネットワークシステムの全体の構成の一例を示す図である。
ネットワークシステムは、1つの管理サーバー(以下「マネージャ」と記す)101と、複数のエージェント装置(以下「エージェント」記す)102及び103より構成され、ネットワークデバイス(以下「デバイス」と記す)104から107を管理する。マネージャ101、エージェント102及び103、デバイス104から107とは、ネットワーク108により相互に接続されている。
マネージャ101は、情報処理装置でデバイス管理アプリケーションをインストールすることで実現される装置である。エージェントは、情報処理装置でデバイスエージェントアプリケーションをインストールすることで実現される装置である。
ここで、例えば、エージェント102はデバイス104及び105を監視対象とし、エージェント103はデバイス106及び107を監視対象とする。そして、以降では、エージェントの代表として102を、デバイスの代表として104を用いて、具体的な実施例について説明を行う。
マネージャ101は、エージェント102に対して、デバイス104に対する操作を指示する。エージェント102は、前記指示に従いデバイス104に対して要求を送信する等の操作を行い、結果をマネージャ101に送信する。操作の例としては、デバイス104からの機器情報、稼働情報の取得がある。ほかにも、デバイス104の設定値の変更、デバイス104へのアプリケーションのインストール指示等がある。図では、エージェントが2台、管理対象のデバイスは4台となっているが、数万台のデバイスを十数台のエージェントを介して管理する場合であっても、構成や動作は、本実施例の説明と同様である。
図2は、マネージャ101やエージェント102及び103が動作する情報処理装置のハードウェア構成の一例を示すブロック図である。
図2に示すように、情報処理装置は、CPU201、RAM202、ROM203、外部記憶装置207を備える。CPU201は、ROM203や外部記憶装置207に記憶された、或いはネットワーク210よりダウンロードしたソフトウェア(プログラム)を必要に応じてRAM202にロードして実行し、システムバス209に接続された各デバイスを総括的に制御する。
RAM202は、CPU201の主メモリあるいはワークエリアなどとして機能する。外部記憶装置207はハードディスク(HD)やソリッドステートドライブ(SSD)等からなる。外部記憶装置207は、ブートプログラム、オペレーティングシステム(OS)、認証サーバ、認証クライアント等を含む各種のアプリケーション、データベースデータ、ユーザファイル等を記憶する。前述した通り、本発明を実現するために、マネージャ101としての情報処理装置のCPU201はデバイス管理アプリケーションプログラムを実行する。また、本発明を実現するために、エージェント102及び103としての情報処理装置のCPU201はエージェントアプリケーションプログラムを実行する。
KBDC204は、キーボードコントローラーであり、不図示のキーボードやポインティングデバイス等の入力装置からの入力情報をCPU201に送る。VC205は、ビデオコントローラーであり、LCD等からなる表示装置の表示を制御する。DC206は、ディスクコントローラーであり、外部記憶装置207とのアクセスを制御する。NIC208は、通信コントローラーであり、これを介して情報処理装置はネットワーク210に接続する。
図3は、マネージャ101およびエージェント102での処理を説明するための概念図を示す。本概念図では、ソフトウェアモジュールの構成とその処理の単位を示すブロック図となっている。
HTTP/HTTPSサーバ301は、HTTPまたはHTTPSでマネージャ101からの指示を含むリクエストを受け取り、エージェント102内の各種機能を呼び出す。さらに、そのリクエストを受け付けたことをマネージャ101に応答する。
タスク実行部302は、マネージャ101からの指示に従って、指示の対象となる1以上のデバイスに対して指定された処理(タスク)を実行する。タスクを実行する場合には、タスク実行部302は、該タスクを対象となったデバイス104、105の処理単位(以下「サブタスク」と記す)に分割するタスク分割処理303を実行する。これは、タスクで指定された処理内容を複数のデバイスに対して並行処理するための処理である。
タスク実行部302は、さらに、分割された複数のサブタスクをキューで管理するサブタスク管理処理304と、サブタスク管理処理304で管理するキュー内のサブタスクを取り出し実行するサブタスク実行処理305とを実行する。サブタスク管理処理304において、キューで管理されるサブタスクは、タスクの種類には依存しない。例えば、デバイスから情報を取得するタスクに基づくサブタスクも、デバイスに指定された値を設定するタスクに基づくサブタスクも、区別なく管理する。
タスク実行部302では、サブタスク実行処理305において、キューから取り出しサブタスクの内容に従って、そのサブタスクを処理可能なクラスのインスタンスが動的に作成される。タスク実行部302は、この作成されたインスタンスに、サブタスクの処理を委譲することで、サブタスクの内容に依存しないで、サブタスクの処理を実現する。また、タスク実行部302は、サブタスク実行処理305において、複数のスレッドを用いて、並行(または、ほぼ同時)に複数のサブタスクのキューからの取り出しと、その実行を実現する。
306はデータ送信部であり、エージェント102からマネージャ101に対して、データを送信する。ここでデータは、例えば、サブタスク実行処理305で実行されたサブタスクの実行結果である。データ送信部306は、送信すべきデータをキューで管理する送信管理処理307と、データをマネージャ101に送信するデータ送信処理308を実行する。送信管理処理307で用いるキューは、サブタスク管理処理304で用いるキューとは異なるものである。
データ送信処理308では、キューからデータを取り出し、取り出したデータをマネージャ101に送信する。データ送信処理308では、複数のスレッドでデータの取り出しとマネージャ101への送信を、並行して処理可能である。
309は調整部であり、データ送信処理308でマネージャ101にデータを送信した際のマネージャ101からの応答時間の統計情報を管理する。さらに、調整部309は、統計情報を利用して、サブタスク実行処理305でのスレッドの数や、データ送信処理308でのスレッドの数が自動で調整されるような制御を実現する。
図4は、図3を用いて説明したサブタスク実行処理305内の詳細を説明するためのフローチャートを示している。タスク実行部302は、サブタスク実行処理305において、複数のスレッドを作成し、作成された複数のスレッドはそれぞれが図4の処理を並行して実行する。
まず、S401で、現在実行中のサブタスク実行スレッドの数と、スレッドの最大数(第1閾値)との比較を行う。ここで、実行中のスレッドの数は、本処理を実行しているスレッドを含む。実行中のスレッドの数が第1閾値を超える場合、本処理を実行しているスレッドは図4で示す処理を中断して、終了する。この終了に伴い、処理を中断したスレッドは破棄される。ここで、第1閾値は調整部309により調整され、S401の判定によりエージェント102上でサブタスクの処理のために起動されるスレッドの数の調整が実現される。起動されたスレッドが実際にサブタスクを処理する前に破棄された場合には、少なくとも該スレッドによるマネージャ101に対する通信(処理結果の送信、など)が抑制されることになる。
一方で、S401で、実行中のスレッドの数が第1閾値以下の場合、サブタスク実行スレッドは、S402で、キューで管理されるサブタスクを1つ取得する。S403でサブタスクが取得できたか否かを判定する。サブタスクの取得に失敗した、即ち、サブタスク管理処理304で用いるキューにサブタスクが存在しない場合、サブタスク実行スレッドは処理を終了する。この場合も、本処理を実行しているスレッドが破棄される。
S403でサブタスクの取得に成功した場合、サブタスク実行スレッドは、S404で、取り出したサブタスクを実行する。ここでは、図3の説明で前述した通り、サブタスクを処理可能なクラスのインスタンスが動的に作成され、サブタスク内の処理内容が実行される。その後、サブタスク実行スレッドは、その実行結果を受け取る。
S405で、最後にサブタスク実行スレッドは、サブタスクの実行結果をマネージャ101に送信するように、図3のデータ送信部302に依頼し、S401に戻る。
その後、サブタスク実行スレッドは、スレッド数が第1閾値を超えず、キューにサブタスクが存在する限り、上記処理を繰り返す。
サブタスク管理処理304においてキューにサブタスクが追加された場合、及び、調整部309の処理により前述した第1閾値が増加した場合、タスク実行部302は、サブタスク実行スレッドを追加で起動する。
図5Aは、データ送信部306による、マネージャ101にデータを送信する際の処理(データ送信処理308)を説明するためのフローチャートを示す。以下のステップの処理の主体はデータ送信部306である。このデータ送信のための本処理は、送信すべきデータ(及び、URLパスやデータタイプ等の関連情報)と共に呼び出される。
S501で、本処理の開始、つまりデータ送信の開始からマネージャ101からの応答を受け取るまでの時間(以下「応答時間」と記す)を計測するための処理が開始される。
データ送信部306は、S502で送信すべきデータをマネージャ101に送信し、S503でマネージャ101からの応答を受信する。S504で、応答時間の計測を終了し、データの送信に要した応答時間を記憶する。
S505で、データ送信部306は、マネージャ101からの応答の内容を検査する。応答がない、或いは、データの受信に失敗した旨の応答であった場合、本送信処理は処理を終了する。一方で、マネージャ101によるデータの受信が成功した旨の応答であった場合にはS506に遷移する。
S506で、データ送信部306は、S502で送信したデータのサイズをサイズ閾値と比較し、データのサイズがサイズ閾値を超える場合には、本送信処理を終了する。ここでサイズ閾値は、例えば、10キロバイト等の小さな値である。この処理により、応答時間にデータの転送時間が占める割合が多い計測結果が除外されることになる。
S507で、データ送信部306は、計測結果としての応答時間を、調整部309に通知して、処理を終了する。
図5Bは、データ送信部306による送信管理処理307を説明するためのフローチャートを示す。図5Aを用いて説明したデータ送信処理308は、複数のスレッドを用いて並行して実行される。本管理処理はデータ送信のために起動されるスレッド数を管理するための処理であり、以降の処理は、データ送信のために起動されたそれぞれのスレッド(データ送信スレッド)によって実行されることになる。
S510で、現在実行中のデータ送信スレッドの数と、データ送信のために利用可能なスレッドの最大数(第2閾値)との比較を行う。ここで、実行中のデータ送信スレッドの数には、本処理のために起動されたスレッドが含まれる。実行中のデータ送信スレッドの数が閾値を超える場合、本処理のために起動されたスレッドは本管理処理を終了する。処理の終了に伴い、該スレッドは破棄される。この処理により、破棄されたスレッドで想定されたマネージャ101に対する通信(処理結果の送信、など)が抑制されることになる。
ここで、サブタスク実行のためのスレッドの数の調整のための第1閾値と、本処理におけるデータ送信のためのスレッドの数の調整のための第2閾値とは、それぞれ別に管理されている。
S510で、実行中のデータ送信スレッドの数が閾値以下と判定された場合、S511で、送信管理処理307で用いるキューからデータを取得する。キュー内のデータは、例えば、S405で依頼された実行結果を示すデータである。S512で、キューからデータの取得に成功したか否かを判定し、取得に失敗した、即ち、キューにデータが存在しない場合、データ送信スレッドは処理を終了する。その場合には該スレッドは破棄される。キューからデータの取得に成功した場合にはS513に進む。
S513で、S511で取得したデータを用いて、図5Aの送信処理を呼び出す。これにより、マネージャ101にS511で取得したデータが送信される。さらに、データ送信スレッドは、このデータ送信による送信結果を受け取る。
S514で、送信結果からデータの再送信の要否を判断する。例えば、マネージャ101からの応答がない場合は再送信が必要、データの送信に成功した場合やマネージャ101がデータの受信を拒否した場合には再送信は不要である。再送信が不要と判断された場合には、S510に戻り、処理を続ける。一方で、再送信が必要と判断された場合、データ送信スレッドは、S515で、S511で取得したデータを送信管理処理307で用いるキューに再度、追加し、S510に遷移する。
データ送信スレッドは、スレッド数が第2閾値を超えず、キューにデータが存在する限り、上記処理を繰り返す。キューにデータが追加された場合、及び、調整部309によりデータ送信のためのスレッド数の第2閾値が増加した場合には、データ送信部306はデータ送信スレッドを追加で起動する。
図6は、図3の調整部309が実行する調整処理を説明するためのフローチャートを示す。この処理は、図5AのS507での通知に従い呼び出される。調整処理は、この通知に含まれるマネージャ101へのデータ送信における応答時間が利用される。調整部309は、データ送信部306から応答時間が通知されるたびに、その応答時間をリストで管理する。このリストを参照することにより、調整部309が、応答時間がどのように変化しているかを検証することが可能となる。
S601で、調整部309は、通知されてきた応答時間を、1つの要素としてリストに記録する。
S602で、調整部309は、リスト内の要素の数が、規定数以上であるかを判定する。規定数を超えない場合には本調整処理は終了する。リスト内の要素数が規定数以上の場合にはS603に進む。S603で、調整部309は、リスト内の複数の要素で示す各応答時間から、それらの中間値を計算し、S604でリストを空にする。
ここで規定数は、例えば50や100などの固定値があらかじめ設定できる。つまり、S603は、例えば、データ送信部306から50回の通知を受け取るたびに実行され、その50回の通知に含まれる応答時間の中間値が計算されることになる。ここで、本実施例において、平均値ではなく中間値を採用するのは、応答時間の分布が正規分布ではないからである。
S605で、調整部309は、それまでに調整処理が実行されることにより、すでに前回の処理における中間値が設定されているか否かを判定する。設定済みの場合にはS606に遷移して、設定されていない場合にはS608に遷移する。
S606で、調整部309は、スレッド数を変化させる値を決定する。ここで決定された値は、スレッドを増加させるのか、減らすのかも識別できる情報である。例えば、前回中間値に比較してS603で計算した中間値が大きい場合、すなわち、マネージャ101からの応答が遅くなってきているケースでは、エージェントのスレッド数を減少させるように値が決定される。また、前回中間値に比較してS603で計算した中間値が小さい場合には、スレッド数を増加させるように値が決定される。S607で、調整部309は、S606で決定した値を引き渡して、スレッド数の調整処理(図7)を呼び出す。
S608で、調整部309は、S603で計算した中間値を、前回中間値として設定して、その後、本調整処理を終了する。
図7は、図6のS607により呼び出される、調整部309が実行するスレッド数の調整処理を説明するためのフローチャートを示す。
ここで、調整対象となるスレッドは、サブタスク実行処理305で利用されるサブタスク実行スレッドと、データ送信処理308で利用されるデータ送信スレッドとである。前述のS607による1度の呼び出しに応じて、サブタスク実行スレッドおよびデータ送信スレッドのそれぞれのために、以下で説明する処理が実行されるものとする。
S610で、調整部309は、スレッド数を増加させるのか、減らすのかを判断をする。スレッド数を増加する場合にはS611に遷移し、減らす場合にはS614に遷移する。
S611で、調整部309は、現在のスレッド数の閾値がスレッド数の上限に達しているか否かを判定する。上限に達している場合にはスレッド数が増やせないため、本調整処理は終了する。閾値が上限に達していない場合にはS612に遷移する。
ここで、スレッドの閾値は、サブタスク実行スレッドのスレッド数の調整の際にはS401で用いた第1閾値が判定対象となる。一方で、データ送信スレッドのスレッド数の調整の際にはS510で用いた第2閾値が判定対象となる。また、スレッド数の上限は、マネージャ101が動作する情報処理装置のリソースの割り当てなどを考慮して、サブタスク実行処理305、及びデータ送信処理308のそれぞれで、予め設定される上限数である。
S612で、調整部309は、所定値であるNの分だけ、閾値を増やす。ここで、Nの値は、サブタスク実行処理305、及びデータ送信処理308のそれぞれで予め設定される値である。また、閾値は、最大でS611で用いた上限数まで増やすこととする。
S613で、調整部309は、タスク実行部302、データ送信部306に、サブタスク実行スレッド、データ送信スレッドの追加起動を指示する。ここでは、S612の処理で閾値が増加した数だけスレッドが起動される。スレッドが起動された場合には、前述のサブタスク実行処理305、或いはデータ送信処理308が開始されることになる。
S612およびS613の処理により、マネージャとエージェントとの間の応答時間が改善されていく間は、徐々にNの値分だけ、エージェント側のスレッドの追加起動を許容していき、エージェントでは並列処理による効率化が行われることになる。
S614で、調整部309は、現在のスレッド数の閾値がスレッド数の下限に達しているか否かを判定する。下限に達している場合にはスレッド数が減らせないため、本調整処理は終了する。閾値が下限に達していない場合にはS615に遷移する。
ここで、スレッドの閾値は、S611と同様、第1閾値、第2閾値が判定対象となる。また、スレッド数の下限は、マネージャ101が動作する情報処理装置のリソースの割り当てなどを考慮して、サブタスク実行処理305、及びデータ送信処理308のそれぞれで、予め設定される下限数である。
S615で、調整部309は、所定値であるNの分だけ、閾値を減らす。また、閾値は、最小で、S614で用いた下限数まで減らすこととする。
S615の処理により、マネージャとエージェントとの間の応答時間が劣化していく間は、Nの値分だけ、エージェント側のスレッドの徐々に減ることになり、エージェントからマネージャへのデータ送信が削減され、マネージャでの処理負荷が抑えられるようになる。
なお、Nの値として定数を使用しているが、例えば、送信管理処理307のキューに存在するデータの数や、キュー内のデータの数の変化(増減)に基づき、Nの値を動的に変更することも可能である。例えば、以下の様な調整が考えられる。
図7で示す処理が実行されるたびにキュー内のデータの数を記録しておき、その数が、前回計測時よりも増加している場合、起動中のスレッドの数がより少なくなるようNの値を変化させる。一方で、キュー内のデータ数が減少している場合、スレッドの数がより増加するように、Nの値を変更する。ほかにも、キュー内のデータ数が所定数を超える場合には、起動中のスレッドの数がより少なくなるよう、Nの値を変更することもできる。
(変形例)
図8は、図6で示した調整部309による調整処理の変形例を説明するためのフローチャートを示す。ここでは、図6と異なる処理について、追加で説明する。
S801で、調整部309は、中間値の計算の必要性の有無を判断する。調整部309は、以下の条件の少なくともいずれかを満足した場合に、中間値の計算が必要と判断する。
・リスト内の要素の数が前述の第1規定数αよりも多い(S602と同じ)
・前回S802の処理が実行されてから所定時間が経過し、且つ、リスト内の要素の数が第2規定数βより多い(α>β)
ここで、2つ目の条件は、所定時間内に、マネージャとエージェントとの間である程度の回数の通信が行われたことを意味する。S801の時間の経過は、前回S802の処理の開始時刻と現在時刻との差分を取ることにより求める。
S802で、調整部309は、リセット処理を行う。具体的には、以下のような処理が実行される。
・リストを空にする(S604と同じ)
・上述の開始時刻を現在時刻に設定する
なお、調整部309は、S601の段階で、調整処理の初回起動などの理由でまだリストが存在せず、新規にリストを作成した際にも、開始時刻を現在時刻に設定する。
(実施例2)
タスクの内容によって、処理の優先度が異なる場合がある。そこで、実施例2は、実施例1におけるタスク実行部302に、改良を加える。実施例2においては、該改良に伴う、実施例1からの変更点について説明する。
図9は、本実施例における、タスク実行部302の詳細を示している。
サブタスク管理処理304では、高優先処理キュー901、通常処理キュー902、および低優先処理キュー903の3つのキューを使い分ける。
タスク分割処理303では、タスクがサブタスクに分割され、3つのキューからサブタスクの内容に応じたキューが選択される。サブタスク管理処理304では、選択されたキューに該サブタスクを追加して、管理する。
例えば、タスク分割処理303では、管理対象のデバイス104のエラーなどをデバイス利用者に通知する(ステータス監視)ためのタスクなどについては、そのタスクに基づくサブタスクのために高優先処理キュー901が選択される。また、管理対象のデバイス104の設定値のバックアップの様な緊急性の低いタスクに基づくサブタスクにためには、低優先度キュー903が選択される。また、ステータス監視のタスクであっても、管理対象の各デバイスに対してパケットを送信し、応答のあったデバイスに対応するサブタスクのためには高優先処理キュー901を、すぐに応答がなかったデバイスに対応するサブタスクのためには低優先処理キュー903を選択することも可能である。ほかにも、タスクには、設定情報の配信タスク、アドレス帳の配信タスク、ファームウェアやアプリケーションなどのソフトウェアの配信タスク、などがある。設定情報の配信タスク、アドレス帳の配信タスクも緊急性の低いタスクと考えられる。セキュリティなどの要件を含む場合には、ソフトウェアの配信タスクに対応するサブタスクは高優先処理キュー901が選択される。
タスク実行部302は、サブタスク実行処理305で利用可能なサブタスク実行スレッドを、高優先処理用スレッド群、通常処理用スレッド群、低優先処理用スレッド群に分割する。高優先処理用スレッド群、通常処理用スレッド群、低優先処理用スレッド群は、それぞれ、高優先処理キュー901、通常処理キュー902、低優先処理キュー903からサブタスクを取得して、実行する。
実施例1の図4で説明したサブタスク実行処理305で利用できるスレッド数の上限を示す第1閾値に基づき分配された閾値が、各スレッド群に対して割り当てられる。
本実施例では、各スレッド群に割り当てられる閾値を次のように決定する。
第1閾値をMとすると、
・高優先処理用スレッド数の閾値(Mh): M/7
・低優先処理用スレッド数の閾値(Ml): M/3
・通常処理用スレッド数の閾値(Mn):: M−(Mh+Ml)
実施例2では、高優先処理用スレッド群、低優先処理用スレッド群、通常処理用スレッド群は、図4で示す処理により対象キューから取得したサブタスクを実行する。この際、S401では、各スレッド群は、対応する閾値Mh、Ml、Mnを利用することになる。
また、実施例2では、高優先処理用スレッド群のサブタスク実行スレッドは、S405で図5Aの送信処理を呼び出す。そして、他のスレッド群のサブタスク実行スレッドは、データ送信部306に対して、送信管理処理307で用いるキューに実行結果を送信するためのデータを追加するよう依頼する。つまり、高優先処理用スレッド群以外のスレッドによるサブタスクの実行結果は、図5Bに従うデータ送信スレッドの処理で、サブタスクの実行とは非同期に、マネージャーに遅延送信されることになる。
なお、S402で、低優先処理用スレッド群に含まれるサブタスク実行スレッドについては、低優先処理キュー903からのサブタスクの取得に失敗した(低優先処理キュー903にサブタスクがない)場合に、通常処理用キュー902からサブタスクを取得するようにしてもよい。
また、図7のS612〜S613で、第1閾値が増えた場合、その増分に基づき閾値Mh、Ml、Mnも増加することになる。その場合には、その分だけ各スレッド群についてスレッドが追加起動されることになる。S615で、第1閾値が減った場合、それに基づき閾値Mh、Ml、Mnも減ることになる。
(他の実施例)
本発明は、上述した実施形態を適宜組み合わせることにより構成された装置あるいはシステムやその方法も含まれるものとする。
ここで、本発明は、上述した実施形態の機能を実現する1以上のソフトウェア(プログラム)を実行する主体となる装置あるいはシステムである。また、その装置あるいはシステムで実行される上述した実施形態を実現するための方法も本発明の一つである。また、そのプログラムは、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給され、そのシステム或いは装置の1以上のコンピュータ(CPUやMPU等)によりそのプログラムが1以上のメモリーに読み出され、実行される。つまり、本発明の一つとして、さらにそのプログラム自体、あるいは該プログラムを格納したコンピューターにより読み取り可能な各種記憶媒体も含むものとする。また、上述した実施形態の機能を実現する回路(例えば、ASIC)によっても、本発明は実現可能である。
101 管理サーバー(マネージャ)
102、103 エージェント装置(エージェント)
104〜107 デバイス

Claims (10)

  1. マネージャから指示に従う処理を実行するエージェントが動作する情報処理装置であって、
    前記エージェントのデータの送信と前記マネージャからの応答とを含む通信から求めた応答時間を管理する管理手段と、
    スレッド数の第1閾値以下の複数のスレッドにより、前記指示に従う処理を実行する実行手段と、
    前記実行された処理の結果を示すデータを、前記マネージャに送信する送信手段と、
    前記エージェントと前記マネージャとの間で行われた複数回の通信に対応する応答時間の変化に基づき、前記第1閾値を減らすように調整する調整手段と、を有することを特徴とする情報処理装置。
  2. 前記指示に従う処理を実行するために起動されたスレッドは、実行中のスレッドの総数が前記第1閾値を超えていた場合、処理を中断し、該スレッドは破棄されることを特徴とする請求項1に記載の情報処理装置。
  3. 前記調整手段は、さらに、前記エージェントと前記マネージャとの間で行われた複数回の通信に対応する応答時間の変化に基づき前記マネージャの処理負荷が改善されたと判断された場合に、前記第1閾値を増やすように調整することを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記第1閾値が増えた場合には、追加で前記指示に従う処理を実行するためのスレッドが起動されることを特徴とする請求項3に記載の情報処理装置。
  5. 前記送信手段は、第2閾値以下の複数のデータ送信スレッドにより、前記実行された処理の結果を示すデータを、前記マネージャに送信し、
    前記調整手段は、さらに、前記エージェントと前記マネージャとの間で行われた複数回の通信に対応する応答時間の変化に基づき、前記第2閾値を減らすように調整する
    ことを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記データ送信スレッドは、実行中のデータ送信スレッドの総数が前記第2閾値を超えていた場合、処理を中断し、該データ送信スレッドは破棄されることを特徴とする請求項5に記載の情報処理装置。
  7. 前記送信手段は、前記実行された処理の結果を示すデータを前記マネージャに送信した後に前記マネージャからの応答を受信した場合に、前記応答時間を求め、
    前記管理手段は、前記送信手段が求めた前記応答時間を管理する
    ことを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
  8. 前記マネージャから指示に従う処理は、マネージャの管理対象となる複数のデバイスそれぞれに対するステータス監視、設定値のバックアップ、設定情報の配信、アドレス帳の配信、およびソフトウェアの配信の少なくともいずれかが含まれることを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
  9. マネージャから指示に従う処理を実行するエージェントが動作する情報処理装置における方法であって、
    前記エージェントのデータの送信と前記マネージャからの応答とを含む通信から求めた応答時間を管理する管理工程と、
    スレッド数の第1閾値以下の複数のスレッドにより、前記指示に従う処理を実行する実行工程と、
    前記実行された処理の結果を示すデータを、前記マネージャに送信する送信工程と、
    前記エージェントと前記マネージャとの間で行われた複数回の通信に対応する応答時間の変化に基づき、前記第1閾値を減らすように調整する調整工程と、を有することを特徴とする方法。
  10. 請求項1乃至8のいずれか1項に記載の各手段としてコンピューターを機能させることを特徴とするプログラム。
JP2019131059A 2019-07-16 2019-07-16 情報処理装置、方法およびプログラム Active JP7353836B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019131059A JP7353836B2 (ja) 2019-07-16 2019-07-16 情報処理装置、方法およびプログラム
US16/926,152 US11500676B2 (en) 2019-07-16 2020-07-10 Information processing apparatus, method, and non-transitory computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019131059A JP7353836B2 (ja) 2019-07-16 2019-07-16 情報処理装置、方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2021015544A true JP2021015544A (ja) 2021-02-12
JP7353836B2 JP7353836B2 (ja) 2023-10-02

Family

ID=74343792

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019131059A Active JP7353836B2 (ja) 2019-07-16 2019-07-16 情報処理装置、方法およびプログラム

Country Status (2)

Country Link
US (1) US11500676B2 (ja)
JP (1) JP7353836B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007122527A (ja) * 2005-10-31 2007-05-17 Hitachi Ltd 流量制御方法
JP2009225402A (ja) * 2008-03-19 2009-10-01 Nomura Research Institute Ltd メール配信速度調整システム及びプログラム
CN102779062A (zh) * 2011-05-09 2012-11-14 阿里巴巴集团控股有限公司 一种访问系统资源的线程数量的控制方法及装置
US20160335132A1 (en) * 2015-05-12 2016-11-17 International Business Machines Corporation Processor thread management

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3864251B2 (ja) * 2002-12-06 2006-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーション メッセージ処理装置、メッセージ処理方法、及びメッセージ処理プログラム
US8996510B2 (en) * 2011-08-23 2015-03-31 Buckyball Mobile, Inc. Identifying digital content using bioresponse data
JP6548540B2 (ja) 2014-12-16 2019-07-24 キヤノン株式会社 管理システムおよび管理システムの制御方法
JP6532385B2 (ja) * 2015-11-02 2019-06-19 キヤノン株式会社 情報処理システムおよびその制御方法、並びにプログラム
EP3472790A4 (en) * 2016-06-16 2020-01-29 The Bank of New York Mellon SECURING THE DATA INTEGRITY OF TRANSACTIONS PERFORMED
EP3611824A4 (en) * 2017-04-12 2020-04-01 Mitsubishi Electric Corporation IPM ROTOR
US20190005055A1 (en) * 2017-06-30 2019-01-03 Microsoft Technology Licensing, Llc Offline geographic searches
KR101839392B1 (ko) * 2017-07-17 2018-03-16 주식회사 티맥스소프트 스레드 풀의 사이즈를 동적으로 관리하는 방법 및 컴퓨팅 장치
JP7374675B2 (ja) * 2019-09-06 2023-11-07 キヤノン株式会社 管理システムおよびその制御方法、並びにプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007122527A (ja) * 2005-10-31 2007-05-17 Hitachi Ltd 流量制御方法
JP2009225402A (ja) * 2008-03-19 2009-10-01 Nomura Research Institute Ltd メール配信速度調整システム及びプログラム
CN102779062A (zh) * 2011-05-09 2012-11-14 阿里巴巴集团控股有限公司 一种访问系统资源的线程数量的控制方法及装置
US20160335132A1 (en) * 2015-05-12 2016-11-17 International Business Machines Corporation Processor thread management

Also Published As

Publication number Publication date
JP7353836B2 (ja) 2023-10-02
US11500676B2 (en) 2022-11-15
US20210019183A1 (en) 2021-01-21

Similar Documents

Publication Publication Date Title
US9984013B2 (en) Method, controller, and system for service flow control in object-based storage system
US20200137151A1 (en) Load balancing engine, client, distributed computing system, and load balancing method
CN111818159B (zh) 数据处理节点的管理方法、装置、设备及存储介质
US8386512B2 (en) System for managing data collection processes
US7676578B1 (en) Resource entitlement control system controlling resource entitlement based on automatic determination of a target utilization and controller gain
JP4984169B2 (ja) 負荷分散プログラム、負荷分散方法、負荷分散装置およびそれを含むシステム
JP2014530434A (ja) トラフィックディレクタ環境におけるトラフィックのアクティブ−パッシブルーティングおよび制御のためのシステムおよび方法
JP2010204876A (ja) 分散システム
JP2010238051A (ja) 負荷分散プログラム及び負荷分散装置
US9110745B2 (en) System and method for flow control in a messaging subsystem based on message-in/out rates
JP2009175889A (ja) 帯域制御機能を有する負荷分散装置およびその設定方法
US9135064B2 (en) Fine grained adaptive throttling of background processes
WO2015165546A1 (en) Dynamically scaled web service deployments
US10877790B2 (en) Information processing apparatus, control method and storage medium
EP3672203A1 (en) Distribution method for distributed data computing, device, server and storage medium
CN109815204A (zh) 一种基于拥塞感知的元数据请求分发方法及设备
JP2017162059A (ja) 情報処理装置、制御方法、プログラム
KR20160025926A (ko) 가상 응용서버들로 부하를 분산하는 장치 및 방법
JP7353836B2 (ja) 情報処理装置、方法およびプログラム
WO2018123030A1 (ja) 優先度の制御方法及びデータ処理システム
JP2007179246A (ja) 計算機管理方法、計算機管理プログラム、および、計算機管理サーバ
JP2014041404A (ja) ターミナルサービス監視装置
US10375161B1 (en) Distributed computing task management system and method
KR20160043706A (ko) 가상 머신 스케일링 장치 및 그 방법
JP6233141B2 (ja) データベースシステム、データベースサーバ、データベースサーバプログラム、データベースクライアント及びデータベースクライアントプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220630

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230502

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: 20230822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230920

R151 Written notification of patent or utility model registration

Ref document number: 7353836

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151