(57)【要約】【課題】複数の情報処理装置の各情報処理装置の状態情報を集計する集計処理の負荷分散の判断にかかる負荷を抑制することを図ること。【解決手段】（１）で示すように、ノード＃３は、ノード＃３自身の負荷と、ノード＃３の集計対象となるノード＃１〜３の性能情報１１２＃１〜３に含まれる負荷情報１１１＃１〜３が示す負荷とに基づいて、第１の集計処理１２１を分散させるか否かを判断する。第１の集計処理１２１を分散させると判断した場合、ノード＃３は、（２）で示すように、ノード＃１、２に、第２の集計処理１２２の実行要求を送信する。そして、ノード＃３は、（３）、（４）で示すように、ノード＃１〜３に対し、性能情報１１２の送信先を、それぞれのノードを集計対象とするノードに変更する指示を送信し、ノード＃１、２に対し、処理結果をノード＃３に送信する指示を送信する。【選択図】図１
2018081392.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置で構築され、前記複数の情報処理装置の各情報処理装置で取得された前記各情報処理装置の負荷を示す負荷情報を含む状態情報を集計する情報処理システムに含まれる、前記状態情報を収集する情報処理装置であって、
前記情報処理装置の負荷と、前記情報処理装置が集計する集計対象の情報処理装置群の各情報処理装置の状態情報に含まれる負荷情報が示す負荷とに基づいて、前記各情報処理装置の状態情報を集計する第１の集計処理を分散させるか否かを判断し、
前記第１の集計処理を分散させると判断した場合、前記集計対象の情報処理装置群のうちの前記情報処理装置を除く２以上の情報処理装置の各情報処理装置に、前記集計対象の情報処理装置群を前記各情報処理装置の数で分割した各グループに属する情報処理装置の状態情報を集計する第２の集計処理の実行要求を送信し、
前記各グループに属する情報処理装置に対して、当該情報処理装置の状態情報の送信先を前記各グループに対して第２の集計処理を実行する情報処理装置に変更する指示を送信し、
前記２以上の情報処理装置の各情報処理装置に対して、当該各情報処理装置が実行する第２の集計処理の処理結果を前記情報処理装置に送信する指示を送信する、
制御部を有することを特徴とする情報処理装置。
【請求項２】
前記制御部は、
前記２以上の情報処理装置のうちの第１の情報処理装置から、前記第１の情報処理装置が実行する第２の集計処理を他の情報処理装置に変更する変更依頼を受け付けた場合、前記集計対象の情報処理装置群の状態情報に含まれる負荷情報が示す負荷に基づいて、前記情報処理装置群のうちの前記情報処理装置および前記２以上の情報処理装置以外から、前記第１の情報処理装置が実行する第２の集計処理を実行させる第２の情報処理装置を決定し、
前記第１の情報処理装置が実行する第２の集計処理を、前記第１の情報処理装置から前記第２の情報処理装置に変更し、
当該各情報処理装置に対して、当該各情報処理装置の状態情報の送信先を前記第２の情報処理装置に変更する指示を送信し、
前記第２の情報処理装置に対して、前記第２の情報処理装置が実行する第２の集計処理の処理結果を前記情報処理装置に送信する指示を送信する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御部は、
前記２以上の情報処理装置のうちの第３の情報処理装置から、前記第３の情報処理装置が実行する第２の集計処理を消滅させる消滅依頼を受け付けた場合、前記情報処理装置の負荷に基づいて、前記第３の情報処理装置が実行する第２の集計処理を消滅させるか否かを判断し、
前記第３の情報処理装置が実行する第２の集計処理を消滅させると判断した場合、前記第３の情報処理装置が集計する集計対象の情報処理装置群の各情報処理装置に対して、当該各情報処理装置の状態情報の送信先を前記第２の情報処理装置に変更する指示を送信し、
前記第３の情報処理装置に対して、前記第３の情報処理装置が実行する第２の集計処理を消滅させる指示を送信する、
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御部は、
前記複数の情報処理装置のうちの第４の情報処理装置から、前記第１の集計処理の実行要求を受け付けた場合、前記第１の集計処理を実行し、
前記第１の集計処理の処理結果を、前記第４の情報処理装置に送信する、
ことを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
複数の情報処理装置で構築され、前記複数の情報処理装置の各情報処理装置で取得された前記各情報処理装置の負荷を示す負荷情報を含む状態情報を集計する情報処理システムであって、
前記状態情報を収集する情報処理装置は、
前記情報処理装置の負荷と、前記情報処理装置が集計する集計対象の情報処理装置群の各情報処理装置の状態情報に含まれる負荷情報が示す負荷とに基づいて、前記各情報処理装置の状態情報を集計する第１の集計処理を分散させるか否かを判断し、
前記第１の集計処理を分散させると判断した場合、前記集計対象の情報処理装置群のうちの前記情報処理装置を除く２以上の情報処理装置の各情報処理装置に、前記集計対象の情報処理装置群を前記各情報処理装置の数で分割した各グループに属する情報処理装置の状態情報を集計する第２の集計処理の実行要求を送信し、
前記各グループに属する情報処理装置に対して、当該情報処理装置の状態情報の送信先を前記各グループに対して第２の集計処理を実行する情報処理装置に変更する指示を送信し、
前記２以上の情報処理装置の各情報処理装置に対して、当該各情報処理装置が実行する第２の集計処理の処理結果を前記情報処理装置に送信する指示を送信する、
ことを特徴とする情報処理システム。
【請求項６】
複数の情報処理装置で構築され、前記複数の情報処理装置の各情報処理装置で取得された前記各情報処理装置の負荷を示す負荷情報を含む状態情報を集計する情報処理システムに含まれる、前記状態情報を収集する情報処理装置に、
前記情報処理装置の負荷と、前記情報処理装置が集計する集計対象の情報処理装置群の各情報処理装置の状態情報に含まれる負荷情報が示す負荷とに基づいて、前記各情報処理装置の状態情報を集計する第１の集計処理を分散させるか否かを判断し、
前記第１の集計処理を分散させると判断した場合、前記集計対象の情報処理装置群のうちの前記情報処理装置を除く２以上の情報処理装置の各情報処理装置に、前記集計対象の情報処理装置群を前記各情報処理装置の数で分割した各グループに属する情報処理装置の状態情報を集計する第２の集計処理の実行要求を送信し、
前記各グループに属する情報処理装置に対して、当該情報処理装置の状態情報の送信先を前記各グループに対して第２の集計処理を実行する情報処理装置に変更する指示を送信し、
前記２以上の情報処理装置の各情報処理装置に対して、当該各情報処理装置が実行する第２の集計処理の処理結果を前記情報処理装置に送信する指示を送信する、
処理を実行させることを特徴とする状態情報収集プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、および状態情報収集プログラムに関する。
【背景技術】
【０００２】
従来、複数の情報処理装置から、１つのシステムを構築することがある。また、複数の情報処理装置の状態情報を収集、集計して、ある情報処理装置の記憶領域に格納することがある。関連する先行技術として、例えば、分散サーバに、センターサーバの稼働状態の情報を取得し、クライアントとなる多数のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）の各ＰＣの処理要求に対し、センターサーバが負荷超過の状態になっていれば直ちにその旨を各ＰＣへ回答するものがある。また、サーバ管理装置が、仮想サーバ群を稼働する物理サーバ群を管理し、物理サーバ群に配置された複数の仮想サーバを含んでなるクラスタシステムを運用する際に、仮想サーバ群の負荷状態により仮想サーバの配置状態を管理する技術がある。また、情報処理装置を制御する制御装置が、各情報処理装置の負荷を収集し、いずれかの負荷が第１の閾値を超えた頻度が第１の比率を超えた場合、第１の比率を超えた情報処理部上で動作する仮想マシンを終了させる技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−２６９９２５号公報
【特許文献２】特開２０１１−９０５９４号公報
【特許文献３】特開２０１５−２１０５７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、情報処理装置の数が増えるほど、複数の情報処理装置の各情報処理装置の状態情報を集計する集計処理の負荷分散の判断にかかる負荷が増大する。具体的には、負荷分散を行う指標として、各情報処理装置の負荷を参照することになるが、各情報処理装置の負荷を示す情報は、ある情報処理装置の記憶領域に格納されているため、ある情報処理装置にかかる負荷が増大してしまう。
【０００５】
１つの側面では、本発明は、複数の情報処理装置の各情報処理装置の状態情報を集計する集計処理の負荷分散の判断にかかる負荷を抑制することができる情報処理装置、情報処理システム、および状態情報収集プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
１つの実施態様では、情報処理装置、情報処理システム、および状態情報収集プログラムは、複数の情報処理装置で構築され、複数の情報処理装置の各情報処理装置で取得された各情報処理装置の負荷を示す負荷情報を含む状態情報を集計する情報処理システムに含まれる、状態情報を収集する情報処理装置であって、情報処理装置の負荷と、情報処理装置が集計する集計対象の情報処理装置群の各情報処理装置の状態情報に含まれる負荷情報が示す負荷とに基づいて、各情報処理装置の状態情報を集計する第１の集計処理を分散させるか否かを判断し、第１の集計処理を分散させると判断した場合、集計対象の情報処理装置群のうちの情報処理装置を除く２以上の情報処理装置の各情報処理装置に、集計対象の情報処理装置群を各情報処理装置の数で分割した各グループに属する情報処理装置の状態情報を集計する第２の集計処理の実行要求を送信し、各グループに属する情報処理装置に対して、当該情報処理装置の状態情報の送信先を各グループに対して第２の集計処理を実行する情報処理装置に変更する指示を送信し、２以上の情報処理装置の各情報処理装置に対して、当該各情報処理装置が実行する第２の集計処理の処理結果を情報処理装置に送信する指示を送信する。
【発明の効果】
【０００７】
一つの側面では、本発明は、複数の情報処理装置の各情報処理装置の状態情報を集計する集計処理の負荷分散の判断にかかる負荷を抑制することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかる情報処理システム１００の動作例を示す説明図である。
【図２】図２は、情報処理システム１００の利用例を示す説明図である。
【図３】図３は、ノード＃１のハードウェア構成例を示す説明図である。
【図４】図４は、情報処理システム１００の機能構成例を示す説明図である。
【図５】図５は、情報処理システム１００の初期状態における性能情報１１２の収集例を示す説明図である。
【図６】図６は、ノード＃１の負荷が増加した場合の一例を示す説明図である。
【図７】図７は、時系列ＤＢ１１０の記憶内容の他の例を示す説明図である。
【図８】図８は、集計部４０３−Ｂを作成した後の性能情報１１２の収集例を示す説明図である。
【図９】図９は、ノード＃３の負荷が増加した場合の一例を示す説明図である。
【図１０】図１０は、集計部４０３−Ｃを作成した後の性能情報１１２の収集例を示す説明図である。
【図１１】図１１は、ノード＃３の負荷が減少した場合の一例を示す説明図である。
【図１２】図１２は、ノード＃３の負荷が大幅に増加した場合の一例を示す説明図である。
【図１３】図１３は、子集計部における性能情報収集処理手順の一例を示すフローチャート（その１）である。
【図１４】図１４は、子集計部における性能情報収集処理手順の一例を示すフローチャート（その２）である。
【図１５】図１５は、代表ノードの親集計部における性能情報収集処理手順の一例を示すフローチャートである。
【図１６】図１６は、親集計部における担当変更依頼受け付け時処理手順の一例を示すフローチャートである。
【図１７】図１７は、親集計部における消滅依頼受け付け時処理手順の一例を示すフローチャートである。
【図１８】図１８は、代表ノードにおけるノード増減設時処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示の情報処理装置、情報処理システム、および状態情報収集プログラムの実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態にかかる情報処理システム１００の動作例を示す説明図である。情報処理システム１００は、ＳＤＳ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｓｔｏｒａｇｅ）と呼ばれる技術によって、複数の情報処理装置で構築されるシステムである。情報処理装置は、例えば、サーバや、ストレージ装置といったコンピュータである。以下、情報処理装置を、「ノード」と呼称する。例えば、複数のノードは、あるＤＣ（Ｄａｔａ  Ｃｅｎｔｅｒ）内にある。そして、情報処理システム１００には、複数のノードを１つのストレージ装置としてみたてる、分散アーキテクチャが適用できる。また、情報処理システム１００は、スケールアウトにより、性能を向上させることができる。
【００１１】
分散アーキテクチャでは、複数のノードの各ノードの状態情報を記憶する時系列ＤＢ（ＤａｔａＢａｓｅ）を利用した性能監視機能を有することができる。性能監視機能は、例えば、各ノードの状態情報の収集、蓄積、参照を行う。また、時系列ＤＢは、複数のノードのうちのある一つのノードが有する。時系列ＤＢを有するノードを、「代表ノード」と呼称する。代表ノードは、情報処理システム１００の運用中、基本的に変化しないが、例えば、代表ノードが故障した場合に、他のノードが代表ノードとなることがある。
【００１２】
各ノードの状態情報には、各ノードの性能情報や、各ノードの構成情報、各ノードの処理情報が含まれる。各ノードの性能情報は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）使用率、ネットワーク利用率、ＩＯＰＳ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｐｅｒ  Ｓｅｃｏｎｄ）、ディスク使用率である。各ノードの構成情報は、各ノードの物理リソースの構成や、各ノード上で動作する仮想マシンの構成を示す情報である。各ノードの処理情報は、例えば、各ノードのコピー処理等の進捗状況を示す情報である。各ノードの状態情報は、例えば、ＯＳが用意しているｓｔａｔコールや、ファイル参照により得ることができる。以下では、説明の簡略化のため、各ノードの状態情報が、各ノードの性能情報であるとして説明する。
【００１３】
ここで、実際のシステムでは、単位時間ごとに時系列ＤＢに格納される性能情報は、物理リソースと仮想リソースとを合わせて、数千〜数十万単位となることがある。このとき、時刻ごとの性能情報の合計や平均といった集計値、例えば、全ディスクの合計ＩＯＰＳ、平均ＩＯＰＳの情報は、参照の度に計算すると処理負荷と時間がかかる、また、集計値が参照される頻度も比較的高い。
【００１４】
例えば、集計値に関して、代表ノードが、各ノードの性能情報を集計したうえで、時系列ＤＢに格納する方法が考えられる。しかしながら、該当の方法では、集計対象の性能情報を全て代表ノードに集め、代表ノードが集計値の計算を行う集計処理を実行するため、代表ノードのＣＰＵまたはネットワークがボトルネックとなり、ディスク書き込みなどの通常業務に影響がでる可能性がある。
【００１５】
そこで、集計値の計算を行う集計処理を分散させて、複数のノードに負荷を分散させることが考えられる。しかしながら、該当の方法では、ノードの数が増えるほど、負荷分散の判断にかかる負荷が増大する。具体的には、動的に負荷分散を行う指標として、各ノードのＣＰＵ負荷やネットワーク負荷を参照することになるが、各ノードのＣＰＵ負荷やネットワーク負荷という情報は、時系列ＤＢに保持されている。従って、時系列ＤＢを有する代表ノードの負荷や、負荷分散先のノードと代表ノードとの間のネットワークの負荷が増大することになる。また、代表ノードが、どのノードに負荷分散させるかを決定することになるため、代表ノードの負荷が増大することになる。
【００１６】
そこで、本実施の形態では、自ノードの負荷と、送信された各ノードの負荷とから集計処理の負荷分散を決めることについて説明する。
【００１７】
図１を用いて、情報処理システム１００の動作例について説明する。図１で示す情報処理システム１００は、複数のノードとして、ノード＃１、２、３、４、…で構築される。ここで、以下の説明において、「＃ｘ」が付与された符号は、ノード＃ｘに関することを示す。ｘは、自然数である。また、図１では、太い矢印は、他のノードへの指示を示し、通常の矢印は、データの送信を示す。
【００１８】
図１で示すように、ノード＃１が時系列ＤＢ１１０を有するため、ノード＃１が代表ノードとなる。また、情報処理システム１００は、複数のノードの各ノードで取得された各ノードの負荷を示す負荷情報１１１を含む性能情報１１２を集計する。負荷情報１１１は、例えば、ＣＰＵ使用率やネットワーク使用率である。図１の例では、負荷情報１１１は、ＣＰＵ使用率であるとする。
【００１９】
図１の上部では、集計処理が、第０の集計処理１２０と、第１の集計処理１２１とに分散されている。そして、代表ノードとなるノード＃１が、第０の集計処理１２０を実行し、ノード＃３が、第１の集計処理１２１を実行する。図１では省略しているが、ノード＃４以降のいずれかのノードが、第１の集計処理１２１を実行する。
【００２０】
第１の集計処理は、集計対象として、ノード＃１〜３の性能情報１１２＃１〜３を収集し、集計した集計値を、第０の集計処理１２０を実行するノード＃１に送信する。第０の集計処理１２０は、第１の集計処理１２１から送信された集計値を、さらに集計し、得られた集計値を、時系列ＤＢ１１０に格納する。図１では、ノード＃３の第１の集計処理１２１を分散する例を示す。
【００２１】
図１の（１）で示すように、ノード＃３は、ノード＃３自身の負荷と、ノード＃３の集計対象となるノード＃１〜３の性能情報１１２＃１〜３に含まれる負荷情報１１１＃１〜３が示す負荷とに基づいて、第１の集計処理１２１を分散させるか否かを判断する。ここで、負荷情報１１１＃１〜３は、ノード＃３に集計される情報であるから、ノード＃３は、負荷分散の判断のために時系列ＤＢ１１０を参照しなくてよい。
【００２２】
例えば、ノード＃３は、ノード＃３自身の負荷が、集計対象となるノード＃１〜３の平均の負荷と、所定の値として負荷判定値との合計値より大きい場合、第１の集計処理１２１を分散させると判断する。図１の例では、負荷情報１１１＃１は、ノード＃１のＣＰＵ使用率が１０［％］であることを示す。また、負荷情報１１１＃２は、ノード＃２のＣＰＵ使用率が２０［％］であることを示す。また、負荷情報１１１＃３は、ノード＃３のＣＰＵ使用率が４０［％］であることを示す。また、負荷判定値が１０［％］であるとする。この場合、ノード＃３自身の負荷４０［％］＞（１０［％］＋２０［％］＋４０［％］）／３＋１０［％］＝３３．３［％］となるため、ノード＃３は、第１の集計処理１２１を分散させると判断する。
【００２３】
第１の集計処理１２１を分散させると判断した場合、ノード＃３は、図１の（２）で示すように、集計対象のノード群のうちのノード＃３を除く２以上のノードの各ノードに、第２の集計処理１２２の実行要求を送信する。ここで、第２の集計処理１２２は、集計対象のノード群を該当の２以上のノードの数で分割した各グループに属するノードの性能情報１１２を集計する処理である。また、第２の集計処理１２２の実行要求を送信するノードの数は、２以上でよいが、負荷が高ければさらに分散させればよいため、２つが好ましい。また、集計対象のノード群のうち、第２の集計処理１２２の実行要求を送信するノードの決め方は、例えば、負荷が最も低いノードと、次に低いノードとの２つのノードとしてもよい。また、集計対象のノード群の分割方法は、どのように分割してもよいが、負荷を均等に分散させるために、可能な限り均等に分割することが好ましい。
【００２４】
例えば、図１の下部で示すように、ノード＃３は、ノード＃１、２のそれぞれに、第２の集計処理１２２＃１、２の実行要求を送信する。ここで、第２の集計処理１２２＃１は、ノード＃１の性能情報１１２＃１を集計する処理である。また、第２の集計処理１２２＃２は、ノード＃２、３の性能情報１１２＃２、３を集計する処理である。
【００２５】
そして、ノード＃３は、図１の（３）で示すように、各グループに属するノードに対して、該当のノードの性能情報１１２の送信先を、該当の各グループに対して第２の集計処理１２２を実行するノードに変更する指示を送信する。例えば、図１の下部で示すように、ノード＃３は、ノード＃１に対して、ノード＃１に性能情報１１２＃１を送信するように指示し、ノード＃２、３に対して、ノード＃２に性能情報１１２＃２を送信するように指示する。また、ノード＃３は、第２の集計処理１２２の実行要求が送信されたノード＃１、２のそれぞれに、各グループに属するノードに対して、性能情報１１２の送信先を変更するように指示してもよい。
【００２６】
また、ノード＃３は、図１の（４）で示すように、第２の集計処理１２２の実行要求が送信されたノードに対して、該当のノードが実行する第２の集計処理１２２の処理結果を、ノード＃３に送信する指示を送信する。例えば、図１の下部で示すように、ノード＃３は、ノード＃１に対して、第２の集計処理１２２＃１の処理結果を、ノード＃３に送信するように指示し、ノード＃２に対して、第２の集計処理１２２＃２の処理結果を、ノード＃３に送信するように指示する。
【００２７】
そして、ノード＃３は、第１の集計処理１２１として、第２の集計処理１２２＃１、２の処理結果となる集計値をさらに集計し、第１の集計処理１２１の処理結果となる集計値をノード＃１に送信する。
【００２８】
これにより、図１の上部で示す第１の集計処理１２１は、図１の下部で示す第１の集計処理１２１と、第２の集計処理１２１＃１、２とに分散されるため、ノード＃３にかかる負荷を分散させることができる。さらに、ノード＃３が負荷分散を判断する際に、時系列ＤＢ１１０を参照していないため、負荷分散の判断にかかる負荷を抑制することができる。
【００２９】
また、図１の説明では、複数のノードが、あるＤＣ内にあることを説明したが、これに限らない。例えば、複数のノードのいくつかのノードがあるＤＣにあり、残りのノードが、あるノードから離れた遠隔地のＤＣにあってもよい。そして、この場合、集計対象のノード群を分割する際には、分割を行うノードは、集計対象のノード群を、あるＤＣに含まれるノードが属する１つ目のグループと、遠隔地のＤＣに含まれるノードが属する２つ目のグループとに分割してもよい。そして、分割を行うノードは、１つ目のグループに含まれるノードのうち負荷が最も低いノードと、２つ目のグループに含まれるノードのうち負荷が最も低いノードと、第２の集計処理１２２の処理要求を送信してもよい。次に、情報処理システム１００の利用例について、図２を用いて説明する。
【００３０】
図２は、情報処理システム１００の利用例を示す説明図である。図２に示すように、情報処理システム１００は、利用者端末２０１と、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等のネットワーク２０２と接続する。
【００３１】
利用者端末２０１は、情報処理システム１００を利用する利用者Ｕが操作するコンピュータである。利用者端末２０１は、例えば、ＰＣである。例えば、情報処理システム１００内の各ノードは、業務システムを運用しており、利用者Ｕは、利用者端末２０１を操作することにより、情報処理システム１００にアクセスすることにより、業務システムを利用し、業務を行う。
【００３２】
次に、情報処理システム１００に含まれるノード＃１のハードウェア構成例を、図３を用いて説明する。なお、ノード＃１以外の他のノードのハードウェアも、ノード＃１と同様のハードウェアを有するため、説明を省略する。
【００３３】
図３は、ノード＃１のハードウェア構成例を示す説明図である。図３において、ノード＃１は、ＣＰＵ３０１と、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、を含む。また、ノード＃１は、ディスクドライブ３０４およびディスク３０５と、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）３０６と、を含む。また、ＣＰＵ３０１〜ディスクドライブ３０４、ＮＩＣ３０６はバス３０７によってそれぞれ接続される。
【００３４】
ＣＰＵ３０１は、ノード＃１の全体の制御を司る演算処理装置である。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される揮発性メモリである。
【００３５】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ３０４には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ３０４が磁気ディスクドライブである場合、ディスク３０５には、磁気ディスクを採用することができる。また、ディスクドライブ３０４が光ディスクドライブである場合、ディスク３０５には、光ディスクを採用することができる。また、ディスクドライブ３０４がソリッドステートドライブである場合、ディスク３０５には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
【００３６】
ＮＩＣ３０６は、ネットワーク２０２と内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、ＮＩＣ３０６は、通信回線を通じてネットワーク２０２を介して他の装置に接続される。ＮＩＣ３０６には、例えば、ＬＡＮアダプタなどを採用することができる。
【００３７】
また、情報処理システム１００の管理者が、ノード＃１を直接操作する場合、ノード＃１は、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。
【００３８】
（情報処理システム１００の機能構成例）
図４は、情報処理システム１００の機能構成例を示す説明図である。各ノードは、制御部４００を有する。制御部４００は、取得部４０１と、ノード集計部４０２と、集計部４０３と、書き込み部４０４と、を含む。制御部４００は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、ディスク３０５などである。また、各部の処理結果は、ＲＡＭ３０３や、ＣＰＵ３０１のレジスタ、ＣＰＵ３０１のキャッシュメモリ等に格納される。
【００３９】
取得部４０１は、一定時間間隔で、ｓｔａｔシステムコールやファイル参照により、ＣＰＵ使用率、ＩＯＰＳ、ディスク使用率といった性能情報１１２を取得する。
【００４０】
ノード集計部４０２は、各ノードにおいて、時刻ごとの性能情報１１２を計算する。そして、ノード集計部４０２は、集計部４０３に性能情報１１２を送信する。
【００４１】
集計部４０３は、各ノードの性能情報１１２を集計する。ここで、本実施の形態では、分散アーキテクチャの性能監視において、集計部４０３を動的に分散配置し、負荷を分散させる。このとき、集計部４０３は、集計の過程で利用したＣＰＵ、ネットワークといった性能情報１１２を判断基準として、集計部４０３の配置ノードと、分散階層の深さを動的に決定する。これにより集計部４０３は、負荷の集中を防ぎ、利用者Ｕの通常業務に与える影響を最小限に抑える。
【００４２】
そして、集計部４０３の種別として、親集計部と、子集計部とを定義する。親集計部は、既に存在していた集計部４０３を示す。子集計部は、親から新たに生成される集計部４０３を示す。また、「集計担当ノード」を定義する。集計担当ノードは、集計部４０３が性能情報１１２の集計の対象となるノード、すなわち集計部４０３に性能情報１１２を送信するノードと定義する。なお、集計部４０３の負荷分散をしていない場合、言い換えると、情報処理システム１００内に集計部４０３が代表ノードの１つしかない場合には、該当の集計部４０３の種別は、子集計部であるとする。
【００４３】
また、以下の説明では、親子関係の把握を容易にするため、最初に存在する集計部４０３を、集計部４０３−Ａとする。そして、集計部４０３−Ａから新たに生成される集計部４０３を、集計部４０３−Ｂとし、集計部４０３−Ｂから新たに生成される集計部４０３を、集計部４０３−Ｃとする。また、図４以降の図では、親子関係の把握をより容易にするため、集計部４０３−Ａ内の文字列を「集計部Ａ」と表示し、集計部４０３−Ｂ内の文字列を「集計部Ｂ」と表示し、集計部４０３−Ｃ内の文字列を「集計部Ｃ」と表示する。さらに、集計部４０３が配置されたノードの把握を容易にするため、集計部４０３に、ノードの符号を付与することがある。例えば、集計部４０３−Ｂ＃３は、集計部４０３−Ａから新たに生成される集計部４０３であって、ノード＃３に配置された集計部４０３であることを示す。
【００４４】
そして、集計部４０３は、集計処理実行部４１１と、処理結果送信部４１２と、負荷分散判断部４１３と、変更先ノード決定部４１４と、実行要求送信部４１５と、消滅判断部４１６と、指示部４１７とを有する。ここで、図４では、集計部４０３−Ｂ＃３が、集計処理実行部４１１〜指示部４１７を有するように示したが、集計部４０３−Ａ＃１も、集計処理実行部４１１〜指示部４１７を有する。また、集計部４０３は、どのノードにも生成される可能性がある。
【００４５】
集計処理実行部４１１は、集計担当ノードのノード集計部４０２から送信された性能情報１１２や性能情報１１２の集計値を集計する。例えば、集計処理実行部４１１は、性能情報１１２の集計値として、合計値や平均値を算出する。集計部４０３−Ａ＃１の集計処理実行部４１１は、図１に示した第０の集計処理１２０に相当する。また、集計処理実行部４１１＃３は、図１に示した第１の集計処理１２１に相当する。
【００４６】
処理結果送信部４１２は、集計処理実行部４１１の処理結果を、自身の親集計部となる集計部４０３に送信する。また、処理結果送信部４１２は、時系列ＤＢ１１０の各フィールドを埋めるため、集計担当ノードからの性能情報１１２そのものの値を、自身の親集計部となる集計部４０３に送信する。また、代表ノードにある処理結果送信部４１２は、集計処理実行部４１１の処理結果を、書き込み部４０４に送る。
【００４７】
負荷分散判断部４１３は、自ノードの負荷と、自ノードが集計する集計担当ノード群の各ノードの性能情報１１２に含まれる負荷情報１１１が示す負荷とに基づいて、各ノードの性能情報１１２を集計する集計処理を分散させるか否かを判断する。ここで、該当の集計処理は、負荷分散判断部４１３＃３であれば、図１で示した第１の集計処理１２１となり、負荷分散判断部４１３＃１であれば、図１で示した第０の集計処理１２０となる。例えば、負荷分散判断部４１３＃３は、自ノードとなるノード＃３の負荷から集計担当ノード群の負荷の平均値を減じた値が、負荷判定値より大きい場合、集計処理実行部４１１による第１の集計処理１２１を分散させると判断する。
【００４８】
そして、負荷分散判断部４１３が、集計処理を分散させると判断したとする。この場合、実行要求送信部４１５は、集計担当ノード群のうちの自ノードを除く２以上のノードの各ノードに、集計担当ノード群を各ノードの数で分割した各グループに属するノードの性能情報を集計する集計処理の実行要求を送信する。ここで、該当の集計処理は、実行要求送信部４１５＃３であれば、図１で示した第２の集計処理１２１となり、実行要求送信部４１５＃１であれば、図１で示した第０の集計処理１２０となる。
【００４９】
指示部４１７は、他のノードに指示する。具体的には、実行要求送信部４１５が実行要求を送信したとする。この場合、指示部４１７は、集計担当ノード群を各ノードの数で分割した各グループに属するノードに対して、該当のノードの性能情報１１２の送信先を各グループに対して該当の集計処理を実行するノードに変更する指示を送信する。さらに、指示部４１７は、２以上のノードの各ノードに対して、当該各ノードが実行する集計処理の処理結果を自ノードに送信する指示を送信する。
【００５０】
また、種別が親集計部である集計部４０３は、自身の第１の集計処理１２１の負荷を分散させた２以上のノードのうちの第１のノードから、第１のノードが実行する第２の集計処理１２２を他のノードに変更する変更依頼を受け付けることがある。ここで、第１のノードは、該当の集計部４０３自身の負荷を分散させた先のノードであり、子集計部となるが、新たな子を生成している場合には、親集計部となる。また、変更依頼を、以下、「担当変更依頼」と称する。
【００５１】
担当変更依頼を受け付けた場合、変更先ノード決定部４１４は、集計担当ノード群の性能情報１１２に含まれる負荷情報１１１が示す負荷に基づいて、集計担当ノード群から、第１のノードが実行する第２の集計処理１２２を実行させる第２のノードを決定する。ここで、第２のノードは、集計担当ノード群のうちの自ノードおよび集計部４０３を有するノード以外のノードである。例えば、第２のノードは、集計担当ノード群のうちの自ノードおよび集計部４０３を有するノード以外のうち、負荷が最も低いノードである。また、第２のノードは、集計担当ノード群のうちの自ノード以外のうち、負荷が最も低いノードが第１のノードである場合、変更先ノード決定部４１４は、第１のノードが実行する第２の集計処理１２２の実行先を変更せず、第１のノードが実行するとしてもよい。
【００５２】
そして、実行要求送信部４１５は、第１のノードが実行する第２の集計処理１２２を、第１のノードから第２のノードに変更する。そして、指示部４１７は、集計担当ノード群の各ノードに対して、各ノードの性能情報の送信先を第２のノードに変更する指示を送信する。さらに、指示部４１７は、第２のノードに対して、第２のノードが実行する第２の集計処理１２２の処理結果を自ノードに送信する指示を送信する。担当変更依頼については、図１２でより詳細に説明する。
【００５３】
また、種別が親集計部である集計部４０３は、自身の第１の集計処理１２１の負荷を分散させた２以上のノードのうちの第３のノードから、第３のノードが実行する第２の集計処理１２２を消滅させる消滅依頼を受け付けることがある。消滅依頼を受け付けた場合、消滅判断部４１６は、自ノードの負荷に基づいて、第３のノードが実行する第２の集計処理１２２を消滅させるか否かを判断する。例えば、消滅判断部４１６は、自ノードの負荷が所定の閾値以下ならば、第３のノードが実行する第２の集計処理１２２を消滅させると判断してもよい。または、消滅判断部４１６は、自ノードの負荷に、第３のノードの負荷を加えた値が、所定の閾値以下ならば、第３のノードが実行する第２の集計処理１２２を消滅させると判断してもよい。
【００５４】
そして、消滅判断部４１６が、第３のノードが実行する第２の集計処理１２２を消滅させると判断したとする。この場合、指示部４１７は、第３のノードが集計する集計担当ノード群の各ノードに対して、該当の各ノードの性能情報１１２の送信先を第２のノードに変更する指示を送信する。さらに、指示部４１７は、第３のノードに対して、第３のノードが実行する第２の集計処理１２２を消滅させる指示を送信する。
【００５５】
また、集計処理実行部４１１は、複数のノードのうちの第４のノードから、第１の集計処理の実行要求を受け付けた場合、第１の集計処理１２１を実行する。第４のノードは、例えば、集計処理実行部４１１＃３であれば、ノード＃１となる。
【００５６】
また、複数のノードに新たなノードが追加された場合、または、複数のノードのうちのいずれかのノードが除かれたとする。この場合、代表ノードにある指示部４１７は、集計処理を分散させているならば、子集計部となる集計部４０３に対して、集計処理の分散を解除する指示を送信する。ここで、ノードが追加されることを、「増設」と呼称し、ノードが除かれることを「減設」と呼称する。
【００５７】
書き込み部４０４は、集計部４０３からの集計値や、各ノードの性能情報１１２に時刻情報を対応付けて、時系列ＤＢ１１０に書き込む。時系列ＤＢ１１０の記憶内容の一例については、図６、図７等で示す。
【００５８】
次に、情報処理システム１００における性能情報１１２の集計に関するデータの流れについて、図５〜図１２を用いて説明する。
【００５９】
図５は、情報処理システム１００の初期状態における性能情報１１２の収集例を示す説明図である。図５で示す初期状態では、情報処理システム１００内には集計部４０３ーＡ＃１が、代表ノードとなるノード＃１だけに存在する。各ノードのノード集計部４０２は、各ノードで取得した性能情報１１２を集計し、集計値を集計部４０３−Ａ＃１へ送信する。
【００６０】
集計部４０３−Ａ＃１は、図５の（Ａ−１）で示すように、送信された集計値をさらに集計する。また、集計部４０３−Ａ＃１は、図５の（Ａ−２）で示すように、自ノードのＣＰＵ負荷とネットワーク負荷を、集計担当ノードのＣＰＵ平均負荷とネットワーク平均負荷とそれぞれ比較する。集計部４０３−Ａ＃１は、図５の（Ａ−３）で示すように、比較の結果、自ノードの負荷が平均より一定値を上回る場合フラグをたてる。その後、集計部４０３−Ａ＃１は、図５の（Ａ−４）で示すように、計算した値を書き込み部４０４に送信する。
【００６１】
ここで、各ノードのＣＰＵ負荷情報として、以下に示すＣＰＵ使用率が送信される場合について、集計部４０３−Ａ＃１が図５の（Ａ−１）〜（Ａ−４）で示す処理を実行する例を示す。ノード＃１〜６のＣＰＵ使用率が、それぞれ、６０［％］、５０［％］、１０［％］、９０［％］、２０［％］、６０［％］であるとする。
【００６２】
集計部４０３−Ａ＃１は、図５の（Ａ−１）において、下記計算式によりＣＰＵ使用率の平均を計算する。
【００６３】
（６０＋５０＋１０＋９０＋２０＋６０）／６＝４８．３
【００６４】
そして、集計部４０３−Ａ＃１は、図５の（Ａ−２）において、下記不等式により自ノードのＣＰＵ負荷と、集計担当ノードのＣＰＵ負荷とを比較する。ここで、負荷判定値を、１０［％］とする。
【００６５】
６０＞４８．３＋１０
【００６６】
上述した不等式は真となるため、集計部４０３−Ａ＃１は、図５の（Ａ−３）において、フラグをたてる。そして、集計部４０３−Ａ＃１は、図５の（Ａ−４）において、計算した値として、４８．３［％］を書き込み部４０４に送る。
【００６７】
図６は、ノード＃１の負荷が増加した場合の一例を示す説明図である。図６では、ノード＃１の負荷が増加し、フラグをたてた本数が一定時間内に一定数を超えた場合である。この場合、集計部４０３−Ａ＃１は、時系列ＤＢ１１０を参照して、集計担当ノードの中で負荷の低い２つのノードに集計部４０３−Ｂを生成する。
【００６８】
ここで、図６では、時系列ＤＢ１１０の記憶内容の一例を示す。図６に示す時系列ＤＢ１１０には、ＣＰＵ使用率に関する情報が格納されている。そして、図６に示す時系列ＤＢ１１０は、レコード６０１−１〜４を有する。具体的には、図６に示す時系列ＤＢ１１０は、時間と、ＣＰＵ平均と、各ＣＰＵの使用率というフィールドを含む。ここで、図６では、各ＣＰＵの使用率フィールドは、表示の簡略化のため、各ノードのＣＰＵの符号だけを表示する。時間フィールドには、ＣＰＵ使用率を計測した時間が格納される。ＣＰＵ平均フィールドには、情報処理システム１００内の全てのＣＰＵ使用率の平均値が格納される。各ＣＰＵの使用率フィールドには、各ＣＰＵの使用率が格納される。また、時系列ＤＢ１１０の記憶内容は、図６の例に限られない。図７では、時系列ＤＢ１１０に、ネットワークの利用率に関する情報が格納される例を示す。
【００６９】
図６で示す時系列ＤＢ１１０の破線で区切った領域が、各集計担当ノードのＣＰＵの使用率を示す。そして、各集計担当ノードの中で負荷の低い２つのノードは、一点鎖線で囲ったノード＃３、５であるため、集計部４０３−Ａ＃１は、ノード＃３に集計部４０３−Ｂ＃３を生成し、ノード＃５に集計部４０３−Ｂ＃５を生成する。そして、集計部４０３−Ａ＃１は、集計部４０３−Ｂ＃３、５のそれぞれの集計担当ノードを決定し、集計部４０３−Ｂ＃３、５に通知する。例えば、図６の例では、集計部４０３−Ａ＃１は、集計部４０３−Ｂ＃３の集計担当ノードを、ノード＃１、２、３と決定し、集計部４０３−Ｂ＃５の集計担当ノードを、ノード＃４、５、６と決定する。そして、集計部４０３−Ｂ＃３、５は、性能情報１１２の送信先を自ノードに変更するように、集計担当ノードとして受け付けたノードに通知する。また、集計部４０３−Ａ＃１と、集計部４０３−Ｂ＃３、５との関係は、集計部４０３−Ａ＃１が親集計部となり、集計部４０３−Ｂ＃３、５が子集計部という親子関係となる。
【００７０】
図７は、時系列ＤＢ１１０の記憶内容の他の例を示す説明図である。図７に示す時系列ＤＢ１１０には、ネットワークに関する情報が格納されている。そして、図７に示す時系列ＤＢ１１０は、レコード７０１−１〜４を有する。具体的には、図７に示す時系列ＤＢ１１０は、時間と、ＮＩＣ平均と、各ＮＩＣの利用率というフィールドを含む。ここで、図７では、各ＮＩＣの利用率フィールドは、表示の簡略化のため、各ノードのＮＩＣの符号だけを表示する。時間フィールドには、ネットワーク利用率を計測した時間が格納される。ＮＩＣ平均フィールドには、情報処理システム１００内の全てのＮＩＣの利用率の平均値が格納される。各ＣＰＵの利用率フィールドには、各ＮＩＣの利用率が格納される。
【００７１】
図７で示す時系列ＤＢ１１０の破線で区切った領域が、各集計担当ノードのネットワークの利用率を示す。そして、集計担当ノードの中で負荷の低い２つのノードは、一点鎖線で囲ったノード＃３、５である。従って、集計部４０３−Ａ＃１は、図７で示す時系列ＤＢ１１０を参照して、ノード＃３に集計部４０３−Ｂ＃３を生成し、ノード＃５に集計部４０３−Ｂ＃５を生成する。
【００７２】
図８は、集計部４０３−Ｂを作成した後の性能情報１１２の収集例を示す説明図である。図８では、集計部４０３−Ｂ＃３、５を生成した後の状態を示す。各ノードのノード集計部４０２は、各ノードで取得した性能情報１１２を集計し、集計値をノード＃３、５のうちの送信先として通知されたノードへ送信する。
【００７３】
集計部４０３−Ｂ＃３、５は、それぞれ、図８の（Ｂ−１）で示すように、送信された集計値から、時刻ごとの集計値の合計や平均を計算する。また、集計部４０３−Ｂ＃３、５は、それぞれ、図８の（Ｂ−２）で示すように、自ノードのＣＰＵ負荷とネットワーク負荷を、集計担当ノードのＣＰＵ平均負荷とネットワーク平均負荷とそれぞれ比較する。集計部４０３−Ｂ＃３、５は、図８の（Ｂ−３）で示すように、比較の結果、自ノードの負荷が平均より一定値を上回る場合フラグをたてる。その後、集計部４０３−Ｂ＃３、５は、それぞれ、図８の（Ｂ−４）で示すように、計算した値を集計部４０３−Ａ＃１に送信する。
【００７４】
ここで、各ノードのＣＰＵ負荷情報として、以下に示すＣＰＵ使用率が送信される場合について、集計部４０３−Ｂ＃３が図８の（Ｂ−１）〜（Ｂ−４）で示す処理を実行する例を示す。ノード＃１〜３のＣＰＵ使用率が、それぞれ、１０［％］、２０［％］、４０［％］であるとする。
【００７５】
集計部４０３−Ｂ＃３は、図８の（Ｂ−１）において、下記計算式によりＣＰＵ使用率の平均を計算する。
【００７６】
（１０＋２０＋４０）／３＝２３．３
【００７７】
そして、集計部４０３−Ｂ＃３は、図８の（Ｂ−２）において、下記不等式により自ノードのＣＰＵ負荷と、集計担当ノードのＣＰＵ負荷とを比較する。ここで、負荷判定値を、１０［％］とする。
【００７８】
４０＞２３．３＋１０
【００７９】
上述した不等式は真となるため、集計部４０３−Ｂ＃３は、図８の（Ｂ−３）において、フラグをたてる。そして、集計部４０３−Ｂ＃３は、図８の（Ｂ−４）において、計算した値として、２３．３［％］を集計部４０３−Ａ＃１に送信する。
【００８０】
また、集計部４０３−Ａ＃１は、図８の（Ａ−１）で示すように、送信された集計値から、時刻ごとの集計値の合計や平均を計算する。そして、集計部４０３−Ａ＃１は、図８の（Ａ−２）で示すように、計算した値を書き込み部４０４に送る。
【００８１】
図９は、ノード＃３の負荷が増加した場合の一例を示す説明図である。図９では、ノード＃３の負荷が増加し、フラグをたてた本数が一定時間内に一定数を超えた場合である。この場合、集計部４０３−Ｂ＃３は、時系列ＤＢ１１０を参照して、集計担当ノードの中で負荷の低い２つのノードに集計部４０３−Ｃを生成する。
【００８２】
ここで、図９では、時系列ＤＢ１１０の記憶内容の一例を示す。図９に示す時系列ＤＢ１１０には、ＣＰＵ使用率に関する情報が格納されている。そして、図９に示す時系列ＤＢ１１０は、レコード９０１−１〜４を有する。
【００８３】
図６で示す時系列ＤＢ１１０の破線で区切った領域が、ノード＃３の各集計担当ノードのＣＰＵの使用率を示す。そして、各集計担当ノードの中で負荷の低い２つのノードは、一点鎖線で囲ったノード＃１、２であるため、集計部４０３−Ｂ＃３は、ノード＃１に集計部４０３−Ｃ＃１を生成し、ノード＃２に集計部４０３−Ｃ＃２を生成する。集計部４０３−Ｂ＃３は、集計部４０３−Ｃ＃１、２のそれぞれの集計担当ノードを決定し、集計部４０３−Ｃ＃１、２に通知する。例えば、図９の例では、集計部４０３−Ｂ＃３は、集計部４０３−Ｃ＃１の集計担当ノードを、ノード＃１と決定し、集計部４０３−Ｃ＃２の集計担当ノードを、ノード＃２、３と決定する。そして、集計部４０３−Ｃ＃１、２は、性能情報１１２の送信先を自ノードに変更するように、集計担当ノードとして受け付けたノードに通知する。また、集計部４０３−Ｂ＃３と、集計部４０３−Ｃ＃１、２との関係は、集計部４０３−Ｂ＃３が親集計部となり、集計部４０３−Ｃ＃１、２が子集計部という親子関係となる。
【００８４】
図１０は、集計部４０３−Ｃを作成した後の性能情報１１２の収集例を示す説明図である。図１０では、集計部４０３−Ｃ＃１、２を生成した後の状態を示す。各ノードのノード集計部４０２は、各ノードで取得した性能情報１１２を集計し、集計値をノード＃１、２のうちの送信先として通知されたノードへ送信する。
【００８５】
集計部４０３−Ｃ＃１、２は、それぞれ、図１０の（Ｃ−１）で示すように、送信された集計値から、時刻ごとの集計値の合計や平均を計算する。また、集計部４０３−Ｃ＃１、２は、それぞれ、図１０の（Ｃ−２）で示すように、自ノードのＣＰＵ負荷とネットワーク負荷を、集計担当ノードのＣＰＵ平均負荷とネットワーク平均負荷とそれぞれ比較する。集計部４０３−Ｃ＃１、２は、図１０の（Ｃ−３）で示すように、比較の結果、自ノードの負荷が平均より一定値を上回る場合フラグをたてる。その後、集計部４０３−Ｃ＃１、２は、それぞれ、図１０の（Ｃ−４）で示すように、計算した値を集計部４０３−Ｂ＃３に送信する。
【００８６】
また、集計部４０３−Ｂ＃３は、図１０の（Ｂ−１）で示すように、送信された集計値から、時刻ごとの集計値の合計や平均を計算する。そして、集計部４０３−Ｂ＃３は、図１０の（Ｂ−２）で示すように、計算した値を集計部４０３−Ａ＃１に送信する。
【００８７】
図１１は、ノード＃３の負荷が減少した場合の一例を示す説明図である。図１１では、図８で示した状態の後、ノード＃３の負荷が減少し、低負荷フラグをたてた本数が一定時間内に一定数を超えた場合である。この場合、集計部４０３−Ｂ＃３は、集計部４０３−Ｂ＃３の親集計部となる集計部４０３−Ａ＃１に、集計部４０３の消滅の依頼を示す消滅依頼を送信する。消滅依頼を受け取った集計部４０３−Ａ＃１は、時系列ＤＢ１１０を参照して、自身の負荷が低ければ、子集計部となる集計部４０３−Ｂ＃３を消滅させる。
【００８８】
集計部４０３−Ｂ＃３は、集計担当ノードに送付先を親集計部となる集計部４０３−Ａ＃１に変更するように通知したのち、消滅する。一方、集計部４０３−Ａ＃１は、自身の負荷が低い状態でなければ、子集計部を消滅させない。
【００８９】
ここで、図１１では、時系列ＤＢ１１０の記憶内容の一例を示す。図１１に示す時系列ＤＢ１１０には、ＣＰＵ使用率に関する情報が格納されている。そして、図１１に示す時系列ＤＢ１１０は、レコード１１０１−１〜４を有する。
【００９０】
図１１で示す例では、レコード１１０１−１〜４が示すように、ノード＃１のＣＰＵ負荷が低い状態であるため、集計部４０３−Ｂ＃３を消滅させる。集計部４０３−Ｂ＃３は、自身の集計担当ノードとなるノード＃１〜３に、性能情報１１２の送信先をノード＃１に変更するように通知する。
【００９１】
図１２は、ノード＃３の負荷が大幅に増加した場合の一例を示す説明図である。図１２では、図８で示した状態の後、ノード＃３の負荷が大幅に増加し、高負荷フラグをたてた本数が一定時間内に一定数を超えた場合である。この場合、集計部４０３−Ｂ＃３は、集計部４０３−Ｂ＃３の親集計部となる集計部４０３−Ａ＃１に、性能情報１１２を集計する担当変更の依頼を示す担当変更依頼を送信する。担当変更依頼を受け取った集計部４０３−Ａ＃１は、時系列ＤＢ１１０を参照して、集計部４０３−Ｂ＃３の集計担当ノードとなるノード＃１〜３のうちの最も低いノードに改めて子集計部を生成する。集計部４０３−Ａ＃１は、新しい子集計部を生成後、古い子集計部を消滅させる。
【００９２】
ここで、図１２では、時系列ＤＢ１１０の記憶内容の一例を示す。図１２に示す時系列ＤＢ１１０には、ＣＰＵ使用率に関する情報が格納されている。そして、図１２に示す時系列ＤＢ１１０は、レコード１２０１−１〜４を有する。
【００９３】
図１２で示す例では、レコード１２０１−３、４の二重丸が示すように、ノード＃３の負荷が大幅に増加している。そして、集計部４０３−Ａ＃１は、時系列ＤＢ１１０を参照して、ノード＃１〜３のうち負荷が最も低いノード＃２に、新しい子集計部として、集計部４０３−Ｂ＃２を生成する。そして、集計部４０３−Ａ＃１は、集計部４０３−Ｂ＃３を消滅させる。図１２では、集計部４０３−Ｂ＃３が消滅したことを、集計部４０３−Ｂ＃３の輪郭を破線とすることにより模式的に示す。
【００９４】
また、図示していないが、ノード増設および減設があった場合、最上位の親集計部となる集計部４０３−Ａ＃１は、自身以外の集計部４０３を消滅させ、全ノードのノード集計部４０２に、送信先を集計部４０３−Ａ＃１に変更するように通知する。通知後、集計部４０３−Ａ＃１は、図５〜図１２で示した処理を繰り返す。
【００９５】
次に、情報処理システム１００が行う処理を示すフローチャートを、図１３〜図１８を用いて説明する。
【００９６】
図１３は、子集計部における性能情報収集処理手順の一例を示すフローチャート（その１）である。また、図１４は、子集計部における性能情報収集処理手順の一例を示すフローチャート（その２）である。図１３と図１４とで示す子集計部における性能情報収集処理は、種別が子集計部となる集計部４０３が実行する処理である。また、図１３と図１４とで示す子集計部における性能情報収集処理は、定期的に実行される。
【００９７】
集計部４０３は、集計担当ノードから、各ノードの集計値を受け取る（ステップＳ１３０１）。次に、集計部４０３は、受け取った集計値をさらに集計する（ステップＳ１３０２）。そして、集計部４０３は、自ノードのＣＰＵまたは／およびネットワーク負荷が集計ノード平均より負荷判定値以上高いか否かを判断する（ステップＳ１３０３）。自ノードのＣＰＵまたは／およびネットワーク負荷が集計ノード平均より負荷判定値以上高い場合（ステップＳ１３０３：Ｙｅｓ）、集計部４０３は、自ノードのＣＰＵまたは／およびネットワーク負荷が集計ノード平均より高負荷判定値以上高いか否かを判断する（ステップＳ１３０４）。
【００９８】
自ノードのＣＰＵまたは／およびネットワーク負荷が集計ノード平均より高負荷判定値以上高い場合（ステップＳ１３０４：Ｙｅｓ）、集計部４０３は、高負荷フラグをたてる（ステップＳ１３０５）。そして、ステップＳ１３０５の処理終了後、または、自ノードのＣＰＵまたは／およびネットワーク負荷が集計ノード平均より高負荷判定値以上高くない場合（ステップＳ１３０４：Ｎｏ）、集計部４０３は、フラグをたてる（ステップＳ１３０６）。
【００９９】
一方、自ノードのＣＰＵまたは／およびネットワーク負荷が集計ノード平均より負荷判定値以上高くない場合（ステップＳ１３０３：Ｎｏ）、集計部４０３は、自ノードのＣＰＵまたは／およびネットワーク負荷が集計ノード平均より負荷判定値以上低いか否かを判断する（ステップＳ１３０７）。
【０１００】
自ノードのＣＰＵまたは／およびネットワーク負荷が集計ノード平均より負荷判定値以上低い場合（ステップＳ１３０７：Ｙｅｓ）、集計部４０３は、低負荷フラグをたてる（ステップＳ１３０８）。ステップＳ１３０６、Ｓ１３０８の処理終了後、集計部４０３は、たてたフラグの本数を集計する（ステップＳ１３０９）。
【０１０１】
ステップＳ１３０９の処理終了後、または、自ノードまたは／およびネットワーク負荷が集計ノード平均より負荷判定値以上低くない場合（ステップＳ１３０７：Ｎｏ）、集計部４０３は、親集計部へ集計値を送信する（ステップＳ１３１０）。そして、集計部４０３は、高負荷フラグが一定数以上か否かを判断する（ステップＳ１４０１）。
【０１０２】
高負荷フラグが一定数以上である場合（ステップＳ１４０１：Ｙｅｓ）、集計部４０３は、親集計部に担当変更依頼を送信する（ステップＳ１４０２）。一方、高負荷フラグが一定数未満である場合（ステップＳ１４０１：Ｎｏ）、集計部４０３は、フラグが一定数以上か否かを判断する（ステップＳ１４０３）。フラグが一定数以上である場合（ステップＳ１４０３：Ｙｅｓ）、集計部４０３は、時系列ＤＢ１１０を参照して、集計担当ノードのうちの負荷の低い２ノードに子集計部を生成する（ステップＳ１４０４）。そして、集計部４０３は、自身の種別を親集計部に設定する（ステップＳ１４０５）。
【０１０３】
一方、フラグが一定数未満である場合（ステップＳ１４０３：Ｎｏ）、集計部４０３は、低負荷フラグが一定数以上か否かを判断する（ステップＳ１４０６）。低負荷フラグが一定数以上である場合（ステップＳ１４０６：Ｙｅｓ）、集計部４０３は、親集計部に消滅依頼を送信する（ステップＳ１４０７）。
【０１０４】
一方、低負荷フラグが一定数未満である場合（ステップＳ１４０６：Ｎｏ）、集計部４０３は、古いフラグを削除する（ステップＳ１４０８）。ここで、古いフラグは、例えば、たててから一定時間以上が経過したフラグである。
【０１０５】
ステップＳ１４０２、Ｓ１４０５、Ｓ１４０７、Ｓ１４０８のいずれかの処理終了後、集計部４０３は、子集計部における性能情報収集処理を終了する。
【０１０６】
ここで、図４で説明したように、情報処理システム１００内に集計部４０３が１つしかない場合には、該当の集計部４０３は、代表ノードにあるものであり、種別は子集計部であるから、図１３と図１４とで示す処理を行う。そして、該当の集計部４０３は、ステップＳ１３１０の処理の代わりに、書き込み部４０４に集計値を書き込む。また、該当の集計部４０３は、ステップＳ１４０１：Ｙｅｓ、ステップＳ１４０６：Ｙｅｓとなっても、ステップＳ１４０２の処理、ステップＳ１４０７の処理を行わない。
【０１０７】
図１５は、代表ノードの親集計部における性能情報収集処理手順の一例を示すフローチャートである。代表ノードの親集計部における性能情報収集処理は、代表ノードの集計部４０３の種別が親集計部であるときの性能情報収集処理である。代表ノードの親集計部における性能情報収集処理は、定期的に実行される。
【０１０８】
集計部４０３は、子集計部から集計値を受け取る（ステップＳ１５０１）。次に、集計部４０３は、受け取った集計値を集計する（ステップＳ１５０２）。そして、集計部４０３は、集計した集計値を書き込み部４０４に送る（ステップＳ１５０３）。ステップＳ１５０３の処理終了後、集計部４０３は、代表ノードの親集計部における性能情報収集処理を終了する。
【０１０９】
また、代表ノード以外の親集計部となる集計部４０３も、図１５で示した処理とほぼ同一の処理を行う。差異としては、ステップＳ１５０３の処理において、該当の集計部４０３は、自身の親集計部に、集計した集計値を送信する。
【０１１０】
図１６は、親集計部における担当変更依頼受け付け時処理手順の一例を示すフローチャートである。親集計部における担当変更依頼受け付け時処理は、親集計部となる集計部４０３が、自身の子集計部となる集計部４０３から、担当変更依頼を受け付けた際の処理である。このように、親集計部における担当変更依頼受け付け時処理の実行主体は、親集計部となる集計部４０３であり、下記の説明では、単に、集計部４０３と記載する。
【０１１１】
集計部４０３は、子集計部から担当変更依頼を受け取る（ステップＳ１６０１）。次に、集計部４０３は、時系列ＤＢ１１０を参照して、依頼元集計部の集計担当ノードの負荷を取得する（ステップＳ１６０２）。そして、集計部４０３は、依頼元集計部の集計担当ノードのうち、依頼のあった子集計部ノードの負荷が一番低いか否かを判断する（ステップＳ１６０３）。依頼のあった子集計部ノードの負荷が一番低くない場合（ステップＳ１６０３：Ｎｏ）、集計部４０３は、負荷が一番低いノードに子集計部を生成する（ステップＳ１６０４）。そして、集計部４０３は、生成した子集計部に依頼元と同じ集計担当ノードを通知する（ステップＳ１６０５）。次に、集計部４０３は、依頼元の子集計部を削除する（ステップＳ１６０６）。
【０１１２】
一方、依頼のあった子集計部ノードの負荷が一番低い場合（ステップＳ１６０３：Ｙｅｓ）、集計部４０３は、依頼元集計部の高負荷フラグを全削除する（ステップＳ１６０７）。そして、集計部４０３は、担当変更不可であることを依頼元の子集計部に通知する（ステップＳ１６０８）。
【０１１３】
ステップＳ１６０６、またはステップＳ１６０８の処理終了後、集計部４０３は、親集計部における担当変更依頼受け付け時処理を終了する。
【０１１４】
図１７は、親集計部における消滅依頼受け付け時処理手順の一例を示すフローチャートである。親集計部における消滅依頼受け付け時処理は、親集計部となる集計部４０３が、自身の子集計部となる集計部４０３から、消滅依頼を受け付けた際の処理である。このように、親集計部における消滅依頼受け付け時処理の実行主体は、親集計部となる集計部４０３であり、下記の説明では、単に、集計部４０３と記載する。
【０１１５】
集計部４０３は、子集計部から消滅依頼を受け取る（ステップＳ１７０１）。次に、集計部４０３は、時系列ＤＢを参照して、親集計部自身の負荷を取得する（ステップＳ１７０２）。そして、集計部４０３は、自身の負荷が高い状態が続いているか否かを判断する（ステップＳ１７０３）。自身の負荷が高い状態が続いていない場合（ステップＳ１７０３：Ｎｏ）、集計部４０３は、子集計部経由で集計担当ノードの送信先を通知する（ステップＳ１７０４）。そして、集計部４０３は、依頼元の子集計部を削除する（ステップＳ１７０５）。ステップＳ１７０５の処理終了後、集計部４０３は、親集計部における消滅依頼受け付け時処理を終了する。
【０１１６】
一方、自身の負荷が高い状態が続いている場合（ステップＳ１７０３：Ｙｅｓ）、集計部４０３は、依頼元集計部の低負荷フラグを全削除する（ステップＳ１７０６）。そして、集計部４０３は、子集計部を消滅させずに、親集計部における消滅依頼受け付け時処理を終了する。
【０１１７】
図１８は、代表ノードにおけるノード増減設時処理手順の一例を示すフローチャートである。代表ノードにおけるノード増減設時処理は、情報処理システム１００に対してノードが増設したり減設したりする際に、代表ノードの集計部４０３が行う処理である。このように、代表ノードにおけるノード増減設時処理の実行主体は、代表ノードの集計部４０３であり、下記の説明では、単に、集計部４０３と記載する。
【０１１８】
ノードの増減設が実施された後、集計部４０３は、子集計部が存在するか否かを判断する（ステップＳ１８０１）。子集計部が存在する場合（ステップＳ１８０１：Ｙｅｓ）、集計部４０３は、子集計部経由で、全ノードのノード集計部４０２に送付先を代表ノードの集計部４０３に変更するように通知する（ステップＳ１８０２）。そして、集計部４０３は、全子集計部を削除し（ステップＳ１８０３）、代表ノードにおけるノード増減設時処理を終了する。
【０１１９】
一方、子集計部が存在しない場合（ステップＳ１８０１：Ｎｏ）、集計部４０３は、特に変更を行わず、代表ノードにおけるノード増減設時処理を終了する。
【０１２０】
以上説明したように、本実施の形態における各ノードは、自ノードの負荷と、送信された各ノードの負荷とから集計処理の負荷分散を決めることで、ＤＢを用いて決めないため負荷分散の判断にかかる負荷を抑制することができる。また、情報処理システム１００は、代表ノードに負荷が集中しないため、性能情報１１２の集計値を収集する際のボトルネックを回避することができる。また、情報処理システム１００は、利用者Ｕの業務への影響を最小限に抑えることができる。
【０１２１】
また、本実施の形態における各ノードは、担当変更依頼を受け付けた場合、自ノードの集計担当ノード群のうちの負荷の低いノードに、集計部４０３を生成してもよい。これにより、本実施の形態における各ノードは、負荷が高くなったノードの負荷を減少させて、負荷の低いノードに集計処理を行わせるため、負荷分散を行うことができる。
【０１２２】
また、本実施の形態における各ノードは、消滅依頼を受け付けた場合、自ノードの負荷が低い場合に、消滅依頼の送信元の集計部４０３を消滅させ、自身が、集計処理を実行してもよい。これにより、本実施の形態における各ノードは、負荷分散をする必要がなくなった場合には、自身の子集計部となる集計部４０３を消滅させて、過剰な負荷分散を抑制することができる。
【０１２３】
また、本実施の形態における各ノードは、他ノードの親集計部となる集計部４０３から、集計部４０３が生成させられた場合に、自身の集計部４０３によって集計処理を実行し、処理結果を親集計部となる集計部４０３に送信する。そして、前述したように、本実施の形態における各ノードは、他ノードに子集計部となる集計部４０３を生成することがある。従って、情報処理システム１００の各ノードは、親子孫というように、３世代以上の負荷分散を構築することができる。
【０１２４】
また、代表ノードの集計部４０３は、増設または減設があった際には、情報処理システム１００内の代表ノードの集計部４０３以外の集計部４０３を消滅させてもよい。増設または減設があると、各ノードの負荷が変化することがある。従って、代表ノードの集計部４０３以外を全て消滅させて負荷分散を再度行うことにより、代表ノードの集計部４０３は、増設または減設があっても、適切な負荷分散を行うことができる。
【０１２５】
なお、本実施の形態で説明した状態情報を収集する方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本状態情報収集プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本状態情報収集プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１２６】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１２７】
（付記１）複数の情報処理装置で構築され、前記複数の情報処理装置の各情報処理装置で取得された前記各情報処理装置の負荷を示す負荷情報を含む状態情報を集計する情報処理システムに含まれる、前記状態情報を収集する情報処理装置であって、
前記情報処理装置の負荷と、前記情報処理装置が集計する集計対象の情報処理装置群の各情報処理装置の状態情報に含まれる負荷情報が示す負荷とに基づいて、前記各情報処理装置の状態情報を集計する第１の集計処理を分散させるか否かを判断し、
前記第１の集計処理を分散させると判断した場合、前記集計対象の情報処理装置群のうちの前記情報処理装置を除く２以上の情報処理装置の各情報処理装置に、前記集計対象の情報処理装置群を前記各情報処理装置の数で分割した各グループに属する情報処理装置の状態情報を集計する第２の集計処理の実行要求を送信し、
前記各グループに属する情報処理装置に対して、当該情報処理装置の状態情報の送信先を前記各グループに対して第２の集計処理を実行する情報処理装置に変更する指示を送信し、
前記２以上の情報処理装置の各情報処理装置に対して、当該各情報処理装置が実行する第２の集計処理の処理結果を前記情報処理装置に送信する指示を送信する、
制御部を有することを特徴とする情報処理装置。
【０１２８】
（付記２）前記制御部は、
前記２以上の情報処理装置のうちの第１の情報処理装置から、前記第１の情報処理装置が実行する第２の集計処理を他の情報処理装置に変更する変更依頼を受け付けた場合、前記集計対象の情報処理装置群の状態情報に含まれる負荷情報が示す負荷に基づいて、前記情報処理装置群のうちの前記情報処理装置および前記２以上の情報処理装置以外から、前記第１の情報処理装置が実行する第２の集計処理を実行させる第２の情報処理装置を決定し、
前記第１の情報処理装置が実行する第２の集計処理を、前記第１の情報処理装置から前記第２の情報処理装置に変更し、
当該各情報処理装置に対して、当該各情報処理装置の状態情報の送信先を前記第２の情報処理装置に変更する指示を送信し、
前記第２の情報処理装置に対して、前記第２の情報処理装置が実行する第２の集計処理の処理結果を前記情報処理装置に送信する指示を送信する、
ことを特徴とする付記１に記載の情報処理装置。
【０１２９】
（付記３）前記制御部は、
前記２以上の情報処理装置のうちの第３の情報処理装置から、前記第３の情報処理装置が実行する第２の集計処理を消滅させる消滅依頼を受け付けた場合、前記情報処理装置の負荷に基づいて、前記第３の情報処理装置が実行する第２の集計処理を消滅させるか否かを判断し、
前記第３の情報処理装置が実行する第２の集計処理を消滅させると判断した場合、前記第３の情報処理装置が集計する集計対象の情報処理装置群の各情報処理装置に対して、当該各情報処理装置の状態情報の送信先を前記第２の情報処理装置に変更する指示を送信し、
前記第３の情報処理装置に対して、前記第３の情報処理装置が実行する第２の集計処理を消滅させる指示を送信する、
ことを特徴とする付記１または２に記載の情報処理装置。
【０１３０】
（付記４）前記制御部は、
前記複数の情報処理装置のうちの第４の情報処理装置から、前記第１の集計処理の実行要求を受け付けた場合、前記第１の集計処理を実行し、
前記第１の集計処理の処理結果を、前記第４の情報処理装置に送信する、
ことを特徴とする付記１〜３のいずれか一つに記載の情報処理装置。
【０１３１】
（付記５）前記情報処理装置は、前記複数の情報処理装置の全ての情報処理装置の状態情報を集計した情報を有しており、
前記制御部は、
前記複数の情報処理装置に新たな情報処理装置が追加された場合、または、前記複数の情報処理装置のうちのいずれかの情報処理装置が除かれた場合、前記第１の集計処理を分散させているならば、前記第１の集計処理の分散を解除する、
ことを特徴とする付記１〜４のいずれか一つに記載の情報処理装置。
【０１３２】
（付記６）複数の情報処理装置で構築され、前記複数の情報処理装置の各情報処理装置で取得された前記各情報処理装置の負荷を示す負荷情報を含む状態情報を集計する情報処理システムであって、
前記状態情報を収集する情報処理装置は、
前記情報処理装置の負荷と、前記情報処理装置が集計する集計対象の情報処理装置群の各情報処理装置の状態情報に含まれる負荷情報が示す負荷とに基づいて、前記各情報処理装置の状態情報を集計する第１の集計処理を分散させるか否かを判断し、
前記第１の集計処理を分散させると判断した場合、前記集計対象の情報処理装置群のうちの前記情報処理装置を除く２以上の情報処理装置の各情報処理装置に、前記集計対象の情報処理装置群を前記各情報処理装置の数で分割した各グループに属する情報処理装置の状態情報を集計する第２の集計処理の実行要求を送信し、
前記各グループに属する情報処理装置に対して、当該情報処理装置の状態情報の送信先を前記各グループに対して第２の集計処理を実行する情報処理装置に変更する指示を送信し、
前記２以上の情報処理装置の各情報処理装置に対して、当該各情報処理装置が実行する第２の集計処理の処理結果を前記情報処理装置に送信する指示を送信する、
ことを特徴とする情報処理システム。
【０１３３】
（付記７）複数の情報処理装置で構築され、前記複数の情報処理装置の各情報処理装置で取得された前記各情報処理装置の負荷を示す負荷情報を含む状態情報を集計する情報処理システムに含まれる、前記状態情報を収集する情報処理装置に、
前記情報処理装置の負荷と、前記情報処理装置が集計する集計対象の情報処理装置群の各情報処理装置の状態情報に含まれる負荷情報が示す負荷とに基づいて、前記各情報処理装置の状態情報を集計する第１の集計処理を分散させるか否かを判断し、
前記第１の集計処理を分散させると判断した場合、前記集計対象の情報処理装置群のうちの前記情報処理装置を除く２以上の情報処理装置の各情報処理装置に、前記集計対象の情報処理装置群を前記各情報処理装置の数で分割した各グループに属する情報処理装置の状態情報を集計する第２の集計処理の実行要求を送信し、
前記各グループに属する情報処理装置に対して、当該情報処理装置の状態情報の送信先を前記各グループに対して第２の集計処理を実行する情報処理装置に変更する指示を送信し、
前記２以上の情報処理装置の各情報処理装置に対して、当該各情報処理装置が実行する第２の集計処理の処理結果を前記情報処理装置に送信する指示を送信する、
処理を実行させることを特徴とする状態情報収集プログラム。
【符号の説明】
【０１３４】
＃１〜＃６  ノード
１００  情報処理システム
１１０  時系列ＤＢ
１１１  負荷情報
１１２  性能情報
１２０〜１２２  集計処理
４００  制御部
４０１  取得部
４０２  ノード集計部
４０３  集計部
４０４  書き込み部
４１１  集計処理実行部
４１２  処理結果送信部
４１３  負荷分散判断部
４１４  変更先ノード決定部
４１５  実行要求送信部
４１６  消滅判断部
４１７  指示部
【図１】
2018081392.tif 000003
【図２】
2018081392.tif 000004
【図３】
2018081392.tif 000005
【図４】
2018081392.tif 000006
【図５】
2018081392.tif 000007
【図６】
2018081392.tif 000008
【図７】
2018081392.tif 000009
【図８】
2018081392.tif 000010
【図９】
2018081392.tif 000011
【図１０】
2018081392.tif 000012
【図１１】
2018081392.tif 000013
【図１２】
2018081392.tif 000014
【図１３】
2018081392.tif 000015
【図１４】
2018081392.tif 000016
【図１５】
2018081392.tif 000017
【図１６】
2018081392.tif 000018
【図１７】
2018081392.tif 000019
【図１８】
2018081392.tif 000020