(57)【要約】【課題】データ出力によるアプリケーションの動作への影響をより確実に抑える。【解決手段】経路負荷算出部は、記憶装置に対する操作に用いられるAPIを表す操作API情報に基づいて、複数の記憶装置の経路の負荷を算出し、出力先決定部は、算出された経路の負荷に応じて、データを出力する出力先としての記憶装置を決定し、出力制御部は、出力先として決定された記憶装置へのデータの出力を制御する。本技術は、例えば組み込みシステムに適用することができる。【選択図】図３
2013205882.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に対する操作に用いられるAPI（Application Programming Interface）を表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出する経路負荷算出部と、
算出された経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定する出力先決定部と、
出力先として決定された前記記憶装置への前記データの出力を制御する出力制御部と
を備える情報処理装置。
【請求項２】
算出された前記経路の負荷に基づいて、出力される前記データを分割する必要があるか否かを判定する分割判定部をさらに備え、
前記出力先決定部は、前記データを分割する必要があると判定された場合、前記経路の負荷に応じて前記データを分割し、分割されたデータの出力先を決定する
請求項１に記載の情報処理装置。
【請求項３】
前記経路負荷算出部は、前記記憶装置の経路の負荷に基づいて、データを出力する出力先の優先度を設定し、
前記出力先決定部は、前記優先度に応じて、分割されたデータの出力先を決定する
請求項２に記載の情報処理装置。
【請求項４】
前記経路負荷算出部は、前記記憶装置に対する操作に用いられるAPIの使用履歴に応じて、設定した前記優先度を変更する
請求項３に記載の情報処理装置。
【請求項５】
前記分割されたデータの出力先を表す出力先情報を生成する出力先情報生成部と、
前記出力先情報に基づいて、前記分割されたデータをそれぞれの出力先から取得して結合するデータ結合部とをさらに備える
請求項２に記載の情報処理装置。
【請求項６】
前記出力先情報生成部は、分割された全てのデータと、それぞれの出力先とを対応付けた前記出力先情報を生成する
請求項５に記載の情報処理装置。
【請求項７】
前記出力先情報生成部は、分割された１のデータと、その次のデータの出力先とを対応付けた前記出力先情報を生成する
請求項５に記載の情報処理装置。
【請求項８】
前記出力先情報生成部は、分割された１のデータと、その前のデータの出力先とを対応付けた前記出力先情報を生成する
請求項５に記載の情報処理装置。
【請求項９】
前記経路負荷算出部は、前記記憶装置に記憶されているファイルを操作するためのAPIを表す前記操作API情報に基づいて、前記記憶装置の経路の負荷を算出する
請求項１に記載の情報処理装置。
【請求項１０】
前記経路負荷算出部は、前記記憶装置との通信に関するAPIを表す前記操作API情報に基づいて、前記記憶装置の経路の負荷を算出する
請求項１に記載の情報処理装置。
【請求項１１】
記憶装置に対する操作に用いられるAPI（Application Programming Interface）を表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出する経路負荷算出部と、
算出された前記経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定する出力先決定部と、
決定された前記出力先への前記データの出力を制御する出力制御部と
を備える情報処理装置の情報処理方法であって、
前記情報処理装置は、
記憶装置に対する操作に用いられるAPIを表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出し、
算出された前記経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定し、
決定された前記出力先への前記データの出力を制御する
ステップを含む情報処理方法。
【請求項１２】
記憶装置に対する操作に用いられるAPI（Application Programming Interface）を表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出する経路負荷算出ステップと、
算出された前記経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定する出力先決定ステップと、
決定された前記出力先への前記データの出力を制御する出力制御ステップと
を含む処理をコンピュータに実行させるプログラム。
【請求項１３】
情報処理装置と記憶装置とがネットワークを介して接続されてなる情報処理システムにおいて、
前記情報処理装置は、
前記記憶装置に対する操作に用いられるAPI（Application Programming Interface）を表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出する経路負荷算出部と、
算出された経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定する出力先決定部と、
出力先として決定された前記記憶装置への前記データの出力を制御する出力制御部と
を備える情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、情報処理装置および方法、プログラム、並びに情報処理システムに関し、特に、データ出力によるアプリケーションの動作への影響をより確実に抑えることができるようにする情報処理装置および方法、プログラム、並びに情報処理システムに関する。
【背景技術】
【０００２】
従来、ログデータ（以下、単にログという）をネットワーク上で転送するソフトウェアがある。その１つであるsyslog-ngによれば、アプリケーション名やログの内容に応じてログの出力先を指定することができる。
【０００３】
また、予めログに対して出力先を対応付けたテーブルを参照することで、ログの出力先を切り替える技術がある（例えば、特許文献１，２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１６９６４２号公報
【特許文献２】特開２００４−４６７１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、いわゆる組み込みシステム（エンベデッドシステム）においては、リソースの制限が厳しく、アプリケーションの動作への影響をできる限り抑える必要がある。しかしながら、このような環境において、ログ等のデータの出力の際に、出力先の経路の負荷が変化した場合、上述した技術では、経路の負荷に応じて出力先を動的に切り替えることができないので、システム全体の負荷が高くなり、アプリケーションの動作へ影響を及ぼす恐れがあった。
【０００６】
本技術は、このような状況に鑑みてなされたものであり、データ出力によるアプリケーションの動作への影響をより確実に抑えることができるようにするものである。
【課題を解決するための手段】
【０００７】
本技術の一側面の情報処理装置は、記憶装置に対する操作に用いられるAPI（Application Programming Interface）を表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出する経路負荷算出部と、算出された経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定する出力先決定部と、出力先として決定された前記記憶装置への前記データの出力を制御する出力制御部とを備える。
【０００８】
前記情報処理装置には、算出された前記経路の負荷に基づいて、出力される前記データを分割する必要があるか否かを判定する分割判定部をさらに設け、前記出力先決定部には、前記データを分割する必要があると判定された場合、前記経路の負荷に応じて前記データを分割し、分割されたデータの出力先を決定させることができる。
【０００９】
前記経路負荷算出部には、前記記憶装置の経路の負荷に基づいて、データを出力する出力先の優先度を設定させ、前記出力先決定部には、前記優先度に応じて、分割されたデータの出力先を決定させることができる。
【００１０】
前記経路負荷算出部には、前記記憶装置に対する操作に用いられるAPIの使用履歴に応じて、設定した前記優先度を変更させることができる。
【００１１】
前記情報処理装置には、前記分割されたデータの出力先を表す出力先情報を生成する出力先情報生成部と、前記出力先情報に基づいて、前記分割されたデータをそれぞれの出力先から取得して結合するデータ結合部とをさらに設けることができる。
【００１２】
前記出力先情報生成部には、分割された全てのデータと、それぞれの出力先とを対応付けた前記出力先情報を生成させることができる。
【００１３】
前記出力先情報生成部には、分割された１のデータと、その次のデータの出力先とを対応付けた前記出力先情報を生成させることができる。
【００１４】
前記出力先情報生成部には、分割された１のデータと、その前のデータの出力先とを対応付けた前記出力先情報を生成させることができる。
【００１５】
前記経路負荷算出部には、前記記憶装置に記憶されているファイルを操作するためのAPIを表す前記操作API情報に基づいて、前記記憶装置の経路の負荷を算出させることができる。
【００１６】
前記経路負荷算出部には、前記記憶装置との通信に関するAPIを表す前記操作API情報に基づいて、前記記憶装置の経路の負荷を算出させることができる。
【００１７】
本技術の一側面の情報処理方法は、記憶装置に対する操作に用いられるAPI（Application Programming Interface）を表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出する経路負荷算出部と、算出された前記経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定する出力先決定部と、決定された前記出力先への前記データの出力を制御する出力制御部とを備える情報処理装置の情報処理方法であって、前記情報処理装置は、記憶装置に対する操作に用いられるAPIを表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出し、算出された前記経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定し、決定された前記出力先への前記データの出力を制御するステップを含む。
【００１８】
本技術の一側面のプログラムは、記憶装置に対する操作に用いられるAPI（Application Programming Interface）を表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出する経路負荷算出ステップと、算出された前記経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定する出力先決定ステップと、決定された前記出力先への前記データの出力を制御する出力制御ステップとを含む処理をコンピュータに実行させる。
【００１９】
本技術の一側面の情報処理システムは、情報処理装置と記憶装置とがネットワークを介して接続されてなる情報処理システムであって、前記情報処理装置が、前記記憶装置に対する操作に用いられるAPI（Application Programming Interface）を表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出する経路負荷算出部と、算出された経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定する出力先決定部と、出力先として決定された前記記憶装置への前記データの出力を制御する出力制御部とを備える。
【００２０】
本技術の一側面においては、記憶装置に対する操作に用いられるAPIを表す操作API情報に基づいて、複数の記憶装置の経路の負荷が算出され、算出された経路の負荷に応じて、データを出力する出力先としての記憶装置が決定され、決定された出力先へのデータの出力が制御される。
【発明の効果】
【００２１】
本技術の一側面によれば、データ出力によるアプリケーションの動作への影響をより確実に抑えることが可能となる。
【図面の簡単な説明】
【００２２】
【図１】本技術を適用した情報処理装置の一実施の形態の構成例を示す図である。
【図２】情報処理装置のハードウェア構成例を示すブロック図である。
【図３】情報処理装置の機能構成例を示すブロック図である。
【図４】経路負荷算出部の構成例を示すブロック図である。
【図５】データ出力処理について説明するフローチャートである。
【図６】経路負荷算出処理について説明するフローチャートである。
【図７】データ出力先情報の例を示す図である。
【図８】データ結合処理について説明するフローチャートである。
【図９】データ出力先情報の他の例を示す図である。
【図１０】データ結合処理について説明するフローチャートである。
【図１１】データ出力先情報のさらに他の例を示す図である。
【図１２】データ結合処理について説明するフローチャートである。
【発明を実施するための形態】
【００２３】
以下、本技術の実施の形態について図を参照して説明する。
【００２４】
［情報処理システムの構成例］
図１は、本技術を適用した情報処理装置の一実施の形態の構成例を示す図である。
【００２５】
図１に示されるように、組み込みシステムとしての情報処理装置１は、メモリ１１と補助記憶装置１２とを備えている。また、情報処理装置１には、外付けの補助記憶装置１３が接続されている。さらに、情報処理装置１には、ネットワーク１４を介して、図示せぬ記憶装置が接続されているものとする。
【００２６】
図１においては、補助記憶装置１２および外付けの補助記憶装置１３は、１つずつであるが、それぞれ複数であってもよい。また、ネットワーク１４を介して接続される記憶装置もまた、複数であってもよい。なお、以下においては、補助記憶装置１２、外付けの補助記憶装置１３、ネットワーク１４を介して接続される記憶装置等をあわせて、単に記憶装置という。
【００２７】
メモリ１１には、所定のデータ１１ｄが格納されており、情報処理装置１は、メモリ１１内のデータ１１ｄを記憶装置に出力して保存させるデータ出力要求がなされると、データ１１ｄを、記憶装置それぞれの経路の負荷に応じて、記憶装置それぞれまたはいずれかに出力する。
【００２８】
［情報処理装置の構成例］
図２は、情報処理装置１のハードウェア構成例を示している。情報処理装置１は、例えば、パーソナルコンピュータで構成することができ、その構成は、パーソナルコンピュータと同様な構成とすることができる。
【００２９】
情報処理装置１は、CPU（Central Processing Unit）３１、ROM（Read Only Memory）３２、RAM（Random Access Memory）３３、バス３４、入出力インタフェース３５、入力部３６、出力部３７、記憶部３８、通信部３９、およびドライブ４０を含む構成とされている。
【００３０】
情報処理装置１において、CPU３１、ROM３２、およびRAM３３は、バス３４により相互に接続されている。バス３４には、さらに、入出力インタフェース３５が接続されている。入出力インタフェース３５には、キーボード、マウス、マイクロホンなどよりなる入力部３６、ディスプレイ、スピーカなどよりなる出力部３７、ハードディスクや不揮発性のメモリなどよりなる記憶部３８、ネットワークインタフェースなどよりなる通信部３９が卒族されている。
【００３１】
入出力インタフェース３５にはまた、必要に応じてドライブ４０が接続され、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどよりなるリムーバブルメディア４１が適宜装着され、それらから読み出されたプログラムが、必要に応じて記憶部３８にインストールされる。
【００３２】
また、プログラムは、有線または無線の伝送媒体を介して、通信部３９で受信し、記憶部３８にインストールすることができる。その他、プログラムは、ROM３２や記憶部３８に、あらかじめインストールしておくことができる。
【００３３】
なお、情報処理装置１が実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われる処理であっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【００３４】
［情報処理装置の機能構成例］
図３は、図２のCPU３１がプログラムを実行することにより実現される、情報処理装置１の本技術に係る部分の機能構成例を示している。
【００３５】
図３の情報処理装置１は、経路負荷算出部６１、分割判定部６２、データ出力先決定部６３、出力先情報生成部６４、データ出力制御部６５、およびデータ結合部６６から構成される。
【００３６】
経路負荷算出部６１は、情報処理装置１に内蔵されている、または、情報処理装置１に接続されている記憶装置それぞれの経路の負荷を算出する。なお、経路負荷算出部６１の詳細な構成については、図４を参照して後述する。
【００３７】
分割判定部６２は、経路負荷算出部６１により算出された経路の負荷に基づいて、データ出力要求に応じて記憶装置に出力されるメモリ１１内のデータ１１ｄ（図１）を分割する必要があるか否かを判定する。
【００３８】
データ出力先決定部６３は、経路負荷算出部６１により算出された経路の負荷に応じて、メモリ１１内のデータ１１ｄを出力する出力先としての記憶装置を決定する。データ出力先決定部６３は、分割判定部６２により、メモリ１１内のデータ１１ｄを分割する必要がないと判定された場合には、メモリ１１内のデータ１１ｄを一括で出力する記憶装置を１つ決定する。また、データ出力先決定部６３は、メモリ１１内のデータ１１ｄを分割する必要があると判定された場合には、メモリ１１内のデータ１１ｄを分割し、分割したデータを出力する記憶装置を複数決定する。
【００３９】
出力先情報生成部６４は、データ出力先決定部６３により、メモリ１１内のデータ１１ｄが分割された場合に、その分割されたデータそれぞれの出力先を表すデータ出力先情報を生成する。
【００４０】
データ出力制御部６５は、データ出力先決定部６３により出力先として決定された記憶装置への、メモリ１１内のデータ１１ｄの出力を制御する。
【００４１】
データ結合部６６は、メモリ１１内のデータ１１ｄが分割されて出力された場合、出力先情報生成部６４により生成されたデータ出力先情報に基づいて、分割されたデータをそれぞれの出力先から取得して結合する。
【００４２】
［経路負荷算出部の詳細な構成例］
図４は、経路負荷算出部６１の詳細な構成例を示している。
【００４３】
図４に示されるように、経路負荷算出部６１は、転送速度取得部９１、操作API情報取得部９２、算出部９３、および優先度設定部９４から構成される。
【００４４】
転送速度取得部９１は、データの出力先の候補となる記憶装置それぞれのデータ転送速度を取得する。
【００４５】
操作API情報取得部９２は、記憶装置それぞれに対する操作に用いられるAPI（Application Programming Interface）である操作APIを解析することで、その操作APIを表す操作API情報を取得する。
【００４６】
算出部９３は、転送速度取得部９１により取得されたデータ転送速度と、操作API情報取得部９２により取得された操作API情報とに基づいて、記憶装置それぞれの経路の負荷を算出する。
【００４７】
優先度設定部９４は、算出部９３により算出された記憶装置それぞれの経路の負荷に基づいて、記憶装置それぞれに対して、データの出力先としての優先度を設定する。
【００４８】
［情報処理装置によるデータ出力処理］
次に、図５のフローチャートを参照して、情報処理装置１によるデータ出力処理について説明する。
【００４９】
ステップＳ１１において、CPU３１は、所定のトリガにより、メモリ１１内のデータ１１ｄの出力が要求されたか否かを判定する。
【００５０】
ステップＳ１１の処理は、データ１１ｄの出力が要求されるまで繰り返され、データ１１ｄの出力が要求されたと判定されると、処理はステップＳ１２に進む。
【００５１】
ステップＳ１２において、経路負荷算出部６１は、経路負荷算出処理を実行し、データ１１ｄの出力先の候補である記憶装置それぞれの経路の負荷を算出する。
【００５２】
［経路負荷算出部による経路負荷算出処理］
ここで、図６のフローチャートを参照して、経路負荷算出部６１による経路負荷算出処理の詳細について説明する。
【００５３】
ステップＳ３１において、転送速度取得部９１は、データの出力先の候補である記憶装置それぞれのデータ転送速度を取得する。データ転送速度は、記憶装置によって予め決まっており、転送速度取得部９１は、記憶装置からそれぞれのデータ転送速度を表す情報を取得する。
【００５４】
ステップＳ３２において、操作API情報取得部９２は、記憶装置それぞれに対する操作に用いられるAPIである操作APIを解析することで、操作API情報を取得する。
【００５５】
具体的には、操作API情報取得部９２は、記憶装置に記憶されている（される）ファイルを操作するためのAPIであるファイル操作APIとしての、read()、write()、open()、close()、lseek()等を表す操作API情報を取得する。read()は、ファイルの読み出しを行うAPIであり、write()は、ファイルの書き込みを行うAPIである。open()は、ファイルのオープンを行うAPIであり、close()は、ファイルのクローズを行うAPIである。また、lseek()は、ファイルの読み書きのオフセット位置を変えるAPIである。
【００５６】
ステップＳ３３において、算出部９３は、操作API情報取得部９２により取得された操作API情報に基づいて、転送速度取得部９１により取得されたデータ転送速度から、データ１１ｄの出力先としての記憶装置それぞれの経路の負荷を算出する。
【００５７】
具体的には、例えば、算出部９３は、read()やwrite（）が実行されている記憶装置の経路について、読み出しや書き込みが行われているファイルのデータ長と、転送速度取得部９１により取得されたデータ転送速度とを用いて、その経路の負荷を算出する。なお、算出の結果得られる経路の負荷は、絶対的な数値ではなく、例えば、所定の基準値を基準とした相対的な数値や、その数値の範囲を表すランク等で表わされる。
【００５８】
また、例えば、算出部９３は、直近で、open（）が実行されることによりオープンされているファイルが多い記憶装置の経路については、負荷が増加していると見積もり、例えば、負荷を表す数値に所定の値を加算する。
【００５９】
さらに、例えば、算出部９３は、直近で、close（）が実行されることによりクローズされたファイルが多い記憶装置の経路については、負荷が減少していると見積もり、例えば、負荷を表す数値から所定の値を減算する。
【００６０】
また、例えば、算出部９３は、lseek（）実行時のファイルのオフセット位置が、ファイルの先頭に近い場合は、負荷が増加していると見積もり、ファイルの終端に近い場合は、負荷が減少していると見積もる。
【００６１】
このようにして、記憶装置それぞれについて実行されているファイル操作APIに基づいて、経路の負荷が算出されるので、例えば、記憶装置それぞれに対してデータのサンプルを実際に出力することで経路の負荷を測定する従来の手法と比べて簡単な処理で、経路の負荷を算出することができる。
【００６２】
ステップＳ３４において、優先度設定部９４は、算出部９３により算出された記憶装置それぞれの経路の負荷に基づいて、記憶装置それぞれに対して、データの出力先の候補の優先度を設定する。具体的には、優先度設定部９４は、経路の負荷が低い記憶装置ほど、出力先としての優先度を高くするように、記憶装置の優先度を設定する。
【００６３】
ステップＳ３４の後、処理は、図５のフローチャートのステップＳ１２に戻る。
【００６４】
ステップＳ１２の後、ステップＳ１３において、分割判定部６２は、経路負荷算出部６１により算出された記憶装置それぞれの経路の負荷、記憶装置の空き容量および転送能力や、メモリ１１内のデータ１１ｄのサイズ等に基づいて、データ１１ｄを分割する必要があるか否かを判定する。このとき、分割判定部６２は、データ１１ｄの出力に必要なメモリ１１やCPU３１等のリソースの使用制限を加味しつつ、データ１１ｄを分割する必要があるか否かを判定する。
【００６５】
ステップＳ１３において、データ１１ｄを分割する必要がないと判定された場合、すなわち、データ１１ｄを一括して出力する場合、処理はステップＳ１４に進む。
【００６６】
ステップＳ１４において、データ出力先決定部６３は、経路の負荷が最も低い記憶装置、すなわち、データ出力の優先度が最も高い記憶装置を、データ１１ｄの出力先として決定する。
【００６７】
一方、ステップＳ１３において、データ１１ｄを分割する必要があると判定された場合、処理はステップＳ１５に進み、データ出力先決定部６３は、記憶装置それぞれの経路の負荷、記憶装置の空き容量、転送能力等に応じてデータ１１ｄを分割し、分割したデータそれぞれを出力する出力先としての複数の記憶装置を決定する。このとき、データ出力先決定部６３は、データ１１ｄを、複数の記憶装置の経路毎に最適なサイズとなるように分割する。なお、ここでは、データ出力先決定部６３が、記憶装置それぞれに設定された優先度に応じて、例えば、優先度の高い上位３つの記憶装置を、３つに分割したデータの出力先として決定するようにしてもよい。
【００６８】
ステップＳ１６において、出力先情報生成部６４は、データ出力先決定部６３により分割されたデータそれぞれの出力先を表すデータ出力先情報を生成する。具体的には、出力先情報生成部６４は、分割された全てのデータと、それぞれの出力先とを対応付けたデータ出力先情報を生成する。
【００６９】
ここで、図７を参照して、データ出力先情報の例について説明する。
【００７０】
図７において、記憶装置１０１および記憶装置１０２は、それぞれデータの出力先１および出力先２として決定された記憶装置である。記憶装置１０１には、３つに分割されたデータのうちのデータ１が、記憶装置１０２には、３つに分割されたデータのうちのデータ２およびデータ３が出力される。
【００７１】
このような場合、データ出力先情報としては、図７に示されるように、データ１と記憶装置１０１を示す出力先１とが対応づけられ、データ２およびデータ３と記憶装置１０２を示す出力先２とが対応づけられたデータ出力先情報１１１が生成されるようになる。
【００７２】
なお、データ出力先情報１１１は、例えば、情報処理装置１内の所定の記憶領域に記憶される。
【００７３】
さて、図５のフローチャートに戻り、ステップＳ１７において、データ出力制御部６５は、データ１１ｄを、データ出力先決定部６３により出力先として決定された記憶装置に出力させる。
【００７４】
以上の処理によれば、記憶装置に対する操作に用いられる操作APIを表す操作API情報に基づいて、記憶装置の経路の負荷が算出され、算出された経路の負荷に応じて、データ出力先としての記憶装置が決定されるようになる。したがって、組み込みシステム等の、リソースの制限が厳しく、アプリケーションの動作への影響をできる限り抑える必要がある環境において、ログ等のデータの出力の際に、出力先の経路の負荷が変化した場合であっても、経路の負荷に応じて出力先を動的に切り替えることができるので、システム全体の負荷の上昇を抑えることができ、データ出力によるアプリケーションの動作への影響をより確実に抑えることが可能となる。
【００７５】
また、記憶装置それぞれについて実行されているファイル操作APIに基づいて、経路の負荷が算出されるので、記憶装置それぞれに対してデータのサンプルを実際に出力することで経路の負荷を測定する従来の手法と比べて簡単な処理で、経路の負荷を算出することができる。
【００７６】
なお、以上においては、経路の負荷に応じて出力先を決定するようにしたが、出力先としての記憶装置の空き容量に基づいて、出力先を決定するようにしてもよい。具体的には、例えば、出力先としての記憶装置の空き容量がなくなったときに、出力先を切り替えるようにしてもよい。
【００７７】
また、以上においては、経路負荷算出処理において、記憶装置に記憶されているファイルを操作するためのファイル操作APIを表す操作API情報に基づいて、経路の負荷が算出されるようにしたが、記憶装置との通信に関するAPIを表す操作API情報を用いて、経路の負荷が算出されるようにもできる。
【００７８】
この場合、図６のフローチャートのステップＳ３２において、操作API情報取得部９２は、記憶装置との通信に関するAPIであるネットワーク操作APIとしての、bind()、connect()、send()、recv()、close()等を表す操作API情報を取得する。bind()は、通信に用いるアドレスの設定を行うAPIであり、connect()は、コネクションの確立を行うAPIである。send()は、データの送信を行うAPIであり、recv()は、データの受信を行うAPIである。また、close()は、生成したソケットをクローズするAPIである。
【００７９】
そして、ステップＳ３３において、算出部９３は、記憶装置それぞれの経路の負荷を算出する際に、bind()やconnect()が実行されていない記憶装置の経路について、負荷が減少していると見積もったり、send()やrecv()が実行されている記憶装置の中で、データの送信や受信の少ない記憶装置の経路について、負荷が減少していると見積もったりする。
【００８０】
また、算出部９３は、close()が実行された記憶装置の経路について、負荷が減少していると見積もるようにしてもよい。
【００８１】
このように、記憶装置それぞれについて実行されているネットワーク操作APIに基づいて、経路の負荷を算出するようにしてもよい。
【００８２】
さらに、記憶装置それぞれについて実行されたファイル操作APIの使用履歴を保持し、その履歴に基づいて、経路の負荷を算出するようにしてもよい。
【００８３】
具体的には、例えば、ファイル操作APIの使用履歴に基づいて、open()やclose()が最も実行されていない記憶装置に対して設定された優先度を上げるよう、優先度を変更するようにしてもよい。また、例えば、ファイル操作APIの使用履歴に基づいて、記憶装置毎のread()およびwrite()の頻度から、平均的な経路の負荷を算出するようにもできる。
【００８４】
ところで、上述したデータ出力処理によって、データが分割されて出力された場合、元のデータを参照するには、分割されたデータを結合して復元する必要がある。
【００８５】
［情報処理装置によるデータ結合処理］
そこで、図８を参照して、情報処理装置１による分割されたデータの結合処理について説明する。
【００８６】
ステップＳ１１１において、データ結合部６６は、例えば、情報処理装置１内の所定の記憶領域に記憶されているデータ出力先情報１１１（図７）を取得する。
【００８７】
ステップＳ１１２において、データ結合部６６は、取得したデータ出力先情報１１１を基に、分割されたデータ（分割データ）を取得する。図７の例では、データ出力先情報１１１により、分割データであるデータ１は記憶装置１０１を示す出力先１に記憶され、分割データであるデータ２およびデータ３は記憶装置１０２を示す出力先２に記憶されていることが判断されるので、データ結合部６６は、記憶装置１０１からデータ１を、記憶装置１０２からデータ２およびデータ３を取得する。
【００８８】
ステップＳ１１３において、データ結合部６６は、記憶装置それぞれから取得した分割データ（データ１乃至データ３）を結合する。
【００８９】
以上の処理によれば、分割して保存されたデータが結合されるので、分割前のデータを参照することが可能となる。
【００９０】
［データ出力先情報の他の例］
ところで、図５のフローチャートのステップＳ１６においては、分割された全てのデータと、それぞれの出力先とを対応付けたデータ出力先情報が生成されるものとしたが、以下においては、分割された１のデータと、その次のデータの出力先とを対応付けたデータ出力先情報が生成される例について説明する。
【００９１】
図９は、データ出力先情報の他の例について説明する図である。
【００９２】
図９において、記憶装置１０１および記憶装置１０２は、図７と同様、それぞれデータの出力先１および出力先２として決定された記憶装置である。記憶装置１０１には、３つに分割されたデータのうちのデータ１が、記憶装置１０２には、３つに分割されたデータのうちのデータ２およびデータ３が出力される。
【００９３】
また、記憶装置１０１に出力されるデータ１には、その次のデータであるデータ２の出力先２（記憶装置１０２）を示すデータ出力先情報１２１−１が生成されて付加される。記憶装置１０２に出力されるデータ２には、その次のデータであるデータ３の出力先２（記憶装置１０２）を示すデータ出力先情報１２１−２が生成されて付加される。なお、記憶装置１０２に出力されるデータ３には、その次のデータが存在しないので、NULL（空）のデータ出力先情報１２１−３が生成されて付加される。
【００９４】
このように、データ出力先情報１２１−１乃至１２１−３は、分割された１のデータと、その次のデータの出力先とを対応付けるものである。
【００９５】
なお、分割されたデータのうちの最初のデータ（データ１）の出力先を表すデータ出力先情報は、例えば、情報処理装置１内の所定の記憶領域に記憶される。
【００９６】
［情報処理装置によるデータ結合処理］
次に、図１０を参照して、図９で説明したデータ出力先情報に基づいて行われるデータ結合処理について説明する。
【００９７】
ステップＳ１２１において、データ結合部６６は、例えば、情報処理装置１内の所定の記憶領域に記憶されている最初の分割データ（データ１）のデータ出力先情報に基づいて、記憶装置１０１に保存されているデータ１を取得する。
【００９８】
ステップＳ１２２において、データ結合部６６は、取得したデータ１に、データ１の次のデータの出力先情報（次データ出力先情報）が付加されているか否かを判定する。
【００９９】
図９の例では、データ１には、データ２の出力先を示すデータ出力先情報１２１−１が付加されているので、処理はステップＳ１２３に進み、データ結合部６６は、データ出力先情報１２１−１に基づいて、記憶装置１０２に保存されているデータ２を取得する。
【０１００】
その後、処理はステップＳ１２２に戻り、データ結合部６６は、取得したデータ２に、データ２の次のデータの出力先情報（次データ出力先情報）が付加されているか否かを判定する。
【０１０１】
図９の例では、データ２には、データ３の出力先を示すデータ出力先情報１２１−２が付加されているので、処理はステップＳ１２３に進み、データ結合部６６は、データ出力先情報１２１−２に基づいて、記憶装置１０２に保存されているデータ３を取得する。
【０１０２】
その後、処理はステップＳ１２２に戻り、データ結合部６６は、取得したデータ３に、データ３の次のデータの出力先情報（次データ出力先情報）が付加されているか否かを判定する。
【０１０３】
図９の例では、データ３には、NULL（空）のデータ出力先情報１２１−３が付加されているので、次データ出力先情報が付加されていないと判定され、処理はステップＳ１２４に進む。
【０１０４】
ステップＳ１２４において、データ結合部６６は、記憶装置それぞれから取得した分割データ（データ１乃至データ３）を結合する。
【０１０５】
以上の処理によっても、分割して保存されたデータが結合されるので、分割前のデータを参照することが可能となる。
【０１０６】
［データ出力先情報のさらに他の例］
以上においては、分割された１のデータと、その次のデータの出力先とを対応付けたデータ出力先情報が生成されるものとしたが、以下においては、分割された１のデータと、その前のデータの出力先とを対応付けたデータ出力先情報が生成される例について説明する。
【０１０７】
図１１は、データ出力先情報のさらに他の例について説明する図である。
【０１０８】
図１１において、記憶装置１０１および記憶装置１０２は、図７と同様、それぞれデータの出力先１および出力先２として決定された記憶装置である。記憶装置１０１には、３つに分割されたデータのうちのデータ１が、記憶装置１０２には、３つに分割されたデータのうちのデータ２およびデータ３が出力される。
【０１０９】
また、記憶装置１０２に出力されるデータ３には、その前のデータであるデータ２の出力先２（記憶装置１０２）を示すデータ出力先情報１３１−３が生成されて付加される。さらに、記憶装置１０２に出力されるデータ２には、その前のデータであるデータ１の出力先１（記憶装置１０１）を示すデータ出力先情報１３１−２が生成されて付加される。なお、記憶装置１０１に出力されるデータ１には、その前のデータが存在しないので、NULL（空）のデータ出力先情報１３１−１が生成されて付加される。
【０１１０】
このように、データ出力先情報１３１−１乃至１３１−３は、分割された１のデータと、その前のデータの出力先とを対応付けるものである。
【０１１１】
なお、分割されたデータのうちの最後のデータ（データ３）の出力先を表すデータ出力先情報は、例えば、情報処理装置１内の所定の記憶領域に記憶される。
【０１１２】
［情報処理装置によるデータ結合処理］
次に、図１２を参照して、図１１で説明したデータ出力先情報に基づいて行われるデータ結合処理について説明する。
【０１１３】
ステップＳ１３１において、データ結合部６６は、例えば、情報処理装置１内の所定の記憶領域に記憶されている最後の分割データ（データ３）のデータ出力先情報に基づいて、記憶装置１０２に保存されているデータ３を取得する。
【０１１４】
ステップＳ１３２において、データ結合部６６は、取得したデータ３に、データ３の前のデータの出力先情報（前データ出力先情報）が付加されているか否かを判定する。
【０１１５】
図１１の例では、データ３には、データ２の出力先を示すデータ出力先情報１３１−３が付加されているので、処理はステップＳ１３３に進み、データ結合部６６は、データ出力先情報１３１−３に基づいて、記憶装置１０２に保存されているデータ２を取得する。
【０１１６】
その後、処理はステップＳ１３２に戻り、データ結合部６６は、取得したデータ２に、データ２の前のデータの出力先情報（前データ出力先情報）が付加されているか否かを判定する。
【０１１７】
図１１の例では、データ２には、データ１の出力先を示すデータ出力先情報１３１−２が付加されているので、処理はステップＳ１３３に進み、データ結合部６６は、データ出力先情報１３１−２に基づいて、記憶装置１０１に保存されているデータ１を取得する。
【０１１８】
その後、処理はステップＳ１３２に戻り、データ結合部６６は、取得したデータ１に、データ１の前のデータの出力先情報（前データ出力先情報）が付加されているか否かを判定する。
【０１１９】
図１１の例では、データ１には、NULL（空）のデータ出力先情報１３１−１が付加されているので、前データ出力先情報が付加されていないと判定され、処理はステップＳ１３４に進む。
【０１２０】
ステップＳ１３４において、データ結合部６６は、記憶装置それぞれから取得した分割データ（データ１乃至データ３）を結合する。
【０１２１】
以上の処理によっても、分割して保存されたデータが結合されるので、分割前のデータを参照することが可能となる。
【０１２２】
［本技術の適用例］
なお、本技術は、以下に挙げるような例に適用することが可能である。
【０１２３】
（１）デバッグ情報の収集
組み込みシステムにおいてコンテンツの再生等とともに実行される、ソフトウェアの状態を含むデバッグ情報の出力処理として、本技術のデータ出力処理を適用する。これにより、デバッグ情報の出力先として、負荷の低い経路の記憶装置が動的に選択されるので、コンテンツの再生等に影響を及ぼすことなく、デバッグ情報の出力処理を行うことができる。なお、分散されて保存されたデバッグ情報は、その解析時に、データ結合処理により収集、結合される。
【０１２４】
（２）ユーザデータのアップロード
組み込みシステムにおいて行われる、ユーザの嗜好データやユーザインタフェース（UI）の操作ログ等のユーザデータの一時保存処理として、本技術のデータ出力処理を適用する。これにより、ユーザデータの出力先として、負荷の低い経路の記憶装置が動的に選択されるので、組み込みシステムの動作に影響を及ぼすことなく、ユーザデータの一時保存処理を行うことができる。なお、一時保存されたユーザデータは、ネットワークの負荷が軽減したときに、データ結合処理により収集、結合されて、所定のサーバに転送（アップロード）される。
【０１２５】
（３）ゲーム中のプレーヤデータの保存
ゲーム機においてゲームの実行中に画像データや音声データ等に対して断続的に行われるデータアクセスとともに行われる、プレーヤデータの自動保存（オートセーブ）処理として、本技術のデータ出力処理を適用する。これにより、プレーヤデータの出力先として、負荷の低い経路の記憶装置が動的に選択されるので、ゲーム機のデータアクセスに影響を及ぼすことなく、ひいては、プレーヤのゲームに対する没入感を損なうことなく、プレーヤデータの自動保存処理を行うことができる。なお、プレーヤデータは、その参照時に、データ結合処理により収集、結合される。
【０１２６】
（４）多機能携帯電話機における低優先度データの一時保存
多機能携帯電話機（いわゆるスマートフォン）において通話とともに行われる、比較的優先度の低いデータ、例えばGPS（Global Positioning System）から取得した位置情報の推移を表すデータの一時保存処理として、本技術のデータ出力処理を適用する。これにより、低優先度データの出力先として、負荷の低い経路の記憶装置が動的に選択されるので、通話に影響を及ぼすことなく、低優先度データの出力処理を行うことができる。なお、一時保存された低優先度データは、通話が終了したときに、データ結合処理により収集、結合されて、所定のサーバに転送される。
【０１２７】
なお、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０１２８】
例えば、本技術は、１つの機能をネットワーク上の複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
【０１２９】
また、上述のフローチャートで説明した各ステップは、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０１３０】
さらに、１つのステップに複数の処理が含まれる場合には、その１つのステップに含まれる複数の処理は、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０１３１】
また、本技術は以下のような構成をとることができる。
（１）
記憶装置に対する操作に用いられるAPI（Application Programming Interface）を表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出する経路負荷算出部と、
算出された経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定する出力先決定部と、
出力先として決定された前記記憶装置への前記データの出力を制御する出力制御部と
を備える情報処理装置。
（２）
算出された前記経路の負荷に基づいて、出力される前記データを分割する必要があるか否かを判定する分割判定部をさらに備え、
前記出力先決定部は、前記データを分割する必要があると判定された場合、前記経路の負荷に応じて前記データを分割し、分割されたデータの出力先を決定する
（１）に記載の情報処理装置。
（３）
前記経路負荷算出部は、前記記憶装置の経路の負荷に基づいて、データを出力する出力先の優先度を設定し、
前記出力先決定部は、前記優先度に応じて、分割されたデータの出力先を決定する
（２）に記載の情報処理装置。
（４）
前記経路負荷算出部は、前記記憶装置に対する操作に用いられるAPIの使用履歴に応じて、設定した前記優先度を変更する
（３）に記載の情報処理装置。
（５）
前記分割されたデータの出力先を表す出力先情報を生成する出力先情報生成部と、
前記出力先情報に基づいて、前記分割されたデータをそれぞれの出力先から取得して結合するデータ結合部とをさらに備える
（２）乃至（４）のいずれかに記載の情報処理装置。
（６）
前記出力先情報生成部は、分割された全てのデータと、それぞれの出力先とを対応付けた前記出力先情報を生成する
（５）に記載の情報処理装置。
（７）
前記出力先情報生成部は、分割された１のデータと、その次のデータの出力先とを対応付けた前記出力先情報を生成する
（５）に記載の情報処理装置。
（８）
前記出力先情報生成部は、分割された１のデータと、その前のデータの出力先とを対応付けた前記出力先情報を生成する
（５）に記載の情報処理装置。
（９）
前記経路負荷算出部は、前記記憶装置に記憶されているファイルを操作するためのAPIを表す前記操作API情報に基づいて、前記記憶装置の経路の負荷を算出する
（１）乃至（８）のいずれかに記載の情報処理装置。
（１０）
前記経路負荷算出部は、前記記憶装置との通信に関するAPIを表す前記操作API情報に基づいて、前記記憶装置の経路の負荷を算出する
（１）乃至（８）のいずれかに記載の情報処理装置。
（１１）
記憶装置に対する操作に用いられるAPI（Application Programming Interface）を表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出する経路負荷算出部と、
算出された前記経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定する出力先決定部と、
決定された前記出力先への前記データの出力を制御する出力制御部と
を備える情報処理装置の情報処理方法であって、
前記情報処理装置は、
記憶装置に対する操作に用いられるAPIを表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出し、
算出された前記経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定し、
決定された前記出力先への前記データの出力を制御する
ステップを含む情報処理方法。
（１２）
記憶装置に対する操作に用いられるAPI（Application Programming Interface）を表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出する経路負荷算出ステップと、
算出された前記経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定する出力先決定ステップと、
決定された前記出力先への前記データの出力を制御する出力制御ステップと
を含む処理をコンピュータに実行させるプログラム。
（１３）
情報処理装置と記憶装置とがネットワークを介して接続されてなる情報処理システムにおいて、
前記情報処理装置は、
前記記憶装置に対する操作に用いられるAPI（Application Programming Interface）を表す操作API情報に基づいて、複数の前記記憶装置の経路の負荷を算出する経路負荷算出部と、
算出された経路の負荷に応じて、データを出力する出力先としての前記記憶装置を決定する出力先決定部と、
出力先として決定された前記記憶装置への前記データの出力を制御する出力制御部と
を備える情報処理システム。
【符号の説明】
【０１３２】
１  情報処理装置，  １１  メモリ，  １１ｄ  データ，  １２  補助記憶装置，  １３  補助記憶装置，  １４  ネットワーク，  ３１  CPU，  ６１  経路負荷算出部，  ６２  分割判定部，  ６３  データ出力先決定部，  ６４  出力先情報生成部，  ６５  データ出力制御部，  ６６  データ結合部，  ９１  転送速度取得部，  ９２  操作API情報取得部，  ９３  算出部，  ９４  優先度設定部
【図１】
2013205882.tif 000003
【図２】
2013205882.tif 000004
【図３】
2013205882.tif 000005
【図４】
2013205882.tif 000006
【図５】
2013205882.tif 000007
【図６】
2013205882.tif 000008
【図７】
2013205882.tif 000009
【図８】
2013205882.tif 000010
【図９】
2013205882.tif 000011
【図１０】
2013205882.tif 000012
【図１１】
2013205882.tif 000013
【図１２】
2013205882.tif 000014