(57)【要約】【課題】上位アプリケーションの性能を向上させる。【解決手段】通信サイズ最適化装置１０は、クライアントがチャンクサーバからファイルを読み出す処理に関する動作ログと、チャンクサーバまたはクライアントが動作するサーバで動作するアプリケーションが消費するメモリサイズとを収集する。そして、通信サイズ最適化装置１０は、収集された動作ログおよびメモリサイズに基づいて、チャンクサーバとクライアントとの間で送受信されるデータサイズである通信サイズを算出する。そして、通信サイズ最適化装置１０は、算出された通信サイズを、チャンクサーバとクライアントとの通信における通信サイズとして反映させる。【選択図】図１
2015172800.tif 000002
【特許請求の範囲】
【請求項１】
クライアントがチャンクサーバからファイルを読み出す処理に関する動作ログと、前記チャンクサーバまたは前記クライアントが動作するサーバで動作するアプリケーションが消費するメモリサイズとを収集する収集部と、
前記収集部によって収集された前記動作ログおよび前記メモリサイズに基づいて、前記チャンクサーバと前記クライアントとの間で送受信されるデータサイズである通信サイズを算出する調整部と、
前記調整部によって算出された通信サイズを、前記チャンクサーバと前記クライアントとの通信における通信サイズとして反映させる反映部と
を備えることを特徴とする通信サイズ最適化装置。
【請求項２】
前記調整部は、算出した通信サイズが、前記チャンクサーバおよび前記クライアントのメモリサイズを超えているか否かを判定し、
前記反映部は、前記調整部によって前記通信サイズが前記メモリサイズを超えていないと判定された場合に、前記調整部によって算出された通信サイズを、前記チャンクサーバと前記クライアントとの通信における通信サイズとして反映させることを特徴とする請求項１に記載の通信サイズ最適化装置。
【請求項３】
前記収集部は、前記収集した前記動作ログから、シーケンシャルにチャンクデータから読み出すデータサイズ毎に、読み出された回数をカウントしたデータと、前記チャンクサーバおよび前記クライアントで同時にオープンするチャンク数と、前記クライアント上で動作するアプリケーションが消費するメモリサイズとを抽出し、
前記調整部は、前記収集部によって抽出された情報と、所定のしきい値とに基づいて、前記通信サイズを算出することを特徴とする請求項１または２に記載の通信サイズ最適化装置。
【請求項４】
前記調整部は、算出した通信サイズをグラフ化して表示することを特徴とする請求項１乃至３のいずれか一つに記載の通信サイズ最適化装置。
【請求項５】
クライアントからの要求に応じて読み出されるファイルを記憶するチャンクサーバと、該チャンクサーバからファイルを読み出すクライアントと、該チャンクサーバと前記クライアントとの間で送受信されるデータサイズである通信サイズを算出する通信サイズ最適化装置とを有する通信サイズ最適化システムであって、
前記通信サイズ最適化装置が、
前記クライアントが前記チャンクサーバからファイルを読み出す処理に関する動作ログと、前記チャンクサーバまたは前記クライアントが動作するサーバで動作するアプリケーションが消費するメモリサイズとを収集する収集部と、
前記収集部によって収集された前記動作ログおよび前記メモリサイズに基づいて、前記通信サイズを算出する調整部と、
を備え、
前記チャンクサーバが、
前記調整部によって算出された通信サイズを、前記クライアントとの通信における通信サイズとして反映させる反映部
を備え、
前記クライアントが、
前記調整部によって算出された通信サイズを、前記チャンクサーバとの通信における通信サイズとして反映させる反映部
を備えることを特徴とする通信サイズ最適化システム。
【請求項６】
クライアントがチャンクサーバからファイルを読み出す処理に関する動作ログと、前記チャンクサーバまたは前記クライアントが動作するサーバで動作するアプリケーションが消費するメモリサイズとを収集する収集工程と、
前記収集工程によって収集された前記動作ログおよび前記メモリサイズに基づいて、前記チャンクサーバと前記クライアントとの間で送受信されるデータサイズである通信サイズを算出する調整工程と、
前記調整工程によって算出された通信サイズを、前記チャンクサーバと前記クライアントとの通信における通信サイズとして反映させる反映工程と
を含んだことを特徴とする通信サイズ最適化方法。
【請求項７】
クライアントがチャンクサーバからファイルを読み出す処理に関する動作ログと、前記チャンクサーバまたは前記クライアントが動作するサーバで動作するアプリケーションが消費するメモリサイズとを収集する収集手順と、
前記収集手順によって収集された前記動作ログおよび前記メモリサイズに基づいて、前記チャンクサーバと前記クライアントとの間で送受信されるデータサイズである通信サイズを算出する調整手順と、
前記調整手順によって算出された通信サイズを、前記チャンクサーバと前記クライアントとの通信における通信サイズとして反映させる反映手順と
をコンピュータに実行させることを特徴とする通信サイズ最適化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信サイズ最適化装置、通信サイズ最適化システム、通信サイズ最適化方法、および、通信サイズ最適化プログラムに関する。
【背景技術】
【０００２】
従来、数百台、数千台といった多規模なサーバ群で構成される分散ファイルシステムが知られている（たとえば、非特許文献１、２参照）。また、このような分散ファイルシステムを用いて、大量のデータを迅速かつ容易に処理するウェブサービス（たとえば、ログ分析や機械学習、科学シミュレーション等）が提供されている（たとえば、非特許文献３参照）。これらのサービスは、ＰａａＳ(Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）と呼ばれる。ＰａａＳでは、サービス利用者が各自で上位アプリケーションを作成し、サービス提供者側が用意しているサーバ上で、サービス利用者が作成した上位アプリケーションを実行することで、分散ファイルシステムの上に構築されたサービスを利用することができる。
【０００３】
このようなＰａａＳを利用することによって、サービス利用者は、サーバを購入する莫大な初期費用を必要としないことや、サーバ管理者の人件費、故障したサーバの修繕費などが不要となり自身で分散ファイルシステムを構築するよりも相対的に運用コストが低くなること、といった利点がある。
【０００４】
ＰａａＳ上で動作する上位アプリケーションの性能を担保することは難しい。たとえば、オンプレミスな分散ファイルシステム上で動作する上位アプリケーションにおいては、サービス開始前に、サービス利用者自身で構築したシステム上で上位アプリケーションを動作させ、サービスが要求する性能を満たすか否かを検証する。性能が満たされない場合には、システム管理者が、上位アプリケーションやシステムの動作ログ、消費した計算機リソース量などを手動で分析し、動作する上位アプリケーションに特化した設定値をシステムに設定する、ことにより上位アプリケーションの性能を担保している。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Sanjay  Ghemawat、Howard  Gobioff、Shun-Tak  Leung著、「The  Google  File  System」、19th  ACM  Symposium  on  Operating  Systems  Principles、2003年10月発行、第29頁から第43頁
【非特許文献２】Apache  Hadoop、［online］、［平成２６年２月２０日検索］、インターネット＜http://hadoop.apache.org/＞
【非特許文献３】Amazon  Elastic  MapReduce、［online］、［平成２６年２月２０日検索］、インターネット＜http://aws.amazon.com/jp/elasticmapreduce/＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の分散ファイルシステムを用いたＰａａＳでは、異なる複数のサービス利用者が動作させる、個々の上位アプリケーションに特化した設定を行えないため、上位アプリケーションの性能向上を図れないという課題があった。
【０００７】
たとえば、分散ファイルシステムを用いたＰａａＳでは、オンプレミスな環境で行っていた上記の手法を用いて、性能改善を行うことはできない。これは、ＰａａＳでは、異なる複数のサービス利用者によってさまざまな上位アプリケーションを動作させるために、個々の上位アプリケーションに特化した複数の設定を適用できるようにする必要がある。
【０００８】
分散ファイルシステムは、数百ＴＢｙｔｅｓ以上の大規模なデータを読み出し、処理結果として数ＭＢｙｔｅｓ程度のデータを出力するためのバッチ処理用に開発されたシステムである。このため、分散ファイルシステムの設定値でも、特に上位アプリケーションの性能に依存する設定値は、読み出し処理に係る設定値であり、その中でも、分散ファイルシステムのクライアント（たとえば、非特許文献１参照）がチャンクサーバ（たとえば、非特許文献１参照）からファイルデータを読み出す処理、つまり、チャンクサーバからクライアントにファイルデータを送信することに係る設定値が問題となる。
【０００９】
上位アプリケーションは分散ファイルシステムのクライアントライブラリをリンクし、分散ファイルシステムのクライアントとなる。そのため、分散ファイルシステムのクライアントごとに、チャンクサーバからクライアントにファイルデータを送信することに係る設定を行えるようにする必要があるが、従来の分散ファイルシステム（たとえば、非特許文献２参照）では、クライアントごとに、チャンクサーバからクライアントにファイルデータを送信することに係る設定を行うことはできない。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、通信サイズ最適化装置は、クライアントがチャンクサーバからファイルを読み出す処理に関する動作ログと、前記チャンクサーバまたは前記クライアントが動作するサーバで動作するアプリケーションが消費するメモリサイズとを収集する収集部と、前記収集部によって収集された前記動作ログおよび前記メモリサイズに基づいて、前記チャンクサーバと前記クライアントとの間で送受信されるデータサイズである通信サイズを算出する調整部と、前記調整部によって算出された通信サイズを、前記チャンクサーバと前記クライアントとの通信における通信サイズとして反映させる反映部とを備えることを特徴とする。
【００１１】
また、通信サイズ最適化システムは、クライアントからの要求に応じて読み出されるファイルを記憶するチャンクサーバと、該チャンクサーバからファイルを読み出すクライアントと、該チャンクサーバと前記クライアントとの間で送受信されるデータサイズである通信サイズを算出する通信サイズ最適化装置とを有する通信サイズ最適化システムであって、前記通信サイズ最適化装置が、前記クライアントが前記チャンクサーバからファイルを読み出す処理に関する動作ログと、前記チャンクサーバまたは前記クライアントが動作するサーバで動作するアプリケーションが消費するメモリサイズとを収集する収集部と、前記収集部によって収集された前記動作ログおよび前記メモリサイズに基づいて、前記通信サイズを算出する調整部と、を備え、前記チャンクサーバが、前記調整部によって算出された通信サイズを、前記クライアントとの通信における通信サイズとして反映させる反映部を備え、前記クライアントが、前記調整部によって算出された通信サイズを、前記チャンクサーバとの通信における通信サイズとして反映させる反映部を備えることを特徴とする。
【００１２】
また、通信サイズ最適化方法は、クライアントがチャンクサーバからファイルを読み出す処理に関する動作ログと、前記チャンクサーバまたは前記クライアントが動作するサーバで動作するアプリケーションが消費するメモリサイズとを収集する収集工程と、前記収集工程によって収集された前記動作ログおよび前記メモリサイズに基づいて、前記チャンクサーバと前記クライアントとの間で送受信されるデータサイズである通信サイズを算出する調整工程と、前記調整工程によって算出された通信サイズを、前記チャンクサーバと前記クライアントとの通信における通信サイズとして反映させる反映工程とを含んだことを特徴とする。
【００１３】
また、通信サイズ最適化プログラムは、クライアントがチャンクサーバからファイルを読み出す処理に関する動作ログと、前記チャンクサーバまたは前記クライアントが動作するサーバで動作するアプリケーションが消費するメモリサイズとを収集する収集手順と、前記収集手順によって収集された前記動作ログおよび前記メモリサイズに基づいて、前記チャンクサーバと前記クライアントとの間で送受信されるデータサイズである通信サイズを算出する調整手順と、前記調整手順によって算出された通信サイズを、前記チャンクサーバと前記クライアントとの通信における通信サイズとして反映させる反映手順とをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、分散ファイルシステム上で複数の上位アプリケーションが動作する場合に、動作する上位アプリケーションごとに、それぞれの上位アプリケーションに適した分散ファイルシステムのチャンクサーバとクライアントとの間の通信サイズを自動的に算出し、分散ファイルシステムの設定値に反映することで、分散ファイルシステム上で動作する複数の上位アプリケーションの性能を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】図１は、第１の実施形態に係る通信サイズ最適化装置の概要を示すブロック図である。
【図２】図２は、第１の実施形態に係る通信サイズ最適化装置の処理の一例を示すフローチャートである。
【図３】図３は、第２の実施形態に係る分散ファイルシステムの概要を示すブロック図である。
【図４】図４は、動作履歴記憶部に記憶されたＤ１テーブルの一例を示す図である。
【図５】図５は、動作履歴記憶部に記憶されたＤ２テーブルの一例を示す図である。
【図６】図６は、動作履歴記憶部に記憶されたＤ１テーブルの行数の情報の一例を示す図である。
【図７】図７は、動作履歴記憶部に記憶されたＤ３テーブルの一例を示す図である。
【図８】図８は、動作履歴記憶部に記憶されたＤ３の最大値テーブルの一例を示す図である。
【図９】図９は、動作履歴記憶部に記憶されたＤ４テーブルの一例を示す図である。
【図１０】図１０は、動作履歴記憶部に記憶されたＤ４のマージテーブルの一例を示す図である。
【図１１】図１１は、動作履歴記憶部に記憶されたＤ４の最大値テーブルの一例を示す図である。
【図１２】図１２は、第２の実施形態に係る動作履歴収集部で「Ｄ１；シーケンシャルに読み出すデータサイズ」を抽出する一例を示すフローチャートである。
【図１３】図１３は、第２の実施形態に係る動作履歴収集部で「Ｄ２；Ｄ１ごとの回数」と「Ｄ１テーブルの行数」を抽出する一例を示すフローチャートである。
【図１４】図１４は、第２の実施形態に係る動作履歴収集部で各チャンクサーバの「Ｄ３；チャンクの最大数」を抽出する一例を示すフローチャートである。
【図１５】図１５は、第２の実施形態に係る動作履歴収集部で全チャンクサーバの「Ｄ３の最大値」を検索する一例を示すフローチャートである。
【図１６】図１６は、第２の実施形態に係る動作履歴収集部で各チャンクサーバの「Ｄ４；アプリケーションのメモリ最大値」を抽出する一例を示すフローチャートである。
【図１７】図１７は、第２の実施形態に係る動作履歴収集部で「Ｄ４の最大値」を検索する一例を示すフローチャートである。
【図１８】図１８は、第２の実施形態に係る動作履歴収集部でＤ４テーブルのチャンクサーバテーブルの「Ｄ４の最大値」を検索する一例を示すフローチャートである。
【図１９】図１９は、第２の実施形態に係る動作履歴収集部でＤ４テーブルのクライアントテーブルの「Ｄ４の最大値」、かつ、Ｄ４のマージテーブルにおける「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ、Ｃｌｉｅｎｔ」である「Ｄ４の最大値」、それぞれの「Ｄ４の最大値」を検索する一例を示すフローチャートである。
【図２０】図２０は、第２の実施形態に係る設定値調整部でチャンクサーバのメモリサイズを確認する一例を示すフローチャートである。
【図２１】図２１は、第２の実施形態に係る設定値調整部で最適な通信サイズを算出する一例を示すフローチャートである。
【図２２】図２２は、第２の実施形態に係る設定値調整部で表示する「最適な通信サイズ」を確認するグラフの一例である。
【図２３】図２３は、通信サイズ最適化プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明を実施するための形態（実施形態）を説明する。なお、この実施形態により本発明が限定されるものではない。
【００１７】
［第１の実施形態］
［通信サイズ最適化装置の構成の一例］
図１は、第１の実施形態に係る通信サイズ最適化装置の概要を示すブロック図である。図１を参照して、第１の実施形態に係る通信サイズ最適化装置１０について説明する。第１の実施形態に係る通信サイズ最適化装置は、クライアントのｒｅａｄ処理に関する動作ログと、各プロセスの消費したメモリサイズと、から、チャンクサーバ‐クライアント間の通信サイズを自動的に算出することにより、上位アプリケーションに適した通信サイズを自動的に算出し、反映する。
【００１８】
図１に示すように、通信サイズ最適化装置１０は、入出力部１１と、制御部１２と、記憶部１３とを備える。
【００１９】
入出力部１１は、各種情報の入出力を司る入出力インタフェースである。この入出力部１１は、たとえば、ユーザの操作により受け付けたしきい値等を入力したり、最適な通信サイズを確認するグラフを出力したりする。
【００２０】
制御部１２は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては、動作履歴収集部１２ａ、設定値調整部１２ｂ、設定値反映部１２ｃを有する。ここで、制御部１２は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路やＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路である。
【００２１】
また、記憶部１３は、制御部１２による各種処理に必要なデータおよびプログラムを格納するが、特に本発明に密接に関連するものとしては、動作履歴記憶部１３ａを有する。たとえば、記憶部１３は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。
【００２２】
動作履歴収集部１２ａは、通信サイズを算出するために必要なデータ（クライアントがチャンクサーバからファイルを読み出す処理に関する動作ログと、チャンクサーバまたはクライアントが動作するサーバで動作するアプリケーションが消費するメモリサイズのログと、）を収集する。
【００２３】
具体的には、動作履歴収集部１２ａは、通信サイズを算出するために必要なデータを収集し、上位アプリケーションに適した「通信サイズ」を求めるのに必要な情報（分散ファイルサーバの上位アプリケーションによっては、１つのチャンクからシーケンシャルにデータを読み出す処理が、数度のｒｅａｄ要求となることがある。「必要な情報」とは、たとえば、この数度のｒｅａｄ要求に分割されているシーケンシャルにチャンクデータを読み出す処理を１回のシーケンシャルな読み出しとして検索しカウントしたデータと、チャンクサーバやクライアントで同時にオープンするチャンク数と、チャンクサーバやクライアントと同一サーバで動作しているアプリケーション群が使用するメモリサイズと、）を抽出する。
【００２４】
動作履歴記憶部１３ａは、動作履歴収集部１２ａが収集したデータと、抽出した情報を格納する。設定値調整部１２ｂは、動作履歴記憶部１３ａに格納されている、動作履歴収集部１２ａによって収集された動作ログおよびメモリサイズに基づいて、チャンクサーバとクライアントとの間で送受信されるデータサイズである通信サイズを算出する。
【００２５】
設定値反映部１２ｃは、設定値調整部１２ｂによって算出された通信サイズを、チャンクサーバとクライアントとの通信における通信サイズとして反映させる。つまり、設定値反映部１２ｃは、設定値調整部１２ｂが算出した通信サイズを、分散ファイルシステムの設定に反映する。
【００２６】
通信サイズ最適化装置１０は、機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、図１で図示した各構成要素の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。たとえば、通信サイズ最適化装置１０の設定値反映部１２ｃは、チャンクサーバ、クライアントに組み込むことができる。通信サイズ最適化装置１０の動作履歴収集部１２ａ、設定値調整部１２ｂ、動作履歴記憶部１３ａは、分散ファイルシステムのマスタ（たとえば、非特許文献１参照）、チャンクサーバもしくはクライアントに組み込んでもよく、さらに、分散ファイルシステムとは独立した装置であってもよい。ただし、複数回繰り返されるバッチ処理を実行するシステムに適用される。
【００２７】
また、図１には図示しないが、通信サイズ最適化装置１０は、マスタ、チャンクサーバ、クライアント等とネットワーク等を介して接続される。複数の記憶部は、たとえば、物理サーバと当該サーバに接続されたディスク装置や、データセンタ内に仮想的に構築された仮想サーバと仮想ストレージ等であってよい。また、情報処理装置は、物理サーバやデータセンタを利用するクライアント装置であってよい。
【００２８】
また、ネットワークとして、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）等任意のネットワークを使用できる。なお、通信サイズ最適化装置１０の動作をプログラムとして構築し、コンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。また、構築されたプログラムをハードディスク装置や、フレキシブルディスク・ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
【００２９】
［通信サイズ最適化装置の処理の一例］
図２は、第１の実施形態に係る通信サイズ最適化装置１０の通信サイズ最適化処理の一例を示すフローチャートである。図２を参照して、第１の実施形態に係る通信サイズ最適化装置１０による通信サイズ最適化処理の流れの一例を説明する。
【００３０】
図２に示すように、通信サイズ最適化装置１０は、まず、分散ファイルシステムの最適な通信サイズを算出する要求を受ける（ステップ０）。この要求は、分散ファイルシステムの管理者（たとえば、ＰａａＳ提供者であり、以下、ユーザ）から発行される。
【００３１】
そして、分散ファイルシステムの最適な通信サイズを算出する要求を受け、動作履歴収集部１２ａは、チャンクサーバごとにクライアントからのｒｅａｄ要求に関するデータと、チャンクサーバ、もしくは、クライアントが動作するサーバで動作するアプリケーション群の「Ｄ４；アプリケーションのメモリ最大値」に関するデータと、を収集し、必要な情報を抽出する。「必要な情報」とは、たとえば、この数度のｒｅａｄ要求に分割されているシーケンシャルにチャンクデータを読み出す処理を１回のシーケンシャルな読み出しとして検索しカウントしたデータ（シーケンシャルな読み出し）と、チャンクサーバやクライアントで同時にオープンするチャンク数と、チャンクサーバやクライアントが動作するサーバで動作するアプリケーション群が使用するメモリサイズと、である（ステップ１）。動作履歴収集部１２ａは、抽出した情報を動作履歴記憶部１３ａに格納する。
【００３２】
設定値調整部１２ｂは、動作履歴記憶部１３ａから必要な情報を取得し、取得した情報と、ユーザから入力されたしきい値を基に、上位アプリケーションに最適な通信サイズを算出する（ステップ２）。この「算出する」処理とは、たとえば、何パーセント以上のシーケンシャルな読み出しをカバーしたいかを、しきい値としてユーザに入力させる。具体的には、抽出したシーケンシャルな読み出し総数のうち、何パーセント以上のシーケンシャルな読み出しを、チャンクサーバ‐クライアント間のライブラリ関数レベルにおける通信処理が１回となるようにするかを、しきい値を用いて決定する。
【００３３】
さらに、設定値調整部１２ｂは、算出した通信サイズが、チャンクサーバ、クライアントが動作するサーバに搭載されているメモリサイズを超えていないか確認する（ステップ３）。この結果、算出した通信サイズが、チャンクサーバ、クライアントに搭載されているメモリサイズを超えている場合には（ステップ３肯定）、そのまま処理を終了する。また、設定値調整部１２ｂは、算出した通信サイズが搭載されているメモリサイズを超えていない場合は（ステップ３否定）、分散ファイルシステムに算出した通信サイズを反映するか否かをユーザに確認する（ステップ４）。そして、確認した結果、ユーザが反映することを選択した場合は（ステップ４肯定）、設定値反映部１２ｃは、分散ファイルシステムに算出した通信サイズを反映する（ステップ５）。また、ユーザが反映しないことを選択した場合は（ステップ４否定）、そのまま処理を終了する。
【００３４】
［第１の実施形態の効果］
このように、第１の実施形態に係る通信サイズ最適化装置１０は、ユーザに対する入出力を行う入出力部１１と、通信サイズを算出するために必要なデータを収集し情報を抽出する動作履歴収集部１２ａと、動作履歴収集部１２ａの「収集したデータ」と「抽出した情報」を格納する動作履歴記憶部１３ａと、動作履歴記憶部１３ａに格納されている情報を基に通信サイズを算出する設定値調整部１２ｂと、分散ファイルシステムの設定値に設定値調整部１２ｂが算出した通信サイズを反映する設定値反映部１２ｃと、を備える。このため、第１の実施形態に係る通信サイズ最適化装置１０は、上位アプリケーションの性能向上に繋がる、上位アプリケーションに最適な通信サイズを算出し、分散ファイルシステムに算出した値を反映することができる。
【００３５】
たとえば、上位アプリケーションが複数回、同一処理を実行するバッチ処理である場合、１回目のバッチ処理の実行時に、ｒｅａｄ要求に関するデータと、「アプリケーションのメモリ最大値」に関するデータと、を収集し、収集したデータから、上位アプリケーションに最適な通信サイズを算出することで、上位アプリケーションが２回目にバッチ処理を実行する際には、１回目よりも上位アプリケーションの実行時間を短くすることができる。
【００３６】
［第２の実施形態］
図３は、第２の実施形態に係る通信サイズ最適化システムの概要を示すブロック図である。図３を参照して、第２の実施形態に係る通信サイズ最適化システム１の構成の概要について説明する。
【００３７】
［通信サイズ最適化システムの構成の一例］
図３に示すように、通信サイズ最適化システム１は、動作履歴収集部１１０と、動作履歴記憶部１２０と、設定値調整部１３０と、設定値反映部１４０Ａ，１４０Ｂ，１４０Ａ’，１４０Ｂ’と、を備える。なお、第２の実施形態に係る通信サイズ最適化システム１では、通信サイズ最適化装置１０Ａが動作履歴記憶部１２０と、設定値調整部１３０と、を有しているものとする。
【００３８】
サーバ４０Ａ’は、Ａｐｐｌｉｃａｔｏｉｎｓ（アプリケーション群）５０Ａ’と、Ｃｌｉｅｎｔ（クライアント）６０Ａと、を備え、Ｃｌｉｅｎｔ６０Ａは、設定値反映部１４０Ａ’を備える。サーバ４０Ｂ’は、Ａｐｐｌｉｃａｔｏｉｎｓ５０Ｂ’と、Ｃｌｉｅｎｔ６０Ｂと、を備え、Ｃｌｉｅｎｔ６０Ｂは、設定値反映部１４０Ｂ’を備える。Ｃｌｉｅｎｔ６０Ａ，６０Ｂは、分散ファイルシステムのクライアントである。
【００３９】
サーバ４０Ａは、Ａｐｐｌｉｃａｔｉｏｎｓ５０Ａと、Ｃｈｕｎｋｓｅｒｖｅｒ（チャンクサーバ）８０Ａと、を備え、Ｃｈｕｎｋｓｅｒｖｅｒ８０Ａは、設定値反映部１４０Ａを備える。サーバ４０Ｂは、Ａｐｐｌｉｃａｔｉｏｎｓ５０Ｂと、Ｃｈｕｎｋｓｅｒｖｅｒ８０Ｂと、を備え、Ｃｈｕｎｋｓｅｒｖｅｒ８０Ｂは、設定値反映部１４０Ｂを備える。Ｃｈｕｎｋｓｅｒｖｅｒ８０Ａ，８０Ｂは、分散ファイルシステムのチャンクサーバである。
【００４０】
Ａｐｐｌｉｃａｔｉｏｎｓ５０Ａ，５０Ｂ，５０Ａ’，５０Ｂ’は、分散ファイルシステムのチャンクサーバもしくはクライアントが動作するサーバで動作するアプリケーション群である。さらに、クライアントが動作するサーバで動作するアプリケーション群であるＡｐｐｌｉｃａｔｉｏｎ５０Ａ’，５０Ｂ’は、分散ファイルシステム上で動作する上位アプリケーションを含む。
【００４１】
Ｃｈｕｎｋｓｅｒｖｅｒの動作ログ９０Ａ，９０Ｂは、分散ファイルシステムのチャンクサーバが動作するサーバに接続しているディスクであり、チャンクサーバが出力する「クライアントからのｒｅａｄ要求に関するログ」と、「Ａｐｐｌｉｃａｔｉｏｎｓ５０Ａ，５０Ｂといったチャンクサーバが動作するサーバで動作するアプリケーションが消費するメモリサイズのログ」と、が格納されている。「Ａｐｐｌｉｃａｔｉｏｎｓ５０Ａ，５０Ｂといったチャンクサーバが動作するサーバで動作するアプリケーションが消費するメモリサイズのログ」とは、たとえば、Ｌｉｎｕｘ（登録商標）のｐｓコマンドなどで、Ｌｉｎｕｘ（登録商標）上で動作しているアプリケーションすべての消費メモリサイズのログを取得してもよい、もしくは、ユーザが指定したアプリケーションの消費メモリサイズのログを取得してもよい、もしくは、メモリを多く消費する数個のアプリケーションについて取得してもよい。
【００４２】
Ｃｌｉｅｎｔの動作ログ７０Ａ，７０Ｂは、分散ファイルシステムのクライアントが動作しているサーバに接続しているディスクであり、「Ａｐｐｌｉｃａｔｉｏｎｓ５０Ａ’，５０Ｂ’といったクライアントが動作するサーバで動作するアプリケーションが消費するメモリサイズのログ」が格納されている。「Ａｐｐｌｉｃａｔｉｏｎｓ５０Ａ’，５０Ｂ’といったクライアントが動作するサーバで動作するアプリケーションが消費するメモリサイズのログ」とは、たとえば、Ｌｉｎｕｘ（登録商標）のｐｓコマンドなどで、Ｌｉｎｕｘ（登録商標）上で動作しているアプリケーションすべての消費メモリサイズのログを取得してもよい、もしくは、ユーザが指定したアプリケーションの消費メモリサイズのログを取得してもよい、もしくは、メモリを多く消費する数個のアプリケーションについて取得してもよい。
【００４３】
動作履歴収集部１１０は、１）チャンクサーバ（Ｃｈｕｎｋｓｅｒｖｅｒ８０Ａ，８０Ｂなど）が出力した動作ログ（Ｃｈｕｎｋｓｅｒｖｅｒの動作ログ９０Ａ，９０Ｂなど）に格納されているログのなかでもｒｅａｄ要求に関するログと、２）アプリケーション群（チャンクサーバが動作するサーバで動作するＡｐｐｌｉｃａｔｉｏｎｓ５０Ａ，５０Ｂなど、もしくは、クライアントが動作するサーバで動作するＡｐｐｌｉｃａｔｉｏｎｓ５０Ａ’，５０Ｂ’など）が消費するメモリサイズに関するデータと、という１）、２）を収集し、収集したデータを動作履歴記憶部１２０に格納する。
【００４４】
さらに、動作履歴収集部１１０は、収集したデータを動作履歴記憶部１２０から読み出し、最適な通信サイズを算出するために必要な情報を抽出し、抽出した情報を動作履歴記憶部１２０に格納する。分散ファイルサーバの上位アプリケーションによっては、１つのチャンクサーバからシーケンシャルにデータを読み出す処理が、数度のｒｅａｄ要求となることがある。ここで「必要な情報」とは、たとえば、この数度のｒｅａｄ要求に分割されているシーケンシャルにチャンクデータを読み出す処理を１回のシーケンシャルな読み出しとして検索しカウントしたデータと、チャンクサーバやクライアントで同時にオープンするチャンク数と、チャンクサーバやクライアントが動作するサーバで動作するアプリケーション群が使用するメモリサイズと、である。
【００４５】
設定値調整部１３０は、動作履歴記憶部１２０から抽出した情報を読み出し、動作ログを取得した上位アプリケーションに最適な通信サイズを算出する。設定値反映部１４０Ａ，１４０Ｂ，１４０Ａ’，１４０Ｂ’は、設定値調整部１３０が算出した通信サイズをチャンクサーバとクライアントに反映する。
【００４６】
［動作履歴記憶部１２０の構成および格納するデータおよび情報の一例］
次に、動作履歴記憶部１２０の構成および格納するデータおよび情報の一例につき説明する。図４乃至図１１は、動作履歴記憶部１２０に格納されるデータの一例である。
【００４７】
たとえば、チャンクサーバが動作するサーバに着目した場合、チャンクサーバに搭載されたメモリサイズが、「「通信サイズ最適化システム１が算出した最適な通信サイズ」×「チャンクサーバで同時にオープンするチャンク数の最大値」＋「チャンクサーバと動作するサーバで動作するアプリケーションのメモリ最大値」」というプロセスの利用メモリサイズの計算値よりも小さい場合、チャンクサーバが動作するサーバでメモリのスラッシングが発生し、処理速度が低下する。そのため、チャンクサーバに搭載されたメモリサイズが、プロセスの利用メモリサイズの計算値より大きいことを確認し、分散ファイルシステムの設定として問題ないことを確認する。これは、クライアント、もしくは、チャンクサーバとクライアントが同一サーバで動作する場合においても同等である。このため、動作履歴収集部１１０では、「最適な通信サイズを算出するための情報」と、「各チャンクサーバ、各クライアントが同時にオープンするチャンク数」と、「各チャンクサーバ、各クライアントが動作するサーバで動作するアプリケーションのメモリ最大値」と、を動作履歴記憶部１２０に格納する。
【００４８】
動作履歴収集部１１０は、チャンクサーバの動作ログから、「最適な通信サイズを算出するためのデータ」を収集し、収集したデータを動作履歴記憶部１２０のＤ１テーブル１２１（図４参照）に登録した後に、Ｄ１テーブル１２１から抽出した情報を動作履歴記憶部１２０のＤ２テーブル１２２（図５参照）、かつ、動作履歴記憶部１２０のＤ１テーブルの行数１２３（図６参照）に格納する。
【００４９】
動作履歴収集部１１０は、チャンクサーバの動作ログから、「各チャンクサーバ、各クライアントが同時にオープンするチャンク数」を収集し、収集したデータを動作履歴記憶部１２０のＤ３テーブル１２４（図７参照）に登録した後に、Ｄ３テーブル１２４から抽出した情報を動作履歴記憶部１２０のＤ３の最大値テーブル１２５（図８参照）に格納する。
【００５０】
動作履歴収集部１１０は、チャンクサーバ、もしくは、クライアントの動作ログから、「各チャンクサーバ、各クライアントが動作するサーバで動作するアプリケーションが消費するメモリサイズ最大値」を収集し、収集したデータを動作履歴記憶部１２０のＤ４テーブル１２６（図９参照）に登録し、Ｄ４テーブル１２６から抽出した情報を動作履歴記憶部１２０のＤ４のマージテーブル１２７（図１０参照）、かつ、動作履歴記憶部１２０のＤ４の最大値テーブル１２８（図１１参照）に登録する。
【００５１】
たとえば、Ｄ１テーブル１２１には、各チャンクサーバから、「ホスト名（ｒｅａｄ要求に関する動作ログが保存されていたホスト名もしくはＩＰアドレスといったサーバを特定するＩＤ）」と、「リード要求ＩＤ（どのクライアントが、どのチャンクを読み出す要求かを特定するＩＤ）」と、「読み出した後のチャンクオフセット」と、「Ｄ１；シーケンシャルに読み出すデータサイズ」と、が格納される。
【００５２】
Ｃｈｕｎｋｓｅｒｖｅｒ８０Ａの「ホスト名」が「ＳｅｒｖｅｒＡ」であり、Ｃｈｕｎｋｓｅｒｖｅｒ８０Ａの１つのｏｐｅｎ要求に基づくｒｅａｄ要求について、「リード要求ＩＤ」が「ＣｌｉｅｎｔＡ０１」であり、「読み出した後のチャンクオフセット」が「６５，５３６」Ｂｙｔｅｓであり、チャンクのオフセットが６５，５３６Ｂｙｔｅｓから１３１，０７１Ｂｙｔｅｓまでのデータと、オフセットが０Ｂｙｔｅｓから６５，５３５Ｂｙｔｅｓまでのデータと、を読み出した場合、「ホスト名」が「ＳｅｒｖｅｒＡ」と、「リード要求ＩＤ」が「ＣｌｉｅｎｔＡ０１」と、「読み出した後のチャンクオフセット」が「６５，５３６」と、「Ｄ１；シーケンシャルに読み出すデータサイズ」が「６５，５３６；６５，５３６」という数字列と、という行がＤ１テーブル１２１に格納される。
【００５３】
また、Ｃｈｕｎｋｓｅｒｖｅｒ８０Ｂの「ホスト名」が「ＳｅｒｖｅｒＢ」であり、Ｃｈｕｎｋｓｅｒｖｅｒ８０Ｂの１つのｏｐｅｎ要求に基づくｒｅａｄ要求について、「リード要求ＩＤ」が「ＣｌｉｅｎｔＢ０１」であり、「読み出した後のチャンクオフセット」が「２６２,１４４」であり、チャンクをそのオフセットが０Ｂｙｔｅｓから２６２，１４３Ｂｙｔｅｓまでのデータを読み出した場合、「ホスト名」が「ＳｅｒｖｅｒＢ」と、「リード要求ＩＤ」が「ＣｌｉｅｎｔＢ０１」と、「読み出した後のチャンクオフセット」が「２６２,１４４」と、「Ｄ１；シーケンシャルに読み出すデータサイズ」が「２６２,１４４」と、がＤ１テーブル１２１に格納される。
【００５４】
たとえば、Ｄ２テーブル１２２には、「Ｄ１を特定のサイズごとに区分した値（「Ｄ１；シーケンシャルに読み出すデータサイズ」を特定の単位ごとに区分した値）」と、「Ｄ２；Ｄ１ごとの回数（Ｄ１テーブル１２１の「Ｄ１を特定のサイズごとに区分した値」の登録数）」と、が「Ｄ１を特定のサイズごとに区分した値」で昇順にソートされ、格納される。
【００５５】
たとえば、Ｄ２テーブル１２２に格納される「Ｄ１を特定のサイズごとに区分した値」は、「Ｄ１；シーケンシャルに読み出すデータサイズ」を特定サイズで割り、小数点以下を切り上げた値である。たとえば、「Ｄ１；シーケンシャルに読み出すデータサイズ」を「６５，５３６」Ｂｙｔｅｓとし、特定のサイズを１ＫＢｙｔｅとした場合、「Ｄ１を特定のサイズごとに区分した値」は６４になる。
【００５６】
「Ｄ２；Ｄ１ごとの回数」は、Ｄ１テーブル１２１について、「Ｄ１を特定のサイズごとに区分した値」が何行あるかを数えた値である。Ｄ１テーブル１２１に、「Ｄ１を特定のサイズごとに区分した値」として２ＫＢｙｔｅｓを読み出した行が８８回、「Ｄ１を特定のサイズごとに区分した値」として３ＫＢｙｔｅｓを読み出した行が８０回登録されている場合、Ｄ２テーブル１２２には、「Ｄ１；シーケンシャルに読み出すデータサイズ」が「２」、「Ｄ２；Ｄ１ごとの回数」が「８８」という行が、「Ｄ１；シーケンシャルに読み出すデータサイズ」が「３」、「Ｄ２；Ｄ１ごとの回数」が「８０」という行が、登録される。
【００５７】
たとえば、Ｄ１テーブルの行数１２３には、Ｄ１テーブル１２１の総行数が格納される。Ｄ１テーブル１２１に１１，２０１，４８８行登録されている場合、Ｄ１テーブルの行数１２３には「１１，２０１，４８８」が登録される。
【００５８】
たとえば、Ｄ３テーブル１２４には、「ホスト名」と、「チャンクの同時オープン数」と、「Ｄ３；チャンクの最大数」と、が格納される。また、Ｄ３テーブル１２４は、チャンクサーバテーブル、クライアントテーブルの２テーブルから構成される。Ｃｈｕｎｋｓｅｒｖｅｒ８０Ａの「ホスト名」が「ＳｅｒｖｅｒＡ」であり、Ｃｈｕｎｋｓｅｒｖｅｒ８０Ａの１つのｒｅａｄ要求について同時にオープンしているチャンク数を動作ログから数えている数が２２であり、そのときの同時オープン数の最大数が２２である場合、「ホスト名」に「ＳｅｒｖｅｒＡ」と、「チャンクの同時オープン数」が「２２」と、「Ｄ３；チャンクの最大数」が「２２」と、という行がＤ３テーブル１２４のチャンクサーバテーブルに登録される。
【００５９】
たとえば、Ｄ３の最大値テーブル１２５には、「サーバ機の種類」と、「Ｄ３の最大値」と、が格納される。Ｄ３の最大値テーブル１２５の「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」となる行の「Ｄ３の最大値」には、Ｄ３テーブル１２４のチャンクサーバテーブルにおける「Ｄ３；チャンクの最大数」の最大値が登録される。Ｄ３の最大値テーブル１２５の「サーバ機の種類」が「Ｃｌｉｅｎｔ」となる行の「Ｄ３の最大値」には、Ｄ３テーブル１２４のクライアントテーブルにおける「Ｄ３；チャンクの最大数」の最大値が登録される。
【００６０】
たとえば、Ｄ３テーブル１２４のチャンクサーバテーブルにおける「Ｄ３；チャンクの最大数」の最大値が「３０」、Ｄ３テーブル１２４のクライアントテーブルにおける「Ｄ３；チャンクの最大数」の最大値が「２５」である場合、Ｄ３の最大値テーブル１２５の「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」となる行の「Ｄ３の最大値」には「３０」が、Ｄ３の最大値テーブル１２５の「サーバ機の種類」が「Ｃｌｉｅｎｔ」となる行の「Ｄ３の最大値」には「２５」が、登録される。
【００６１】
たとえば、Ｄ４テーブル１２６には、「ホスト名」と、「Ｄ４；アプリケーションのメモリ最大値」と、「各アプリケーションのＩＤとメモリサイズ」と、が格納される。また、Ｄ４テーブル１２６は、チャンクサーバテーブル、クライアントテーブルの２テーブルから構成される。Ｄ４テーブル１２６には、各チャンクサーバ、各クライアントについてのデータが登録される。
【００６２】
Ｃｈｕｎｋｓｅｒｖｅｒ８０Ａの「ホスト名」が「ＳｅｒｖｅｒＡ」であり、Ｃｈｕｎｋｓｅｒｖｅｒ８０Ａで動作しているＡｐｐｌｉｃａｔｉｏｎｓ５０Ａが「ＡｐｐｌｉｃａｔｉｏｎＡ」と「ＡｐｐｌｉｃａｔｉｏｎＡ’」いうアプリケーションであり、それぞれ、１，０４８，５７６ＫＢｙｔｅｓ、２，０９７，１５２ＫＢｙｔｅｓのメモリを消費している場合、「ホスト名」が「ＳｅｒｖｅｒＡ」と、「各アプリケーションのＩＤとメモリサイズ」が「ＡｐｐｌｉｃａｔｉｏｎＡ  １，０４８，５７６；  ＡｐｐｌｉｃａｔｉｏｎＡ’  ２，０９７，１５２」という２要素からなる列が、「Ｄ４；アプリケーションのメモリ最大値」が「各アプリケーションのＩＤとメモリサイズ」の各要素のメモリサイズの合計値である「３，１４５，７２８」と、という行がＤ４テーブル１２６のチャンクサーバテーブルに登録される。
【００６３】
たとえば、Ｄ４のマージテーブル１２７には、「ホスト名」と、「Ｄ４；アプリケーションのメモリ最大値」と、「サーバ機の種類」と、「各アプリケーションのＩＤとメモリサイズ」と、が格納される。同一サーバでチャンクサーバとクライアントが動作する場合には、Ｄ４のマージテーブル１２７には、「サーバ機の種類」に「Ｃｈｕｎｋｓｅｒｖｅｒ、Ｃｌｉｅｎｔ」と、「各アプリケーションのＩＤとメモリサイズ」に「同一サーバで動作するチャンクサーバとクライアントの「各アプリケーションのＩＤとメモリサイズ」の論理和」と、「Ｄ４；アプリケーションの最大値」に「同一行の「各アプリケーションのＩＤとメモリサイズ」のメモリサイズの合計値」と、が登録される。同一サーバ機上にチャンクサーバが動作しておりクライアントが動作していない場合には、Ｄ４のマージテーブル１２７には、「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」と、「各アプリケーションのＩＤとメモリサイズ」に「チャンクサーバの「各アプリケーションのＩＤとメモリサイズ」」と、「Ｄ４；アプリケーションの最大値」に「チャンクサーバの「Ｄ４；アプリケーションの最大値」」と、が登録される。同一サーバでクライアントが動作しておりチャンクサーバが動作していない場合は、Ｄ４のマージテーブル１２７には、「サーバ機の種類」が「Ｃｌｉｅｎｔ」と、「各アプリケーションのＩＤとメモリサイズ」に「クライアントの「各アプリケーションのＩＤとメモリサイズ」」と、「Ｄ４；アプリケーションの最大値」に「クライアントの「Ｄ４；アプリケーションの最大値」」と、が登録される。
【００６４】
Ｃｈｕｎｋｓｅｒｖｅｒ８０ＡとＣｌｉｅｎｔ６０Ａが同一サーバで動作しており、この「ホスト名」が「ＳｅｒｖｅｒＡ」である仮定する。このとき、Ｄ４テーブル１２６のチャンクサーバテーブルに、「ホスト名」に「ＳｅｒｖｅｒＡ」と、「各アプリケーションのＩＤとメモリサイズ」が「ＡｐｐｌｉｃａｔｉｏｎＡ  １，０４８，５７６；ＡｐｐｌｉｃａｔｉｏｎＡ’  ２，０９７，１５２」という２要素からなる列が、「Ｄ４；アプリケーションのメモリ最大値」には「各アプリケーションのＩＤとメモリサイズ」の各要素のメモリサイズの合計値である「３，１４５，７２８」と、という行が登録されており、Ｄ４テーブル１２６のクライアントテーブルに、「ホスト名」に「ＳｅｒｖｅｒＡ」と、「各アプリケーションのＩＤとメモリサイズ」が「ＡｐｐｌｉｃａｔｉｏｎＡ  １，０４８，５７６；ＡｐｐｌｉｃａｔｉｏｎＡ１  １７，８２５，７９２」という２要素からなる列が、「Ｄ４；アプリケーションのメモリ最大値」には「各アプリケーションのＩＤとメモリサイズ」の各要素のメモリサイズの合計値である「１８，８７４，３６８」と、という行が登録されている場合、「ホスト名」が「ＳｅｒｖｅｒＡ」と、「各アプリケーションのＩＤとメモリサイズ」が「ＡｐｐｌｉｃａｔｉｏｎＡ  １，０４８，５７６；  ＡｐｐｌｉｃａｔｉｏｎＡ’  ２，０９７，１５２；  ＡｐｐｌｉｃａｔｉｏｎＡ１  １７，８２５，７９２」という３要素からなる列が、「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ、Ｃｌｉｅｎｔ」と、「Ｄ４；アプリケーションのメモリ最大値」が「各アプリケーションのＩＤとメモリサイズ」の各要素のメモリサイズの合計値である「２０，９７１，５２０」と、という行がＤ４のマージテーブル１２７に登録される。
【００６５】
たとえば、Ｄ４の最大値テーブル１２８には、「サーバ機の種類」と、「Ｄ４の最大値」と、が格納される。Ｄ４の最大値テーブル１２８には３行格納され、「サーバ機の種類」には、「Ｃｈｕｎｋｓｅｒｖｅｒ、Ｃｌｉｅｎｔ」と、「Ｃｈｕｎｋｓｅｒｖｅｒ」と、「Ｃｌｉｅｎｔ」と、という３つの値が格納される。
【００６６】
Ｄ４の最大テーブル１２８の「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ、Ｃｌｉｅｎｔ」の「Ｄ４の最大値」には、Ｄ４のマージテーブル１２７の「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ、Ｃｌｉｅｎｔ」となる行の「Ｄ４；アプリケーションのメモリ最大値」の最大値が登録される。Ｄ４の最大テーブル１２８の「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」の「Ｄ４の最大値」には、Ｄ４テーブル１２６のチャンクサーバテーブルの「Ｄ４；アプリケーションのメモリ最大値」の最大値が登録される。Ｄ４の最大テーブル１２８の「サーバ機の種類」が「Ｃｌｉｅｎｔ」の「Ｄ４の最大値」には、Ｄ４テーブル１２６のクライアントテーブルの「Ｄ４；アプリケーションのメモリ最大値」の最大値が登録される。
【００６７】
Ｄ４のマージテーブル１２７の「Ｄ４；アプリケーションのメモリ最大値」の最大値が「２５，１６５，８２４」であり、Ｄ４テーブル１２６のチャンクサーバテーブルの「Ｄ４；アプリケーションのメモリ最大値」の最大値が「６，２９１，４５６」であり、Ｄ４テーブル１２６のクライアントテーブルの「Ｄ４；アプリケーションのメモリ最大値」の最大値が「１８，８７４，３６８」である場合、「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ、Ｃｌｉｅｎｔ」と、「Ｄ４の最大値」が「２５，１６５，８２４」と、という行が、「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」と、「Ｄ４の最大値」が「６，２９１，４５６」と、という行が、「サーバ機の種類」が「Ｃｌｉｅｎｔ」と、「Ｄ４の最大値」が「１８，８７４，３６８」と、という行が、Ｄ４の最大値テーブル１２８に登録される。
【００６８】
［「Ｄ１；シーケンシャルに読み出すデータサイズ」を抽出する一例］
図１２は、第２の実施形態に係る動作履歴収集部１１０による、「Ｄ１；シーケンシャルに読み出すデータサイズ」を抽出する一例のフローチャートである。図１２を参照して、動作履歴収集部１１０による、「Ｄ１；シーケンシャルに読み出すデータサイズ」を抽出する処理を説明する。
【００６９】
図１２に示すように、まず、動作履歴収集部１１０は、各チャンクサーバの動作ログから、チャンクサーバがクライアントからのｒｅａｄ要求を受けたログ（ログ中に記載されたプロトコルもしくは操作名として「ＲＥＡＤ」と関連した文字列が記載されたログ）を選別し取得する（ステップ１００１）。そして、読み込んでいないログがあるか否かを判定し（ステップ１００２）、読み込んでいないログがない場合には（ステップ１００２否定）、そのまま処理を終了する。
【００７０】
また、読み込んでいないログがある場合には（ステップ１００２肯定）、動作履歴収集部１１０は、チャンクサーバごとに、時刻で昇順にソートされた動作ログから、読み出していない、最も上の行を読み込み、動作ログの取得元の「ホスト名」、「リード要求ＩＤ」、「読み出し位置のｃｈｕｎｋオフセット」、「読み出すデータサイズ」を取得する（ステップ１００３）。
【００７１】
続いて、動作履歴収集部１１０は、ステップ１００３で取得した「ホスト名」と「リード要求ＩＤ」の２つの値と、同一の値を持つ行がＤ１テーブル１２１に登録されているか否かを判定する（ステップ１００４）。この結果、動作履歴収集部１１０は、登録されていないと判定した場合には（ステップ１００４否定）、動作履歴収集部１１０は、同一行の「読み出した位置のｃｈｕｎｋオフセット」の値を、「取得した「読み出しサイズ」に取得した「読み出した後のｃｈｕｎｋオフセット」を加えた値」で更新し、さらに、「Ｄ１；シーケンシャルに読み出すデータサイズ」の数字列の最後に、「取得した「読み出すデータサイズ」の値」を追加する（ステップ１００７）。その後、ステップ１００２の処理に移行する。
【００７２】
また、動作履歴収集部１１０は、ステップ１００４において、登録されていると判定した場合には（ステップ１００４肯定）、ステップ１００４で確認した同一行の「読み出した後のｃｈｕｎｋオフセット」と、取得した「読み出し位置のｃｈｕｎｋオフセット」が同じであるかを判定する（ステップ１００５）。そして、動作履歴収集部１１０は、同一行の「読み出した後のｃｈｕｎｋオフセット」と、取得した「読み出し位置のｃｈｕｎｋオフセット」が同じでないと判定した場合には（ステップ１００５否定）、ステップ１００７の処理に移行する。
【００７３】
また、動作履歴収集部１１０は、同一行の「読み出した後のｃｈｕｎｋオフセット」と、取得した「読み出し位置のｃｈｕｎｋオフセット」が同じであると判定した場合には（ステップ１００５肯定）、動作履歴収集部１１０は、同一行の「読み出した後のｃｈｕｎｋオフセット」の値を、「取得した「読み出し位置のｃｈｕｎｋオフセット」に、取得した「読み出しデータサイズ」を加算した値」で更新し、また、取得した「読み出すデータサイズ」に登録されている数字列の最後の値を、「取得した「読み出すデータサイズ」の最後の値に、同一行に登録されている「Ｄ１；シーケンシャルに読み出すデータサイズ」を加算した値」で更新する（ステップ１００６）。
【００７４】
［「Ｄ２；Ｄ１ごとの回数」と「Ｄ１テーブルの行数１２３」を抽出する一例］
図１３は、第２の実施形態に係る動作履歴収集部１１０による、「Ｄ２；Ｄ１ごとの回数」と「Ｄ１テーブルの行数１２３」を抽出する一例のフローチャートである。図１３を参照して、動作履歴収集部１１０による、「Ｄ２；Ｄ１ごとの回数」と「Ｄ１テーブルの行数１２３」を抽出する処理を説明する。
【００７５】
図１３に示すように、動作履歴収集部１１０は、Ｄ１テーブルの行数１２３の「行数」を０に設定し（ステップ１１０１）、Ｄ１テーブル１２１から読み込んでいない行があるか判定する（ステップ１１０２）。この結果、Ｄ１テーブル１２１から読み込んでいない行がない場合には（ステップ１１０２否定）、そのまま処理を終了する。また、Ｄ１テーブル１２１から読み込んでいない行がある場合には（ステップ１１０２肯定）、Ｄ１テーブル１２１から、まだ読み込んでいない行を１行読み込む（ステップ１１０３）。
【００７６】
そして、動作履歴収集部１１０は、読み込んだ行の「Ｄ１；シーケンシャルに読み出すデータサイズ」の数字列から読み込んでいない要素の値があるか否かを判定する（ステップ１１０４）。この結果、動作履歴収集部１１０は、読み込んでいない値がない場合には（ステップ１１０４否定）、ステップ１１０２の処理に移行する。また、動作履歴収集部１１０は、読み込んでいない値がある場合には（ステップ１１０４肯定）、「Ｄ１；シーケンシャルに読み出すデータサイズ」で読み込んでいない値から、１つの値を読み込み、読み込んだ値から、特定のサイズごとに区分した値を算出する（ステップ１１０５）。たとえば、特定のサイズを「１ＫＢｙｔｅ」とした場合、「２６２，１４４Ｂｙｔｅｓ」は［２５６ＫＢｙｔｅｓ］となる。
【００７７】
そして、動作履歴収集部１１０は、Ｄ２テーブル１２２の「Ｄ１を特定のサイズごとに区分した値」と、算出した「Ｄ１を特定のサイズごとに区分した値」が同一の値を持つ行が登録されているか否かを判定する（ステップ１１０６）。この結果、動作履歴収集部１１０は、登録されていると判定した場合には（ステップ１１０６肯定）、同一行の「Ｄ２；Ｄ１ごとの回数」の値を「同一行に登録されている「Ｄ２；Ｄ１ごとの回数」に１加えた値」で更新し（ステップ１１０７）、登録されていないと判定した場合には（ステップ１１０６否定）、Ｄ２テーブル１２２に、「Ｄ１を特定のサイズごとに区分した値」を算出した「Ｄ１を特定のサイズごとに区分した値」と、「Ｄ２；Ｄ１ごとの回数」を「１」と、した行を登録する（ステップ１１０８）。
【００７８】
その後、動作履歴収集部１１０は、Ｄ１テーブルの行数１２３の「行数」を、登録されているＤ１テーブルの行数１２３の「行数」＋１に更新し（ステップ１１０９）、ステップ１１０４の処理に移行する。
【００７９】
［各チャンクサーバの「Ｄ３；チャンクの最大数」を抽出する一例］
図１４は、第２の実施形態に係る動作履歴収集部１１０による、各チャンクサーバの「Ｄ３；チャンクの最大数」を抽出する一例のフローチャートである。図１４ではチャンクサーバについての説明になるが、クライアントについても同等な処理となる。図１４を参照して、動作履歴収集部１１０による、各チャンクサーバの「Ｄ３；チャンクの最大数」を抽出する処理を説明する。
【００８０】
図１４に示すように、動作履歴収集部１１０は、各チャンクサーバの動作ログから、チャンクサーバがクライアントからの「ｒｅａｄ用のｏｐｅｎ要求」と、「このｏｐｅｎに対応するｃｌｏｓｅ要求」を受けたログを選別し、取得する（ステップ１２０１）。そして、動作履歴収集部１１０は、読み込んでいないログがあるか否かを判定し（ステップ１２０２）、読み込んでいないログがない場合には（ステップ１２０２否定）、そのまま処理を終了する。また、動作履歴収集部１１０は、読み込んでいないログがある場合には（ステップ１２０２肯定）、取得した（各チャンクサーバごとに、時刻で昇順にソートされた）動作ログから、読み込んでいない、最も上の行を読み込み、動作ログの取得元の「ホスト名」を取得する（ステップ１２０３）。
【００８１】
続いて、動作履歴収集部１１０は、読み込んだログがｏｐｅｎ要求であるか否かを判定する（ステップ１２０４）。具体的には、各チャンクサーバの動作ログから、チャンクサーバがクライアントからのｏｐｅｎ要求を受けたログ（ログ中に記載されたプロトコルもしくは操作名として「ＯＰＥＮ」と関連した文字列が記載されたログ）があるか否かを判定する。この結果、動作履歴収集部１１０は、読み込んだログがｏｐｅｎ要求である場合には（ステップ１２０４肯定）、取得した「ホスト名」と、同一の値を持つ行がＤ３テーブル１２４のチャンクサーバテーブルに登録されているか判定する（ステップ１２０５）。そして、動作履歴収集部１１０は、取得した「ホスト名」と、同一の値を持つ行がＤ３テーブル１２４のチャンクサーバテーブルに登録されていない場合には（ステップ１２０５否定）、Ｄ３テーブル１２４のチャンクテーブルに、「ホスト名」の値を「取得した「ホスト名」」と、「チャンクの同時オープン数」の値を「１」と、「Ｄ３；チャンクの最大数」の値を「１」と、とした行を登録する（ステップ１２１１）。
【００８２】
また、動作履歴収集部１１０は、取得した「ホスト名」と、同一の値を持つ行がＤ３テーブル１２４のチャンクサーバテーブルに登録されている場合には（ステップ１２０５肯定）、動作履歴収集部１１０は、ステップ１２０５で登録していると判定した行と同一行に登録されている「チャンクの同時オープン数」に「１」を加算した値を、同一行の「チャンクの同時オープン数」の値として更新する（ステップ１２０６）。
【００８３】
そして、動作履歴収集部１１０は、更新した「ファイルの同時オープン数」は、同一行に登録されている「Ｄ３；ファイル最大数」）より大きい値か否かを判定し（ステップ１２０７）、大きくない場合には（ステップ１２０７否定）、ステップ１２０２の処理に移行する。また、動作履歴収集部１１０は、大きい場合には（ステップ１２０７肯定）、同一行の「Ｄ３；チャンクの最大数」の値を、ステップ１２０６で更新した「チャンクの同時オープン数」に更新し（ステップ１２０８）、ステップ１２０２に移行する。
【００８４】
また、ステップ１２０４において、動動作履歴収集部１１０は、読み込んだログがｏｐｅｎ要求でないと判定した場合には（ステップ１２０４否定）、取得した「ホスト名」と、同一の値を持つ行がＤ３テーブル１２４のチャンクサーバテーブルに登録されているか否かを判定する（ステップ１２０９）。この結果、登録されていない場合には（ステップ１２０９否定）、ステップ１２０２の処理に移行する。また、登録されている場合には（ステップ１２０９肯定）、動動作履歴収集部１１０は、動動作履歴収集部１１０は、ステップ１２０９で登録していると判定した行と同一行に登録されている「チャンクの同時オープン数」の値から１減算した値に意更新し（ステップ１２１０）、ステップ１２０２の処理に移行する。
【００８５】
［全チャンクサーバの「Ｄ３の最大値」を検索する一例］
図１５は、第２の実施形態に係る動作履歴収集部１１０による、全チャンクサーバの「Ｄ３の最大値」を検索する一例のフローチャートである。図１５ではチャンクサーバについての説明になるが、クライアントについてもステップ１３０１の初期化処理より後のステップ１３０２以降は、同等な処理となる。図１５を参照して、動作履歴収集部１１０による、全チャンクサーバの「Ｄ３の最大値」を検索する処理を説明する。
【００８６】
図１５に示すように、動作履歴収集部１１０は、Ｄ３の最大値テーブル１２５を初期化し、１行目に「サーバの種類」として「Ｃｈｕｎｋｓｅｒｖｅｒ」、「Ｄ３の最大値」として「−１」を登録し、２行目に「サーバの種類」として、「Ｃｌｉｅｎｔ」、「Ｄ３の最大値」として「−１」を登録する（ステップ１３０１）。
【００８７】
そして、動作履歴収集部１１０は、Ｄ３テーブル１２４のチャンクサーバテーブルから読み込んでいない行はあるか否かを判定する（ステップ１３０２）。この結果、動作履歴収集部１１０は、Ｄ３テーブル１２４のチャンクサーバテーブルから読み込んでいない行がない場合には（ステップ１３０２否定）、そのまま処理を終了する。
【００８８】
また、動作履歴収集部１１０は、Ｄ３テーブル１２４のチャンクサーバテーブルから読み込んでいない行がある場合には（ステップ１３０２肯定）、Ｄ３テーブル１２４から、まだ、読み込んでいない行を１行読み込む（ステップ１３０３）。そして、動作履歴収集部１１０は、読み込んだ行の「Ｄ３；チャンクの最大数」は、Ｄ３の最大値テーブル１２５の「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」である「Ｄ３の最大値」より大きい値であるか否かを判定する（ステップ１３０４）。
【００８９】
この結果、動作履歴収集部１１０は、大きい値でないと判定した場合には（ステップ１３０４否定）、ステップ１３０２の処理に移行する。また、動作履歴収集部１１０は、大きい値であると判定した場合には（ステップ１３０４肯定）、Ｄ３の最大値テーブル１２５の「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」である行の「Ｄ３の最大値」を、読み込んだ行の「Ｄ３；チャンクの最大数」に更新し（ステップ１３０５）、ステップ１３０２に移行する。
【００９０】
［各チャンクサーバの「Ｄ４；アプリケーションのメモリ最大値」を抽出する一例］
図１６は、第２の実施形態に係る動作履歴収集部１１０による、各チャンクサーバの「Ｄ４；アプリケーションのメモリ最大値」を抽出する一例のフローチャートである。図１６では、チャンクサーバについての説明になるが、クライアントについても同等な処理となる。図１６を参照して、動作履歴収集部１１０による、全チャンクサーバの「Ｄ４；アプリケーションのメモリ最大値」」を抽出する処理を説明する。
【００９１】
図１６に示すように、動作履歴収集部１１０は、各チャンクサーバの動作ログから、チャンクサーバで動作しており、メモリを多く消費するアプリケーション群のメモリサイズの（各チャンクサーバごとに、時刻で昇順にソートされた）ログを取得する（ステップ１４０１）。そして、動作履歴収集部１１０は、読み込んでないログがあるか判定し（ステップ１４０２）、読み込んでいないログがない場合には（ステップ１４０２否定）、処理を終了する。
【００９２】
また、動作履歴収集部１１０は、読み込んでいないログがある場合には（ステップ１４０２肯定）、同時刻のログが複数あるか否かを判定する（ステップ１４０３）。この結果、同時刻のログが複数ある場合には（ステップ１４０３肯定）、取得したアプリケーション群のメモリサイズのログから、最後に読み込んだ行の次で、同時刻の複数行を読み込み、ログを取得した「ホスト名」、複数の「アプリケーションのＩＤとメモリサイズ」、複数行の「アプリケーションのメモリサイズ」を足し合わせた「アプリケーションのメモリサイズ」を取得する（ステップ１４０４）。また、同時刻のログが複数ない場合には（ステップ１４０３否定）、取得したアプリケーション群のメモリサイズのログから、最後に読み込んだ行の次の1行を読み込み、ログを取得した「ホスト名」、「アプリケーションのＩＤとメモリサイズ」、「アプリケーションのメモリサイズ」を取得する（ステップ１４０５）。ステップ１４０５で取得する「アプリケーションのメモリサイズ」は、同一行に登録する「アプリケーションのＩＤとメモリサイズ」のメモリサイズと同一になる。
【００９３】
そして、動作履歴収集部１１０は、ステップ１４０４もしくはステップ１４０５で取得した「ホスト名」と、同一の値を持つ行がＤ４テーブル１２６のチャンクサーバテーブルに登録されているか判定する（ステップ１４０６）。この結果、動作履歴収集部１１０は、登録されていると判定した場合には（ステップ１４０６肯定）、取得した「アプリケーションのメモリサイズ」は、ステップ１４０６で確認した登録している行と同一行に登録されている「Ｄ４；アプリケーションのメモリ最大値」より大きい値か判定する（ステップ１４０７）。
【００９４】
そして、動作履歴収集部１１０は、大きくないと判定した場合には（ステップ１４０７否定）、ステップ１４０２に移行する。また、動作履歴収集部１１０は、大きいと判定した場合には（ステップ１４０７肯定）、同一行の「各アプリケーションのＩＤとメモリサイズ」を取得した「アプリケーションのＩＤとメモリサイズ」に更新し、「Ｄ４；アプリケーションのメモリ最大値」を取得した「アプリケーションのメモリサイズ」に更新し（ステップ１４０８）、ステップ１４０２に移行する。
【００９５】
また、ステップ１４０６において、動作履歴収集部１１０は、登録されていないと判定した場合には（ステップ１４０６否定）、Ｄ４テーブル１２６のチャンクサーバテーブルに、「ホスト名」に取得した「ホスト名」と、「各アプリケーションのＩＤとメモリサイズ」に取得した「アプリケーションのＩＤとメモリサイズ」と、「Ｄ４；アプリケーションのメモリ最大値」に、取得した「アプリケーションのメモリサイズ」と、とした行を登録し（ステップ１４０９）、ステップ１４０２に移行する。
【００９６】
［「Ｄ４の最大値」を検索する一例の概要］
図１７は、第２の実施形態に係る動作履歴収集部１１０による、同一サーバでチャンクサーバが動作しているがクライアントが動作していないサーバ、同一サーバでチャンクサーバが動作していないがクライアントが動作しているサーバ、もしくは、同一サーバでチャンクサーバとクライアントが動作しているサーバの３種類のサーバにおける「Ｄ４の最大値」を検索する一例のフローチャートの概要である。図１７を参照して、動作履歴収集部１１０による、「Ｄ４；アプリケーションのメモリ最大値」を検索する処理の概要を説明する。
【００９７】
図１７に示しように、動作履歴収集部１１０は、Ｄ４の最大値テーブル１２８を初期化し、１行目の「サーバの種類」に「Ｃｈｕｎｋｓｅｒｖｅｒ、Ｃｌｉｅｎｔ」、「Ｄ４の最大値」に「−１」を登録し、２行目の「サーバの種類」に「Ｃｈｕｎｋｓｅｒｖｅｒ」、「Ｄ４の最大値」に「−１」を登録し、３行目の「サーバの種類」に「Ｃｌｉｅｎｔ」、「Ｄ４の最大値」に「−１」を登録する（ステップ１５００１）。
【００９８】
次に、動作履歴収集部１１０は、Ｄ４のマージテーブル１２７に、Ｄ４テーブル１２６のチャンクサーバテーブルの全行を登録し、Ｄ４テーブル１２６のチャンクサーバテーブルに登録されている「Ｄ４；アプリケーションのメモリ最大値」で最も大きな値を検索する。Ｄ４の最大値テーブル１２８の「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」の行に、検索した値を登録する（ステップ１５００２）。なお、この処理の詳細は、後に図１８を用いて説明する。
【００９９】
次に、動作履歴収集部１１０は、Ｄ４テーブル１２６のクライアントテーブルに登録されている「Ｄ４；アプリケーションのメモリ最大値」で最も大きな値を検索し、Ｄ４の最大値テーブル１２８の「サーバ機の種類」が「Ｃｌｉｅｎｔ」の行に、検索した値を登録する。このとき、同時に、チャンクサーバとクライアントが同一サーバで動作しているサーバの「Ｄ４；アプリケーションのメモリ最大値」をＤ４のマージテーブル１２７を用いて検索し、Ｄ４の最大値テーブル１２８の「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ、Ｃｌｉｅｎｔ」の行に、検索した値を登録する（ステップ１５００３）。なお、この処理の詳細は、後に図１９を用いて説明する。
【０１００】
［Ｄ４テーブル１２６のチャンクサーバテーブルの「Ｄ４の最大値」を検索する一例］
図１８は、図１７のステップ１５００２の詳細な処理の一例である。図１８を参照して、図１７のステップ１５００２の詳細を説明する。
【０１０１】
図１８に示すように、動作履歴収集部１１０は、Ｄ４テーブル１２６のチャンクサーバテーブルから読み込んでいない行はあるか否かを判定し（ステップ１５１０１）、ないと判定した場合には（ステップ１５１０１否定）、処理を終了する。また、動作履歴収集部１１０は、あると判定した場合には（ステップ１５１０１肯定）、Ｄ４テーブル１２６のチャンクサーバテーブルから、まだ、読み込んでいない行を１行読み込み、Ｄ４のマージテーブル１２７に、「ホスト名」に読み込んだ行の「ホスト名」と、「Ｄ４；アプリケーションのメモリ最大値」に読み込んだ行の「Ｄ４；アプリケーションのメモリ最大値」と、「サーバ機の種類」に「Ｃｈｕｎｋｓｅｒｖｅｒ」と、「各アプリケーションのＩＤとメモリサイズ」に読み込んだ行の「各アプリケーションのＩＤとメモリサイズ」と、とした行を登録する（ステップ１５１０２）。
【０１０２】
そして、動作履歴収集部１１０は、ステップ１５１０２で読み込んだ行の「Ｄ４；アプリケーションのメモリ最大値」は、Ｄ４の最大値テーブル１２８の「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」である「Ｄ４；アプリケーションのメモリ最大値」より大きい値か否かを判定する（ステップ１５１０３）。この結果、大きい値でないと判定した場合には（ステップ１５１０３否定）、ステップ１５１０１の処理に戻る。また、動作履歴収集部１１０は、大きい値であると判定した場合には（ステップ１５１０３肯定）、Ｄ４の最大値テーブル１２８の「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」である行の「Ｄ４の最大値」を、読み込んだ行の「Ｄ４；アプリケーションのメモリ最大値」に更新し（ステップ１５１０４）、ステップ１５１０１の処理に移行する。
【０１０３】
［Ｄ４テーブル１２６のクライアントテーブル、かつ、Ｄ４のマージテーブル１２７における「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ、Ｃｌｉｅｎｔ」、それぞれの「Ｄ４の最大値」を検索する一例］
図１９は、図１７のステップ１５００３の詳細な処理の一例である。図１９を参照して、図１７のステップ１５００３の詳細を説明する。
【０１０４】
図１９に示すように、動作履歴収集部１１０は、Ｄ４テーブル１２６のクライアントテーブルから読み込んでいない行はあるか否かを判定し（ステップ１５２０１）、読み込んでいない行がない場合には（ステップ１５２０１否定）、処理を終了する。また、動作履歴収集部１１０は、読み込んでいない行がある場合には（ステップ１５２０１肯定）、Ｄ４テーブル１２６のクライアントテーブルから、まだ、読み込んでいない行を１行読み込む（ステップ１５２０２）。
【０１０５】
そして、動作履歴収集部１１０は、読み込んだ行の「ホスト名」と、同一の値を持つ行がＤ４のマージテーブル１２７に登録されているか否かを判定する（ステップ１５２０３）。この結果、登録されていると判定した場合には（ステップ１５２０３肯定）、動作履歴収集部１１０は、ステップ１５２０３で登録していると判定した行と同一行の「サーバ機の種類」に「Ｃｈｕｎｋｓｅｒｖｅｒ、Ｃｌｉｅｎｔ」と、「各アプリケーションのＩＤとメモリサイズ」に「読み込んだ行の「各アプリケーションのＩＤとメモリサイズ」の数字列と、同一行に登録されている「各アプリケーションのＩＤとメモリサイズ」の数字列と、双方の数字列の論理和」と、「Ｄ４；アプリケーションのメモリ最大値」に「前記、数字列の論理和を取得した「各アプリケーションのＩＤとメモリサイズ」の数字列の各要素の値の合計値」と、という値で更新する（ステップ１５２０４）。
【０１０６】
そして、動作履歴収集部１１０は、登録した「Ｄ４；アプリケーションのメモリ最大値」は、Ｄ４の最大値テーブル１２８の「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ、Ｃｌｉｅｎｔ」である「Ｄ４；アプリケーションのメモリ最大値」より大きい値か否かを判定する（ステップ１５２０５）。この結果、動作履歴収集部１１０は、大きい値でないと判定した場合には（ステップ１５２０５否定）、そのままステップ１５２０７の処理に移行し、大きい値であると判定した場合には（ステップ１５２０５肯定）、Ｄ４の最大値テーブル１２８の「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ、Ｃｌｉｅｎｔ」である行の「Ｄ４の最大値」を、ステップ１５２０４で登録した「Ｄ４；アプリケーションのメモリ最大値」に更新し（ステップ１５２０６）、ステップ１５２０７の処理に移行する。
【０１０７】
また、ステップ１５２０３において、動作履歴収集部１１０は、登録されていないと判定した場合には（ステップ１５２０３否定）、読み込んだ行の「Ｄ４；アプリケーションのメモリ最大値」は、Ｄ４の最大値テーブル１２８の「サーバ機の種類」が「Ｃｌｉｅｎｔ」である「Ｄ４の最大値」より大きい値か否かを判定する（ステップ１５２０７）。この結果、動作履歴収集部１１０は、大きい値でないと判定した場合には（ステップ１５２０７否定）、ステップ１５２０１の処理に移行し、また、大きい値であると判定した場合には（ステップ１５２０７肯定）、Ｄ４の最大値テーブル１２８の「サーバ機の種類」が「Ｃｌｉｅｎｔ」である行の「Ｄ４の最大値」を、ステップ１５２０２で読み出した行の「Ｄ４；アプリケーションのメモリ最大値」に更新し（ステップ１５２０８）、ステップ１５２０１の処理に移行する。
【０１０８】
［チャンクサーバのメモリサイズを確認する一例］
図２０は、第２の実施形態に係る設定値調整部１３０による、チャンクサーバに搭載されているメモリサイズを、算出した通信サイズが超えないかを確認する一例のフローチャートである。図２０は同一サーバにチャンクサーバが動作しているがクライアントが動作していない場合についての説明になる。しかし、同一サーバにチャンクサーバが動作していないがクライアントが動作している場合、についても同等な処理となる。さらに、同一サーバにチャンクサーバとクライアントが動作している場合は、ステップ２１００５にて、Ｄ３の最大値テーブル１２５から「サーバ機種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」と「Ｃｌｉｅｎｔ」となる２行を取得し、ステップ２１００９にて、「（Ｄ３の最大値テーブル１２５から取得した「Ｄ３の最大値」）×（「最適な通信サイズ」）＋（Ｄ４の最大値テーブル１２８から取得した「Ｄ４の最大値」）」値を「（Ｄ３の最大値テーブル１２５から取得した２行の「Ｄ３の最大値」の和）×（「最適な通信サイズ」）＋（Ｄ４の最大値テーブル１２８から取得した「Ｄ４の最大値」）」となる。図２０を参照して、設定値調整部１３０による、チャンクサーバのメモリサイズを確認する処理を説明する。
【０１０９】
ただし、同一サーバにチャンクサーバが動作していないがクライアントが動作している場合、もしくは、同一サーバにチャンクサーバとクライアントが動作している場合、について、Ｄ４の最大値テーブル１２８の「サーバ機の種類」が「Ｃｌｉｅｎｔ」である「Ｄ４の最大値」に登録されている値の中に、分散ファイルシステムのクライアントをリンクしたアプリケーションのメモリサイズを含んでいた際には、ステップ２１００９で算出するメモリサイズは、クライアントの（「Ｄ３の最大値」×「最適な通信サイズ」）が重複した値となる。そのため、同一サーバにチャンクサーバが動作していないがクライアントが動作している場合は、ステップ２１００９で算出する「（Ｄ３の最大値テーブル１２５から取得した「Ｄ３の最大値」）×（「最適な通信サイズ」）＋（Ｄ４の最大値テーブル１２８から取得した「Ｄ４の最大値」）」の値を、「（Ｄ４の最大値テーブル１２８から取得した「Ｄ４の最大値」）」とすることができる。同一サーバにチャンクサーバとクライアントが動作している場合は、ステップ２１００９で算出する「Ｄ３の最大値テーブル１２５から取得した「Ｄ３の最大値」）×（「最適な通信サイズ」）＋（Ｄ４の最大値テーブル１２８から取得した「Ｄ４の最大値」）」の値を、「Ｄ３の最大値テーブル１２５から取得した「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」である行の「Ｄ３の最大値」）×（「最適な通信サイズ」）＋（Ｄ４の最大値テーブル１２８から取得した「Ｄ４の最大値」）」とすることができる。
【０１１０】
図２０に示すように、設定値調整部１３０は、チャンクサーバに搭載されている「メモリサイズ」を取得し（ステップ２１００１）、「メモリサイズ」を取得できたかを判定する（ステップ２１００２）。この結果、設定値調整部１３０は、「メモリサイズ」を取得できなかった場合には、処理を終了する。また、設定値調整部１３０は、「メモリサイズ」を取得できた場合には、「最適な通信サイズ」を算出する（ステップ２１００３）。なお、この処理の詳細は、後に図２１を用いて説明する。
【０１１１】
そして、設定値調整部１３０は、「最適な通信サイズ」を算出できたかを判定し（ステップ２１００４）、算出できなかった場合には（ステップ２１００４否定）、処理を終了する。また、設定値調整部１３０は、算出できた場合には、Ｄ３の最大値テーブル１２５から、「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」である行を取得する（ステップ２１００５）。そして、設定値調整部１３０は、Ｄ３の最大テーブルから行を取得できたか判定する（ステップ２１００６）。この結果、取得できなかった場合には（ステップ２１００６否定）、処理を終了する。また、設定値調整部１３０は、取得できた場合には、Ｄ４の最大値テーブル１２８から、「サーバ機の種類」が「Ｃｈｕｎｋｓｅｒｖｅｒ」である行を取得する（ステップ２１００７）。
【０１１２】
そして、設定値調整部１３０は、Ｄ４の最大値テーブルから行を取得できたか否かを判定する（ステップ２１００８）。そして、Ｄ４の最大テーブルから行を取得できなかった場合には（ステップ２１００８否定）、処理を終了する。また、設定値調整部１３０は、Ｄ４の最大値テーブル１２８から行を取得できた場合には（ステップ２１００８肯定）、「（Ｄ３の最大値テーブル１２５から取得した「Ｄ３の最大値」）×（「最適な通信サイズ」）＋（Ｄ４の最大値テーブル１２８から取得した「Ｄ４の最大値」）を算出する（ステップ２１００９）。
【０１１３】
そして、設定値調整部１３０は、取得した「メモリサイズ」が、算出した値より大きい値であるか否かを判定する（ステップ２１０１０）。この結果、設定値調整部１３０は、取得した「メモリサイズ」が、算出した値より大きい値である場合には（ステップ２１０１０肯定）、搭載されているメモリサイズを超えていない旨を表示し（ステップ２１０１１）、処理を終了する。また、設定値調整部１３０は、取得した「メモリサイズ」が、算出した値より大きい値でない場合には（ステップ２１０１０否定）、搭載されているメモリサイズを超えている旨を表示し（ステップ２１０１２）、処理を終了する。
【０１１４】
［「最適な通信サイズ」を算出する一例］
図２１は、図２０のステップ２１００３の詳細な処理の一例である。上位アプリケーションに「最適な通信サイズ」を算出するため、ユーザからしきい値を取得し、図２のステップ２と同じ処理を行う。図２１を参照して、図２０のステップ２１００３の詳細を説明する。
【０１１５】
図２１は、設定値調整部１３０は、「しきい値」を取得する処理を行い（ステップ２１１０１）、「しきい値」を取得できたか否かを判定する（ステップ２１１０２）。そして、「しきい値」を取得できなかった場合には（ステップ２１１０２否定）、処理を終了する。また、「しきい値」を取得できた場合には（ステップ２１１０２肯定）、Ｄ１テーブルの行数１２３から「行数」を取得する処理を行い（ステップ２１１０３）、「行数」を取得できたか否かを判定する（ステップ２１１０４）。そして、「行数」が取得できなかった場合には（ステップ２１１０４否定）、処理を終了する。「行数」が取得できた場合には（ステップ２１１０４肯定）、ステップ２１１０５に処理を移行する。
【０１１６】
設定値調整部１３０は、「最適な通信サイズ」および「Ｃｏｕｎｔ」を「０」に設定する（ステップ２１１０５）。そして、Ｄ２テーブル１２２から読み込んでいない行があるか判定し（ステップ２１１０６）、ない場合には（ステップ２１１０６否定）、処理を終了する。また、Ｄ２テーブル１２２から読み込んでいない行がある場合には（ステップ２１１０６肯定）、「Ｄ１を特定のサイズごとに区分した値」で昇順にソートされたＤ２テーブル１２２から、まだ、読み込んでいない、最も上の行を1行読み込み、「Ｄ１を特定のサイズごとに区分した値」、「Ｄ２；Ｄ１ごとの回数」を取得する（ステップ２１１０７）。
【０１１７】
そして、設定値調整部１３０は、「Ｃｏｕｎｔの値に取得した「Ｄ２；Ｄ１ごとの回数」を加算した値」をＣｏｕｎｔに代入する（ステップ２１１０８）。その後、設定値調整部１３０は、Ｃｏｕｎｔの値が、「行数」×「しきい値」よりも大きいか否かを判定し（ステップ２１１０９）、大きくない場合には（ステップ２１１０９否定）、ステップ２１１０６の処理に移行する。
【０１１８】
また、Ｃｏｕｎｔの値が「行数」×「しきい値」よりも大きい場合には（ステップ２１１０９肯定）、設定値調整部１３０は、「最適な通信サイズ」を、ステップ２１１０７で取得した「Ｄ１を特定のサイズごとに区分した値」に更新し（ステップ２１１１０）、処理を終了する。大きくない場合には（ステップ２１１０９否定）、ステップ２１１０６に処理を移行する。
【０１１９】
［「最適な通信サイズ」を確認するグラフの一例］
図２２は、「最適な通信サイズ」がチャンクサーバやクライアントが動作しているサーバが搭載しているメモリサイズを超えない場合に、「最適な通信サイズ」を分散ファイルシステムに反映するか否かを、ユーザに確認するグラフの一例である。吹き出し内に記載されているグラフは、一部区間を拡大化したグラフである。
【０１２０】
このとき、しきい値と、シーケンシャルな読み出しサイズをグラフ化し、ユーザに見せ、確認することで、ユーザが妥当な値かどうかを確認することができる。たとえば、最適な通信サイズを確認するグラフの一例２００は、しきい値を８５パーセントとした場合の一例である。最適な通信サイズを確認するグラフの一例２００では、シーケンシャルな読み出し総数の約７０パーセントが、８０ＫＢｙｔｅｓから１２７ＫＢｙｔｅｓを読み出していることを示している。最適な通信サイズを確認するグラフの一例２００のように、グラフのしきい値と、ピーク値などを同時に表示することにより、設定値調整部１３０が算出した通信サイズが、上位アプリケーションにとって最適な通信サイズであるのかをユーザが確認しやすいようにする。
【０１２１】
「最適な通信サイズ」がチャンクサーバやクライアントが動作するサーバに搭載しているメモリサイズを超えた場合には、しきい値と、シーケンシャルな読み出しサイズをグラフ化するとともに、チャンクサーバやクライアントが同時にオープンするチャンク数と、チャンクサーバやクライアントと同一サーバで動作するアプリケーション群が使用するメモリサイズなどを同時に表示することで、しきい値を調整するのか、チャンクサーバやクライアントと同一サーバで動作するアプリケーション群の設定を変更するのか、判断できるようにする。
【０１２２】
［「最適な通信サイズ」を分散ファイルシステムの設定に反映する一例］
設定値反映部１４０Ａ，１４０Ｂ，１４０Ａ’，１４０Ｂ’は、算出した「最適な通信サイズ」を分散ファイルシステムに反映する。このとき、設定値反映部１４０Ａ’，１４０Ｂ’は、上位アプリケーションごとに特化した設定をできるようにするため、クライアントの起動時に「通信サイズ」を読み込み、チャンクサーバからチャンクデータを読み出す「ｒｅａｄ要求」時に、「通信サイズ」を指定するようにする。設定値反映部１４０Ａ，１４０Ｂは、「ｒｅａｄ要求」受信時に、クライアントから受信した「通信サイズ」に従い、「ｒｅａｄ要求」で指定されたデータについて、送信するチャンクデータのサイズを「通信サイズ」にしたデータをクライアントに返す。
【０１２３】
通信サイズ最適化システム１は、機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、「図３で図示した各構成要素」、もしくは、「図４乃至図１１で図示した各データの各構成要素」の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。たとえば、通信サイズ最適化システム１の設定値反映部１４０Ａ，１４０Ｂ，１４０Ａ’，１４０Ｂ’は、チャンクサーバ、クライアントに組み込むことができる。通信サイズ最適化システム１の動作履歴収集部１１０、動作履歴記憶部１２０、設定値調整部１３０は、分散ファイルシステムのマスタ（たとえば、非特許文献１参照）、チャンクサーバもしくはクライアントに組み込んでもよく、さらに、分散ファイルシステムとは独立した装置であってもよい。ただし、複数回繰り返されるバッチ処理を実行するシステムに適用される。
【０１２４】
また、図３には図示しないが、通信サイズ最適化システム１は、マスタ、チャンクサーバ、クライアント等とネットワーク等を介して接続される。複数の記憶部は、たとえば、物理サーバと当該サーバに接続されたディスク装置や、データセンタ内に仮想的に構築された仮想サーバと仮想ストレージ等であってよい。また、情報処理装置は、物理サーバやデータセンタを利用するクライアント装置であってよい。
【０１２５】
また、ネットワークとして、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）等任意のネットワークを使用できる。なお、通信サイズ最適化システム１の動作をプログラムとして構築し、コンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【０１２６】
また、構築されたプログラムをハードディスク装置や、フレキシブルディスク・ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
【０１２７】
［第２の実施形態の効果］
このように、第２の実施形態に係る通信サイズ最適化システム１は、通信サイズを算出するために必要なデータを収集し情報を抽出する動作履歴収集部１１０と、動作履歴収集部１１０の「収集したデータ」と「抽出した情報」を格納する動作履歴記憶部１２０と、動作履歴記憶部１２０に格納されている情報を基に通信サイズを算出する設定値調整部１３０と、分散ファイルシステムの設定値に設定値調整部１３０が算出した通信サイズを反映する設定値反映部１４０Ａ，１４０Ｂ，１４０Ａ’，１４０Ｂ’と、を備える。このため、第２の実施形態に係る通信サイズ最適化システム１は、上位アプリケーションの性能向上に繋がる、上位アプリケーションに最適な通信サイズを算出し、分散ファイルシステムに算出した値を反映することができる。
【０１２８】
たとえば、上位アプリケーションが複数回、同一処理を実行するバッチ処理である場合、１回目のバッチ処理の実行時に、ｒｅａｄ要求に関するデータと、「アプリケーションのメモリ最大値」に関するデータと、を収集し、収集したデータから、上位アプリケーションに最適な通信サイズを算出することで、上位アプリケーションが２回目にバッチ処理を実行する際には、１回目よりも上位アプリケーションの実行時間を短くすることができる。さらに、動作履歴反映部１４０Ａ，１４０Ｂ，１４０Ａ’，１４０Ｂ’にて、クライアントで通信サイズを指定できるようにすることで、各上位アプリケーションに特化した通信サイズを指定することで、各上位アプリケーションの性能を向上させることができる。
【０１２９】
（システム構成等）
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１３０】
また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１３１】
（プログラム）
また、上記実施形態に係る通信サイズ最適化装置１０が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。この場合、コンピュータがプログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、通信サイズ最適化装置１０と同様の機能を実現する通信サイズ最適化プログラムを実行するコンピュータの一例を説明する。
【０１３２】
図２３は、通信サイズ最適化プログラムを実行するコンピュータを示す図である。図２３に示すように、コンピュータ１０００は、たとえば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、ＵＳＢ（Universal  Serial  Bus）ポートインタフェース１０５０と、ＨＤＭＩ（登録商標）（High-Definition  Multimedia  Interface）ポートやＤＶＩ（Digital  Visual  Interface）ポート（ＨＤＭＩ（登録商標）ポート／ＤＶＩポート）１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【０１３３】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、たとえば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。ディスクドライブ１１００には、たとえば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。ＵＳＢインタフェース１０５０には、たとえば、マウス１１１０およびキーボード１１２０が接続される。ＨＤＭＩ（登録商標）ポート／ＤＶＩポート１０６０には、たとえば、ディスプレイ１１３０が接続される。
【０１３４】
ここで、図２３に示すように、ハードディスクドライブ１０９０は、たとえば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。上記実施形態で説明した各テーブルは、たとえばハードディスクドライブ１０９０やメモリ１０１０に記憶される。
【０１３５】
また、通信サイズ最適化プログラムは、たとえば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、ハードディスクドライブ１０９０に記憶される。具体的には、上記実施形態で説明した通信サイズ最適化装置１０が実行する各処理が記述されたプログラムモジュールが、ハードディスクドライブ１０９０に記憶される。
【０１３６】
また、通信サイズ最適化プログラムによる情報処理に用いられるデータは、プログラムデータとして、たとえば、ハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【０１３７】
なお、通信サイズ最適化プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、たとえば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、通信サイズ最適化プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【０１３８】
１  通信サイズ最適化システム
１０，１０Ａ  通信サイズ最適化装置
１１  入出力部
１２  制御部
１３  記憶部
１２ａ，１１０  動作履歴収集部
１３ａ，１２０  動作履歴記憶部
１２ｂ，１３０  設定値調整部
１２ｃ，１４０Ａ，１４０Ｂ，１４０Ａ’，１４０Ｂ’  設定値反映部
４０Ａ，４０Ｂ，４０Ａ’，４０Ｂ’  サーバ
５０Ａ，５０Ｂ，５０Ａ’，５０Ｂ’  Ａｐｐｌｉｃａｔｉｏｎｓ（アプリケーション群）
６０Ａ，６０Ｂ  Ｃｌｉｅｎｔ（分散ファイルシステムのクライアント）
７０Ａ，７０Ｂ  Ｃｌｉｅｎｔの動作ログ
８０Ａ，８０Ｂ  Ｃｈｕｎｋｓｅｒｖｅｒ（分散ファイルシステムのチャンクサーバ）
９０Ａ，９０Ｂ  Ｃｈｕｎｋｓｅｒｖｅｒの動作ログ
１２１  Ｄ１テーブル
１２２  Ｄ２テーブル
１２３  Ｄ１テーブルの行数
１２４  Ｄ３テーブル
１２５  Ｄ３の最大値テーブル
１２６  Ｄ４テーブル
１２７  Ｄ４のマージテーブル
１２８  Ｄ４の最大値テーブル
２００  最適な通信サイズを確認するグラフの一例
１０００  コンピュータ
１０１０  メモリ
１０１１  ＲＯＭ（Read  Only  Memory）
１０１２  ＲＡＭ（Random  Access  Memory）
１０２０  ＣＰＵ
１０３０  ハードディスクドライブインタフェース
１０４０  ディスクドライブインタフェース
１０５０  ＵＳＢ（Universal  Serial  Bus）ポートインタフェース
１０６０  ＨＤＭＩ（登録商標）（High-Definition  Multimedia  Interface）ポート／ＤＶＩ（Digital  Visual  Interface）ポート
１０７０  ネットワークインタフェース
１０８０  バス
１０９０  ハードディスクドライブ
１０９１  ＯＳ
１０９２  アプリケーションプログラム
１０９３  プログラムモジュール
１０９４  プログラムデータ
１１００  ディスクドライブ
１１１０  マウス
１１２０  キーボード
１１３０  ディスプレイ
【図１】
2015172800.tif 000003
【図２】
2015172800.tif 000004
【図３】
2015172800.tif 000005
【図４】
2015172800.tif 000006
【図５】
2015172800.tif 000007
【図６】
2015172800.tif 000008
【図７】
2015172800.tif 000009
【図８】
2015172800.tif 000010
【図９】
2015172800.tif 000011
【図１０】
2015172800.tif 000012
【図１１】
2015172800.tif 000013
【図１２】
2015172800.tif 000014
【図１３】
2015172800.tif 000015
【図１４】
2015172800.tif 000016
【図１５】
2015172800.tif 000017
【図１６】
2015172800.tif 000018
【図１７】
2015172800.tif 000019
【図１８】
2015172800.tif 000020
【図１９】
2015172800.tif 000021
【図２０】
2015172800.tif 000022
【図２１】
2015172800.tif 000023
【図２２】
2015172800.tif 000024
【図２３】
2015172800.tif 000025