以下に、図面を参照して、本発明にかかる出力プログラム、および出力方法の実施の形態を詳細に説明する。
(実施の形態にかかる出力方法の一実施例)
図1は、実施の形態にかかる出力方法の一実施例を示す説明図である。情報処理装置100は、業務処理システムに含まれる1以上の機器を用いて実行される業務処理単位で、それぞれの機器のリソースに関する情報を出力することができるコンピュータである。
ここで、業務処理システムは、例えば、ICT(Information and Communication Technology)システムである。機器は、例えば、ICT機器である。機器は、具体的には、サーバである。リソースは、例えば、CPU、メモリ、および、通信帯域などである。業務処理は、例えば、1以上の機器における1以上のプロセスの実行によって実現される一連の処理である。
ここで、従来、ICTシステムにおいて、1以上の機器を用いて実行される業務処理単位で、それぞれの機器のリソースの使用状況を表す指標値の時間変化を示す時系列データを分析することが望まれることがある。例えば、業務処理単位で時系列データを分析し、業務処理単位で機器のリソースにかかる負荷の変化傾向を把握し、または、業務処理単位で機器のリソースにかかる将来の負荷を予測することが望まれることがある。しかしながら、業務処理単位で時系列データを分析することが難しい場合がある。
例えば、1つの機器を用いて複数の業務処理が行われる場合がある。具体的には、1つの機器で、複数の業務処理からデータベースに対するクエリを受け付けるプロセスが実行される場合が考えられる。この場合、1つの機器のリソースの使用状況を表す指標値の時間変化を示す時系列データの中で、それぞれの業務処理に対応するデータは一体化しているため、業務処理単位で時系列データを分析することはできない。また、プロセス単位で、リソースの使用状況を表す指標値の時間変化を示す時系列データを取得可能であっても、同様に、業務処理単位で時系列データを分析することはできない。
これに対し、例えば、それぞれの機器のリソースごとの時系列データに対して成分分解を実施する場合が考えられる。具体的には、成分分解により、それぞれの機器のリソースごとの時系列データを、それぞれの機器のリソースごとの時系列データを形成する要素である1以上の成分データに分解することにより、業務処理単位で時系列データを分析しようと試みることが考えられる。しかしながら、分解された成分データを参照しても、業務処理単位で時系列データを分析することが難しい場合がある。
例えば、それぞれの機器のリソースごとの1以上の成分データの中から、1つの業務処理に対応する成分データの組み合わせを特定することができず、業務処理単位で時系列データを分析することができない。具体的には、異なるリソースに関する時系列データは異なる基準で分割されるため、リソース間での成分データの対応関係が不明であり、異なるリソースの成分データの組み合わせを、1つの業務処理に対応付けることができない。また、具体的には、業務処理間でリソースの使用傾向が類似すると、リソースに関する時系列データから分割される成分データの中で、複数の業務処理に関するデータが一体化してしまうことがある。
そこで、本実施の形態では、業務処理システムにおける業務処理の性質を利用して、業務処理システムのそれぞれの機器のリソースごとの時系列データに基づいて、業務処理単位でリソースに関する情報を出力可能にすることができる出力方法について説明する。
ここで、業務処理システムにおける業務処理の性質としては、例えば、以下の2つの性質が考えられる。例えば、業務処理の業務量が、日や週や月などの所定の時間間隔で周期的な変化傾向を示すという第1の性質が考えられる。また、例えば、1以上の業務処理のそれぞれの業務量に基づき、1以上のリソースのそれぞれの使用状況が決定するという第2の性質が考えられる。
上記性質によれば、異なるリソースのそれぞれの使用状況を表す指標値の時間変化を示す時系列データの中で、同じ業務処理に対応する成分データは、所定の時間間隔での周期的な変化傾向が互いに類似するような成分データになることが考えられる。また、上記性質によれば、1以上のリソースのそれぞれの使用状況を表す指標値が、1以上の業務処理のそれぞれの業務量に比例するという負荷モデルが考えられる。負荷モデルの具体的な内容については、図13および図14を用いて後述する。
このため、情報処理装置100が、上記負荷モデルを利用し、1以上のリソースのそれぞれに関する時系列データの中から、所定の時間間隔での周期的な変化傾向が互いに類似する成分データを分離すれば、業務処理単位でリソースに関する情報を取得可能になる。
図1の例では、(1-1)情報処理装置100は、1以上のリソースのそれぞれの使用状況を表す指標値の時間変化を示す時系列データを取得する。1以上のリソースは、例えば、同一の機器における異なる種類のリソースを含んでもよい。1以上のリソースは、例えば、異なる機器におけるリソースを含んでもよい。指標値は、例えば、CPU使用率、メモリ使用率、および、帯域使用率などである。
(1-2)情報処理装置100は、取得した時系列データに基づいて、所定の時間間隔ごとの1以上のリソースのそれぞれの使用状況を表す指標値を要素とする所定の時間間隔ごとのベクトルのそれぞれを列として含む行列Xを生成する。所定の時間間隔は、例えば、1日である。情報処理装置100は、例えば、1日ごとの1以上のリソースのそれぞれの使用状況を表す指標値を要素とする1日ごとのベクトルを生成し、1日ごとのベクトルのそれぞれを列として含む行列Xを生成する。
行列Xは、上記負荷モデルに基づき、所定の数分の基底ベクトルのそれぞれを列として含む基底行列Uと、所定の数分の重みベクトルのそれぞれを行として含む重み行列Aとの積により規定可能である。基底ベクトルは、所定の時間間隔での周期的な変化傾向が互いに類似するような、1以上のリソースのそれぞれについての成分データを表すベクトルである。成分データは、例えば、所定の時間間隔単位での成分値の時間変化を示す時系列データである。重みベクトルは、所定の時間間隔ごとの業務処理の重みを表すベクトルである。業務処理の重みは、例えば、業務処理の業務量に対応する。換言すれば、取得した時系列データのうち、グラフ101に対応するような、所定の時間間隔分の1つのリソースに関する部分的なデータが、グラフ102~104に対応するような、業務処理ごとの成分データに重み係数を乗じたデータの結合によって表現される。
(1-3)情報処理装置100は、生成した行列Xに対して非負値行列因子分解を実施し、基底行列Uを生成する。情報処理装置100は、例えば、行列Xを基底行列Uと重み行列Aとの積で規定し、非負値行列因子分解を実施し、基底行列Uを生成する。非負値行列因子分解については、例えば、下記参考文献1を参照することができる。
参考文献1 : Hoyer, Patrik O. “Non-negative matrix factorization with sparseness constraints.” Journal of machine learning research 5.Nov (2004): 1457-1469.
(1-4)情報処理装置100は、生成した基底行列に含まれる所定の数分の基底ベクトルのそれぞれが表す1以上の成分値を1以上のリソースのそれぞれについて分離した結果を出力する。情報処理装置100は、例えば、行列に含まれるベクトルを生成する際に、1以上のリソースのそれぞれの使用状況を表す指標値を、いずれの位置の要素としたかに基づいて、1以上の成分値を、1以上のリソースのそれぞれについて分離する。
これにより、情報処理装置100は、業務処理単位での1以上のリソースのそれぞれの情報を出力することができる。結果として、情報処理装置100は、利用者が、業務処理ごとに時系列データを解析しやすくすることができ、業務処理ごとに所定の時間間隔での1以上のリソースそれぞれの使用傾向を解析しやすくすることができる。
具体的には、情報処理装置100は、所定の時間間隔ごとにリソースに関する指標値を纏めて、行列のそれぞれの列として処理可能にすることができ、非負値行列因子分解の結果に、業務処理の第1の性質を反映させることができる。このため、情報処理装置100は、非負値行列因子分解で、業務処理単位でのリソースごとの成分データに対応する、所定の時間間隔ごとの周期的な変化傾向が類似するリソースごとの成分データを抽出可能にすることができる。
また、情報処理装置100は、異なる業務処理装置の異なるリソースに関する指標値を、行列のそれぞれの列として統合して処理可能にすることができる。このため、情報処理装置100は、非負値行列因子分解で、1以上のリソースのそれぞれに関する時系列データの中から、同じ業務処理に対応する成分データの組み合わせを特定して抽出することができる。また、情報処理装置100は、いずれかのリソースについて複数の業務処理による使用傾向が類似し、それぞれの業務処理に対応する成分データが類似する場合に、非負値行列因子分解で、それぞれの業務処理に対応する成分データを分離して抽出することができる。
ここでは、情報処理装置100が、所定の数分の重みベクトルのそれぞれに関する情報を出力しない場合について説明したが、これに限らない。例えば、情報処理装置100が、所定の数分の重みベクトルのそれぞれを出力する場合があってもよい。これによれば、情報処理装置100は、業務処理単位での業務量の長期的な変化傾向を解析するために有用である情報を、利用者に提供することができる。
また、例えば、情報処理装置100が、所定の数分の重みベクトルのそれぞれに基づいて、業務処理単位での業務量の長期的な変化傾向を解析した結果を出力する場合があってもよい。業務処理単位での業務量の長期的な変化傾向は、換言すれば、業務処理単位での1以上のリソースにかかる負荷の長期的な変化傾向である。長期的とは、所定の時間間隔より長い期間を意味する。業務処理単位での業務量の長期的な変化傾向を解析する具体例については、図12~図27を用いて後述する。
ここでは、情報処理装置100が、所定の時間間隔ごとのベクトルのそれぞれを列として含む行列Xを生成する場合について説明したが、これに限らない。例えば、情報処理装置100が、所定の時間間隔ごとのベクトルのそれぞれを行として含む行列X’を生成する場合があってもよい。この場合、行列X’は、所定の数分の重みベクトルのそれぞれを列として含む重み行列A’と、所定の数分の基底ベクトルのそれぞれを行として含む基底行列U’との積により規定可能である。
(業務処理システム200の一例)
次に、図2を用いて、図1に示した情報処理装置100を適用した、業務処理システム200の一例について説明する。
図2は、業務処理システム200の一例を示す説明図である。図2において、業務処理システム200は、情報処理装置100と、1以上の業務処理装置201とを含む。
業務処理システム200において、情報処理装置100と業務処理装置201とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、および、インターネットなどである。
情報処理装置100は、業務処理単位で1以上のリソースのそれぞれに関する情報を出力するコンピュータである。情報処理装置100は、例えば、業務処理装置201と通信し、全体の稼働データを取得する。情報処理装置100は、具体的には、所定のタイミングで、業務処理装置201が有するリソースの使用状況を表す指標値を収集し、収集した指標値を纏めた全体の稼働データを生成する。全体の稼働データは、例えば、図4に後述する稼働テーブル400を用いて記憶される。
情報処理装置100は、例えば、全体の稼働データを所定の時間間隔ごとに分割する。所定の時間間隔は、例えば、1日である。1日ごとに分割された日単位稼働データは、例えば、図5に後述する日単位テーブル500を用いて記憶される。情報処理装置100は、例えば、1日ごとに分割された日単位稼働データをベクトル化し、1日ごとのベクトルを生成する。各日のベクトルは、例えば、図6に後述するベクトルテーブル600を用いて記憶される。
情報処理装置100は、例えば、各日のベクトルを列として含む稼働データ行列を生成する。情報処理装置100は、例えば、基底数に基づいて、生成した稼働データ行列に対して非負値行列因子分解を実施し、基底行列および重み行列を生成する。基底行列は、例えば、図7に後述する成分テーブル700を用いて記憶される。重み行列は、例えば、図8に後述する重みテーブル800を用いて記憶される。
情報処理装置100は、例えば、基底行列に含まれる、業務処理単位に対応する基底ベクトルに含まれる業務処理単位での1以上の成分値を、リソースごとに分離する。分離した結果は、例えば、図9に後述する分離結果テーブル900を用いて記憶される。情報処理装置100は、重み行列に含まれる、業務処理単位に対応する重みベクトルに基づいて、業務処理単位でのリソースごとの使用状況の長期的な変化傾向を解析する。解析した結果は、例えば、図10に後述する長期傾向テーブル1000を用いて記憶される。
情報処理装置100は、業務処理単位で、リソースごとに1以上の成分値を分離した結果と、リソースごとの使用状況の長期的な変化傾向を解析した結果とを対応付けて出力する。情報処理装置100は、例えば、サーバやPC(Personal Computer)などである。
業務処理装置201は、業務処理を実現するためのコンピュータである。業務処理装置201は、例えば、業務処理を実現する1以上のプロセスのいずれかを実行する。また、業務処理装置201は、1以上のリソースを有し、それぞれのリソースの使用状況を表す指標値を定期的に計測して記憶する。業務処理装置201は、例えば、サーバやPCなどである。
ここでは、業務処理システム200が、情報処理装置100を1つ含む場合について説明したが、これに限らない。例えば、業務処理システム200が、情報処理装置100を複数含む場合があってもよい。そして、複数の情報処理装置100が協働して処理を実現する場合があってもよい。
また、ここでは、情報処理装置100が、業務処理装置201とは異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、いずれかの業務処理装置201と一体である場合があってもよい。
(情報処理装置100のハードウェア構成例)
次に、図3を用いて、情報処理装置100のハードウェア構成例について説明する。
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。図3において、情報処理装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、情報処理装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、情報処理装置100から着脱可能であってもよい。
情報処理装置100は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
(稼働テーブル400の構造)
次に、図4を用いて、稼働テーブル400の構造の一例について説明する。稼働テーブル400は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図4は、稼働テーブル400の構造の一例を示す説明図である。図4に示すように、稼働テーブル400は、サーバ名と、日付時刻と、1以上のリソースとのフィールドを有する。稼働テーブル400は、各フィールドに情報を設定することにより、レコードが記憶される。
サーバ名のフィールドには、業務処理装置201を識別するサーバ名が設定される。日付時刻のフィールドには、業務処理装置201でリソースの使用状況を表す指標値が計測された日付と時刻との組み合わせが設定される。リソースのフィールドには、リソースの使用状況を表す指標値が設定される。
リソースのフィールドは、例えば、CPU使用率[%]のフィールドと、ディスクIO(Input/Output)[IOPS(Input/Output Per Second)]のフィールドとなどである。CPU使用率[%]のフィールドには、業務処理装置201でのCPU301の使用状況を表す指標値であるCPU使用率[%]が設定される。ディスクIO[IOPS]のフィールドには、業務処理装置201での記録媒体305の使用状況を表す指標値であるディスクIO[IOPS]が設定される。
(日単位テーブル500の構造)
次に、図5を用いて、日単位テーブル500の構造の一例について説明する。日単位テーブル500は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図5は、日単位テーブル500の構造の一例を示す説明図である。図5に示すように、日単位テーブル500は、サーバ名と、日付時刻と、1以上のリソースとのフィールドを有する。日単位テーブル500は、各フィールドに情報を設定することにより、レコードが記憶される。
日単位テーブル500のレコードは、図4に示した稼働テーブル400のレコードから抽出された、1日分のレコードである。このため、日単位テーブル500のそれぞれのフィールドには、図4に示した稼働テーブル400のそれぞれのフィールドと同様の情報が設定される。また、日単位テーブル500の日付時刻のフィールドには、同日の日付と時刻との組み合わせが設定される。
(ベクトルテーブル600のデータ構造)
次に、図6を用いて、ベクトルテーブル600のデータ構造の一例について説明する。ベクトルテーブル600は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図6は、ベクトルテーブル600のデータ構造の一例を示す説明図である。図6に示すように、ベクトルテーブル600は、日ごとの稼働データのフィールドを有する。ベクトルテーブル600は、各フィールドに情報を設定することにより、レコードが記憶される。
日ごとの稼働データのフィールドには、全体の稼働データから日ごとに分割された日単位稼働データをベクトル化して得られたベクトルの要素が設定される。日単位稼働データをベクトル化して得られたベクトルの要素は、日単位稼働データが示す1以上のリソースのそれぞれの使用状況を表す1以上の指標値のそれぞれである。
(成分テーブル700のデータ構造)
次に、図7を用いて、成分テーブル700のデータ構造の一例について説明する。成分テーブル700は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図7は、成分テーブル700のデータ構造の一例を示す説明図である。図7に示すように、成分テーブル700は、1以上の成分のフィールドを有する。成分テーブル700は、各フィールドに情報を設定することにより、レコードが記憶される。
成分のフィールドには、稼働データ行列に対して非負値行列因子分解を実施して得られた基底行列に含まれる基底ベクトルが示すリソースごとの成分データが設定される。成分データは、リソースに関する成分値の集合である。成分のフィールドには、例えば、稼働データ行列に対して非負値行列因子分解を実施して得られた基底行列に含まれる基底ベクトルが示す1以上の成分値のそれぞれが設定される。
(重みテーブル800のデータ構造)
次に、図8を用いて、重みテーブル800のデータ構造の一例について説明する。重みテーブル800は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図8は、重みテーブル800のデータ構造の一例を示す説明図である。図8に示すように、重みテーブル800は、成分IDと、日付と、重み係数とのフィールドを有する。重みテーブル800は、各フィールドに情報を設定することにより、レコードが記憶される。
成分IDのフィールドには、稼働データ行列に対して非負値行列因子分解を実施して得られた重み行列に含まれる重みベクトルの要素である重み係数の係り先である、リソースごとの成分データを示す基底ベクトルを識別するための成分IDが設定される。成分データは、リソースに関する成分値の集合である。成分IDは、基底ベクトルが示すリソースごとの成分データが設定された成分テーブル700の成分フィールドの列番号である。日付のフィールドには、重みベクトルの要素である重み係数が示す重みが、いつの業務処理に対応する業務量に対応するかを識別するための日付が設定される。重み係数のフィールドには、重みベクトルの要素である重み係数が設定される。重み係数は、業務処理の重みとして、業務処理の業務量を示す。
(分離結果テーブル900のデータ構造)
次に、図9を用いて、分離結果テーブル900のデータ構造の一例について説明する。分離結果テーブル900は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図9は、分離結果テーブル900のデータ構造の一例を示す説明図である。図9に示すように、分離結果テーブル900は、成分IDと、サーバ名と、時刻と、1以上のリソースとのフィールドを有する。分離結果テーブル900は、各フィールドに情報を設定することにより、レコードが記憶される。
成分IDのフィールドには、リソースごとの成分データを含み、リソースごとの成分データの分離元になる基底ベクトルを識別する成分IDが設定される。成分データは、リソースに関する成分値の集合である。サーバ名のフィールドには、基底ベクトルが示す成分値の集合から分離される成分値が、いずれの業務処理装置201に関するかを示すサーバ名が設定される。時刻のフィールドには、基底ベクトルが示す成分値の集合から分離される成分値が、業務処理装置201でいつ計測された成分値であるかを示す時刻が設定される。リソースのフィールドには、基底ベクトルが示す成分値の集合から分離された、いずれかのリソースの使用状況を表す成分値が設定される。
リソースのフィールドは、例えば、CPU使用率[%]のフィールドと、ディスクIO[IOPS]のフィールドとなどである。CPU使用率[%]のフィールドには、業務処理装置201でのCPU301の使用状況を表す成分値であるCPU使用率[%]が設定される。ディスクIO[IOPS]のフィールドには、業務処理装置201での記録媒体305の使用状況を表す成分値であるディスクIO[IOPS]が設定される。
(長期傾向テーブル1000のデータ構造)
次に、図10を用いて、長期傾向テーブル1000のデータ構造の一例について説明する。長期傾向テーブル1000は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図10は、長期傾向テーブル1000のデータ構造の一例を示す説明図である。図10に示すように、長期傾向テーブル1000は、成分IDと、増加減少傾向と、回帰式とのフィールドを有する。長期傾向テーブル1000は、各フィールドに情報を設定することにより、レコードが記憶される。
成分IDのフィールドには、稼働データ行列に対して非負値行列因子分解を実施して得られた重み行列に含まれる重みベクトルの要素である重み係数の係り先である、リソースごとの成分データを示す基底ベクトルを特定するための成分IDが設定される。成分IDは、基底ベクトルが示すリソースごとの成分データが設定された成分テーブル700の成分フィールドの列番号である。増加減少傾向のフィールドには、重みベクトルに基づいて解析された、重みベクトルに含まれる重み係数の時間経過に伴う増加減少傾向が設定される。回帰式のフィールドには、重みベクトルに含まれる重み係数の時間経過に伴う変化傾向を数式化して得られた回帰式が設定される。
(業務処理装置201のハードウェア構成例)
業務処理装置201のハードウェア構成例は、図3に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。業務処理装置201は、図4に示した稼働テーブル400と同様のデータ構造で、自装置分の稼働データを記憶する。業務処理装置201は、図4~図10に示した各種テーブルを記憶しなくてもよい。
(情報処理装置100の機能的構成例)
次に、図11を用いて、情報処理装置100の機能的構成例について説明する。
図11は、情報処理装置100の機能的構成例を示すブロック図である。情報処理装置100は、記憶部1100と、取得部1101と、分解部1102と、統合部1103と、抽出部1104と、分離部1105と、分析部1106と、出力部1107とを含む。
記憶部1100は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、記憶部1100が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部1100が、情報処理装置100とは異なる装置に含まれ、記憶部1100の記憶内容が情報処理装置100から参照可能である場合があってもよい。
取得部1101~出力部1107は、制御部の一例として機能する。取得部1101~出力部1107は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
記憶部1100は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部1100は、例えば、1以上のリソースのそれぞれの使用状況を表す指標値の時間変化を示す時系列データを記憶する。リソースは、例えば、CPUやメモリなどである。1以上のリソースは、例えば、同一の機器における異なる種類のリソースを含む。1以上のリソースは、例えば、異なる機器におけるリソースを含む。時系列データは、例えば、稼働データに含まれる。記憶部1100は、例えば、非負値行列因子分解の対象となる行列を記憶する。行列は、例えば、時系列データに基づいて生成される。
記憶部1100は、例えば、非負値行列因子分解の結果得られる、基底行列および重み行列を記憶する。基底行列は、所定の数の基底ベクトルのそれぞれを列または行として含む行列である。基底ベクトルは、所定の時間間隔での周期的な変化傾向が互いに類似するような、1以上のリソースのそれぞれについての成分データを表すベクトルである。成分データは、例えば、所定の時間間隔単位での成分値の時間変化を示す時系列データである。重み行列は、所定の数の重みベクトルのそれぞれを行または列として含む行列である。重みベクトルは、所定の時間間隔ごとの業務処理の重みを表すベクトルである。業務処理の重みは、例えば、業務処理の業務量に対応する。記憶部1100は、具体的には、図4~図10に示した各種テーブルを記憶する。
記憶部1100は、例えば、所定の数を記憶する。所定の数は、基底数である。基底数は、基底行列に含まれる基底ベクトルの数を決定する。所定の数は、1以上のリソースの少なくともいずれかを用いて実行される業務処理の数に基づいて設定される。所定の数は、例えば、予め利用者によって業務処理の数と同じ数に設定される。また、所定の数は、ベクトルの次元の数に基づいて設定されてもよい。所定の数は、例えば、自動でベクトルの次元の数と同じ数が設定される。
記憶部1100は、例えば、所定の時間間隔ごとの1以上のリソースのそれぞれの使用状況を表す指標値の時間変化を示す時系列データをベクトル化するための所定の規則を記憶する。所定の時間間隔は、例えば、日、週、月などである。所定の規則は、いずれの種類のリソースのいずれの時点の使用状況を表す指標値が、ベクトル内のいずれの位置の要素になるかを規定する規則である。
取得部1101は、各機能部の処理に用いられる各種情報を取得する。取得部1101は、取得した各種情報を、記憶部1100に記憶し、または、各機能部に出力する。また、取得部1101は、記憶部1100に記憶しておいた各種情報を、各機能部に出力してもよい。取得部1101は、例えば、利用者の操作入力に基づき、各種情報を取得する。取得部1101は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
取得部1101は、例えば、1以上のリソースのそれぞれの使用状況を表す指標値の時間変化を示す時系列データを取得する。取得部1101は、具体的には、1以上の業務処理装置201から、所定の期間分の、業務処理装置201ごとの1以上のリソースのそれぞれの使用状況を表す指標値の時間変化を示す稼働データを収集して纏めることにより、全体の稼働データを取得する。
また、取得部1101が、例えば、所定の時間間隔ごとの1以上のリソースのそれぞれの使用状況を表す指標値の時間変化を示す時系列データを取得する場合があってもよい。この場合、取得部1101は、具体的には、1日ごとに、1以上の業務処理装置201から、1日分の業務処理装置201ごとの1以上のリソースのそれぞれの使用状況を表す指標値の時間変化を示す稼働データを収集して纏め、日単位稼働データを取得する。この場合、情報処理装置100は、分解部1102を有さなくてもよい。また、取得部1101は、例えば、利用者の操作入力により、所定の数を受け付けてもよい。
分解部1102は、取得した時系列データを、所定の時間間隔ごとの時系列データに分割する。分解部1102は、例えば、取得した稼働データを1日ごとに分割し、日単位稼働データを取得する。これにより、分解部1102は、業務処理の業務量の周期的な変化傾向を活用した非負値行列因子分解を実施可能にするために、取得した時系列データを加工することができる。
統合部1103は、取得した時系列データに基づいて、所定の時間間隔ごとの1以上のリソースのそれぞれの使用状況を表す指標値を要素とする所定の時間間隔ごとのベクトルを生成する。統合部1103は、例えば、分割した所定の時間間隔ごとの時系列データが示す1以上の指標値を要素とする所定の時間間隔ごとのベクトルを生成する。結合部は、具体的には、所定の規則に従って、日単位稼働データが示す1以上の指標値のそれぞれを、決められた位置の要素として配置することにより、日単位稼働データをベクトル化し、1日ごとのベクトルを生成する。これにより、結合部は、行列の列または行となるベクトルを生成することができる。
抽出部1104は、所定の時間間隔ごとのベクトルのそれぞれを列または行として含む行列を生成する。抽出部1104は、例えば、各日のベクトルを列として含む稼働データ行列を生成する。これにより、抽出部1104は、所定の時間間隔ごとにリソースに関する指標値を纏めて、行列のそれぞれの列または行として処理可能にすることができ、非負値行列因子分解の結果に、業務処理の性質を反映させることができる。このため、抽出部1104は、非負値行列因子分解で、業務処理単位のリソースごとの成分データに対応する、所定の時間間隔ごとの周期的な変化傾向が類似するリソースごとの成分データを抽出可能にすることができる。
また、抽出部1104は、異なる業務処理装置201の異なるリソースに関する指標値を、行列のそれぞれの列または行として統合して処理可能にすることができる。このため、抽出部1104は、非負値行列因子分解で、複数のリソースのそれぞれに関する時系列データの中から、同じ業務処理に対応する成分データの組み合わせが特定可能な形式で抽出可能にすることができる。また、抽出部1104は、いずれかのリソースについて複数の業務処理による使用傾向が類似する場合に、非負値行列因子分解で、それぞれの業務処理に対応する成分データを分離可能な形式で抽出可能にすることができる。
次に、抽出部1104は、生成した行列に対して非負値行列因子分解を実施する。抽出部1104は、例えば、稼働データ行列を基底行列と重み行列との積で規定し、非負値行列因子分解を実施する。抽出部1104は、非負値行列因子分解の結果、基底行列を生成する。これにより、抽出部1104は、業務処理単位のリソースごとの成分データに対応する、周期的な変化傾向が類似するリソースごとの成分データを、基底ベクトルとして抽出することができる。また、抽出部1104は、非負値行列因子分解の結果、生成した行列を基底行列との積によって表す重み行列を生成する。これにより、抽出部1104は、業務処理単位での業務量の長期的な変化傾向を解析するために有用である情報を生成することができる。
分離部1105は、生成した基底行列に含まれる所定の数分の基底ベクトルのそれぞれが表す1以上の成分値を1以上のリソースのそれぞれについて分離する。ここで、例えば、基底行列に含まれる基底ベクトルと、稼働データ行列に含まれるベクトルとの間では、要素の位置に対応関係が存在する。このため、分離部1105は、例えば、所定の規則を参照し、基底ベクトルが示す1以上の成分値を、1以上のリソースのそれぞれについて分離する。これにより、分離部1105は、業務処理単位のリソースごとの成分データを取得することができる。
分析部1106は、生成した重み行列に含まれる所定の数分の重みベクトルのそれぞれに関する情報を生成する。分析部1106は、例えば、重みベクトルに基づいて、重みベクトルに含まれる重み係数の時間経過に伴う増加減少傾向を示す情報を生成する。これにより、分析部1106は、業務処理単位での業務量の長期的な変化傾向を解析することができる。また、情報処理装置100が、業務処理単位での業務量の長期的な変化傾向を解析せずに、重みベクトルをそのまま利用者に参照可能にする場合があってもよい。この場合、情報処理装置100は、分析部1106を有さなくてもよい。
出力部1107は、いずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、出力部1107は、各機能部の処理結果を利用者に通知可能にし、情報処理装置100の利便性の向上を図ることができる。
出力部1107は、例えば、所定の数分の基底ベクトルのそれぞれが表す1以上の成分値を1以上のリソースのそれぞれについて分離した結果を出力する。これにより、出力部1107は、利用者が、業務処理単位のリソースごとの成分データを参照可能にすることができる。そして、出力部1107は、利用者が、業務処理ごとに時系列データを解析しやすくすることができ、業務処理ごとに所定の時間間隔での1以上のリソースそれぞれの使用傾向を解析しやすくすることができる。
出力部1107は、例えば、所定の数分の重みベクトルのそれぞれに関する情報を出力する。出力部1107は、具体的には、重みベクトルごとに、重みベクトルに対応する基底ベクトルが示す成分データと対応付けて、重みベクトルに含まれる重み係数の時間経過に伴う増加減少傾向を示す情報を出力する。これにより、分析部1106は、利用者が、業務処理単位での業務量の長期的な変化傾向を参照可能にすることができる。
出力部1107は、例えば、所定の数分の重みベクトルのそれぞれを出力してもよい。これにより、出力部1107は、業務処理単位での業務量の長期的な変化傾向を解析するために有用である情報を、利用者に提供することができる。
(情報処理装置100の実施例)
次に、図12~図20を用いて、情報処理装置100の実施例について説明する。まず、図12を用いて、実施例における情報処理装置100の動作の流れについて説明する。
図12は、情報処理装置100の動作の流れを示す説明図である。図12において、情報処理装置100は、業務処理装置201から、CPU使用率やディスクIOの時間変化を示す稼働データを取得する。情報処理装置100は、稼働データから稼働データ行列を生成し、非負値行列因子分解を実施する。情報処理装置100は、非負値行列因子分解を実施した結果、基底行列および重み行列を生成する。情報処理装置100は、基底行列から、業務処理単位でのリソースごとの成分データを分離する。また、情報処理装置100は、重み行列に基づいて、業務処理単位での、業務量の長期的な変化傾向を解析する。そして、情報処理装置100は、分離結果および解析結果を出力する。
これにより、情報処理装置100は、利用者が、業務処理単位でのリソースごとの情報を参照可能にすることができ、業務処理単位での業務量の長期的な変化傾向を参照可能にすることができる。結果として、利用者は、業務処理装置201のリソースにかかる負荷を考慮して、業務処理装置201のリソースの増設、および、業務処理システム200に含まれる業務処理装置201の増設などを検討することができる。
図12の例では、利用者は、例えば、業務処理単位でのリソースごとの成分データから、日中帯CPU利用型業務処理、11時ピークCPU利用型業務処理、および、夜間ディスク書込型業務処理が存在することを把握しやすくなる。また、利用者は、日中帯CPU利用型業務処理、および、夜間ディスク書込型業務処理の業務量が増加傾向であることを把握することができ、業務処理システム200に含まれる業務処理装置201の増設を検討しやすくなる。
次に、非負値行列因子分解により、業務処理単位に対応する基底ベクトルを列として含む基底行列、および、業務処理単位に対応する重みベクトルを行として含む重み行列が生成される仕組みについて説明する。ここで、業務処理システム200における業務処理の性質としては、例えば、1以上の業務処理のそれぞれの業務量に基づき、1以上のリソースのそれぞれの使用状況が決定するという性質がある。また、業務処理システム200における業務処理の性質としては、例えば、業務処理の業務量が、日や週や月などの所定の時間間隔で周期的な変化傾向を示すという性質がある。
かかる性質によれば、1以上のリソースのそれぞれの使用状況を表す指標値が、1以上の業務処理のそれぞれの業務量に比例するという関係性を利用した負荷モデルを形成可能である。例えば、リソースの使用状況を表す指標値が、1以上の業務処理のそれぞれの業務量に対応するリソースの使用状況を表す指標値を合算した結果に対応するとする負荷モデルを形成可能である。
また、かかる性質によれば、異なるリソースのそれぞれの使用状況を表す指標値の時間変化を示す時系列データの中で、同じ業務処理に対応する成分データは、所定の時間間隔での周期的な変化傾向が互いに類似するような成分データになる。したがって、負荷モデルに基づき、異なる業務処理装置201の異なるリソースに関する指標値を統合して処理可能にし、所定の時間間隔での周期的な変化傾向が互いに類似するようなリソースごとの成分データを纏めて分離可能にすることが望まれる。ここで、図13および図14を用いて、負荷モデルの具体的な内容について説明する。
図13および図14は、負荷モデルの具体的な内容を示す説明図である。図13の例では、業務処理1と業務処理2とが存在し、業務処理装置201となるサーバAのCPU使用率とディスクIOおよび業務処理装置201となるサーバBのCPU使用率とディスクIOを指標値とする場合について説明する。この場合、負荷モデルは、それぞれの指標値が、業務処理1の業務量a1および業務処理2の業務量a2に比例して決定されると規定するモデルになる。これによれば、負荷モデルは、業務処理1の業務量a1および業務処理2の業務量a2を基準として、異なるリソースの指標値を統合して処理可能にすることができる。次に、図14の説明に移行し、負荷モデルを稼働データに適用する場合について説明する。
図14に示すように、負荷モデルによれば、1日分の日単位稼働データに対応するベクトルxjは、それぞれの業務処理についてのリソースごとの基底ベクトルuiと重み係数aijとの線形結合により形成される。jは、何日目の日単位稼働データであるかを示す値である。このため、1日分の日単位稼働データに対応するベクトルxjを、基底ベクトルuiと重みベクトルai(重み係数aij)とに分割すれば、それぞれの業務処理についてのリソースごとの情報が得られると考えられる。ベクトルxjは、数式を用いれば下記式(1)のように表現される。Nは、基底数である。
xj=Σi=1
N(aij×ui) ・・・(1)
上記式(1)を行列形式で表現すると下記式(2)のように表現される。Xは、稼働データ行列である。X=(x1,x2,・・・)である。Uは、基底行列である。U=(u1,u2,・・・)である。Aは、重み行列である。A=(a1,a2,・・・)=(aij)である。
X=UA ・・・(2)
ここで、下記参考文献2によれば、非負値行列因子分解は、対象とする行列の各ベクトルの頻出成分を抽出する特性を有する。頻出成分は、周期的な変化傾向を示す成分である。このため、稼働データ行列に対して非負値行列因子分解を実施すれば、頻出成分として、周期的な変化傾向を示す成分データを抽出可能になると考えられる。具体的には、頻出成分に対応する、業務処理単位でのリソースごとの成分データが、基底行列の各基底ベクトルとして抽出可能であると考えられる。
参考文献2 : 澤田宏. “非負値行列因子分解 NMF の基礎とデータ/信号解析への応用.” 信学誌 95.9 (2012): 829-833.
そこで、情報処理装置100は、行列形式で表現した上記式(2)に対して非負値行列因子分解を適用し、業務処理単位でのリソースごとの成分データに対応する基底ベクトルを含む基底行列を生成する。非負値行列因子分解については、例えば、上述した参考文献1を参照することができる。参考文献1におけるSparseness Constraintsとしては、例えば、L1ノルムが用いられる。非負値行列因子分解では、具体的には、下記式(3)を最小化する重みAと基底Uを推定することになる。||z||FROは、フロベニウスノルムである。α||A||1およびβ||U||1の項が、Sparseness Constraintsである。
(A*,U*)=argminA,U(1/2||X-UA||FRO
2)+α||A||1+β||U||1 ・・・(3)
このように、α||A||1およびβ||U||1の項を用いることにより、重みと基底とが可能な限り0になるよう誘導される。このため、上記式(3)を用いた非負値行列因子分解によれば、業務処理単位でのリソースごとの成分データを、利用者が理解しやすい形式で生成しやすくすることができる。
そして、情報処理装置100は、生成した基底行列Uの各基底ベクトルuiを、それぞれの業務処理装置201のリソースごとに分離すれば、業務処理単位でのリソースごとの成分データを得ることができる。情報処理装置100は、例えば、ui
T=(uACi
T,uBDi
T,・・・,uBCi
T,uBDi
T,・・・)から、uACi
T,uBDi
T,uBCi
T,uBDi
Tなどを分離する。ここで、uACi
Tは、サーバAのCPU使用率の成分データである。uBDi
Tは、サーバAのディスクIOの成分データである。uBCi
Tは、サーバBのCPU使用率の成分データである。uBDi
Tは、サーバBのディスクIOの成分データである。
このように、情報処理装置100は、1日ごとにリソースに関する指標値を纏めて、行列のそれぞれの列として処理可能にすることができ、非負値行列因子分解の際に、1日ごとの周期的な変化傾向が類似する頻出成分を抽出させることができる。このため、情報処理装置100は、非負値行列因子分解で、業務処理単位でのリソースごとの成分データに対応する、1日ごとの周期的な変化傾向が類似するリソースごとの成分データを抽出可能にすることができる。
また、情報処理装置100は、異なる業務処理装置201の異なるリソースに関する指標値を、行列のそれぞれの列として統合して処理可能にすることができる。このため、情報処理装置100は、非負値行列因子分解で、1以上のリソースのそれぞれに関する時系列データの中から、同じ業務処理に対応する成分データの組み合わせを特定して抽出することができる。また、情報処理装置100は、いずれかのリソースについて複数の業務処理による使用傾向が類似し、それぞれの業務処理に対応する成分データが類似する場合に、非負値行列因子分解で、それぞれの業務処理に対応する成分データを分離して抽出することができる。次に、図15~図27の説明に移行し、情報処理装置100の動作の一例について説明する。
図15~図27は、情報処理装置100の動作の一例を示す説明図である。図15~図27の例では、業務処理システム200に、業務処理装置201として、サーバAP01およびサーバDB01が含まれる場合について説明する。リソースの指標値は、CPU使用率やディスクIOである。指標値は、0~1の間で正規化される。指標値のサンプリング間隔は、例えば、1時間である。1日のサンプリング数は、24になる。情報処理装置100は、2018/1/1~2018/3/31までの90日分に対応する稼働データを取得し、稼働テーブル400に記憶する。ここで、図15の説明に移行し、稼働データにおけるリソースごとの指標値の変化傾向について説明する。
図15に示すように、稼働データは、曜日ごとに周期性を有する。また、稼働データは、指標値の増加傾向がある。例えば、グラフ群1501に示すように、水・金曜以外では、サーバAP01のCPU使用率とディスクIOとに増加傾向がある。例えば、グラフ群1502に示すように、水曜では、サーバAP01のCPU使用率とディスクIOとに増加傾向がある他、同時刻にサーバAP01のCPU使用率とサーバDB01のディスクIOとで共通して負荷が発生する傾向がある。例えば、グラフ群1503に示すように、金曜では、サーバAP01のCPU使用率とディスクIOとに増加傾向がある他、サーバDB01のディスクIOに水曜日と同様の負荷が発生する傾向がある。
ここで、水曜同時刻に発生したサーバAP01のCPU使用率とサーバDB01のディスクIOとの負荷が同じ業務処理に起因するならば、同じ業務処理の成分データとして、それぞれの負荷を包含する成分データを抽出することが好ましい。また、水曜と金曜のサーバDB01のディスクIOの負荷が異なる業務処理に起因するならば、異なる業務処理のディスクIOの成分データに、水曜と金曜の負荷を分離して包含するようにすることが好ましい。次に、図16の説明に移行し、情報処理装置100の、図15に示した変化傾向を有する稼働データを用いた動作について説明する。
図16において、情報処理装置100は、稼働テーブル400に記憶された稼働データを、1日単位に分解し、日単位稼働データを生成する。情報処理装置100は、例えば、日付「20180101」の日単位稼働データ、および、日付「20180102」の日単位稼働データなどを生成し、日単位テーブル500を用いて記憶する。次に、図17の説明に移行する。
図17において、情報処理装置100は、日単位稼働データをベクトル化する。情報処理装置100は、例えば、日単位テーブル500に記憶された日単位稼働データが示す1以上の指標値を、所定の規則に従って、要素として並べてベクトル化し、ベクトルテーブル600を用いて記憶する。日付「20180101」の日単位稼働データは、例えば、ベクトルx1としてベクトルテーブル600に記憶される。日付「20180102」の日単位稼働データは、例えば、ベクトルx2としてベクトルテーブル600に記憶される。ベクトルの次元は、96次元になる。次に、図18の説明に移行する。
図18において、情報処理装置100は、ベクトルテーブル600を参照し、90日の各日に対応するベクトルx1,x2,・・・,x90を列とした稼働データ行列X=(x1,x2,・・・,x90)を生成する。稼働データ行列Xは、96×90の行列である。情報処理装置100は、上記式(3)を利用し、稼働データ行列Xに対して非負値行列因子分解を実施し、基底行列Uと重み行列Aとを生成する。上記式(3)のα=β=0.01とする。
この際、情報処理装置100は、基底数=3を予め設定済みであり、基底行列U=(u1,u2,u3)と規定する。基底行列Uは、96×3の行列である。また、情報処理装置100は、重み行列A=(a1,a2,a3)=(aij)と規定する。重み行列Aは、3×90の行列である。
結果として、情報処理装置100は、グラフ1801~1803に示すような基底ベクトルu1,u2,u3を含む基底行列Uを生成する。また、情報処理装置100は、グラフ1811~1813に示すような重みベクトルa1,a2,a3を含む重み行列Aを生成する。重みベクトルa1=(a1,1,・・・,a1,90)である。重みベクトルa2=(a2,1,・・・,a2,90)である。重みベクトルa3=(a3,1,・・・,a3,90)である。
ここでは、基底数が予め設定済みである場合について説明したが、これに限らない。例えば、基底数として、稼働データ行列を形成するベクトルの次元数を用いる場合があってもよい。この場合、上記式(3)のα||A||1およびβ||U||1の項により、業務処理単位の成分データとして好ましくない基底ベクトルにかかる重み係数が0になる傾向がある。このため、情報処理装置100は、重み係数の和が0になる重みベクトルaiに対応する基底ベクトルuiを除外することにより、精度よく基底行列Uを生成可能である。次に、図19の説明に移行する。
図19において、情報処理装置100は、生成した基底行列の基底ベクトルを、成分テーブル700を用いて記憶する。基底ベクトルの次元は、稼働データ行列を形成するベクトルと同様に、96次元になる。次に、図20の説明に移行する。
図20において、情報処理装置100は、生成した重み行列の重みベクトルを、重みテーブル800を用いて記憶する。重みベクトルの次元は、日数に対応し、90次元になる。次に、図21の説明に移行する。
図21において、情報処理装置100は、グラフ1801~1803に示した基底ベクトルu1,u2,u3の成分値を、リソースごとに分離し、リソースごとの成分データを取得する。情報処理装置100は、基底ベクトルu1,u2,u3の成分値を、1日のサンプリング数である24点の成分値2111~2114,2121~2124,2131~2134ごとに分離し、リソースごとの成分データとして取得する。次に、図22の説明に移行する。
図22において、情報処理装置100は、分離した結果として、1つの業務処理に対応する、サーバAP01およびサーバDB01のそれぞれのCPU使用率とディスクIOとについての成分データ2211~2214を取得する。また、情報処理装置100は、分離した結果として、1つの業務処理に対応する、サーバAP01およびサーバDB01のそれぞれのCPU使用率とディスクIOとについての成分データ2221~2224を取得する。
また、情報処理装置100は、分離した結果として、1つの業務処理に対応する、サーバAP01およびサーバDB01のそれぞれのCPU使用率とディスクIOとについての成分データ2231~2234を取得する。次に、図23の説明に移行し、情報処理装置100が、成分テーブル700から、どのように成分値をリソースごとに分離するかについて説明する。
図23において、情報処理装置100は、所定の規則に従って、成分テーブル700から成分値をリソースごとに分離する。例えば、図17の例で、所定の規則に従って、日単位稼働データが示す1以上の指標値を要素として並べてベクトル化する際、サーバAP01のCPU使用率は、ベクトルの1番目~24番目までの要素として並べられた。このため、成分テーブル700から成分値をリソースごとに分離する際、基底ベクトルの1番目~24番目までの成分値を、サーバAP01のCPU使用率に関する成分値として分離することになる。
具体的には、成分テーブル700の成分値群2301は、サーバAP01のCPU使用率に関する成分値として分離結果テーブル900に記憶される。また、成分テーブル700の成分値群2302は、サーバAP01のディスクIOに関する成分値として分離結果テーブル900に記憶される。また、成分テーブル700の成分値群2303は、サーバDB01のCPU使用率に関する成分値として分離結果テーブル900に記憶される。また、成分テーブル700の成分値群2304は、サーバDB01のディスクIOに関する成分値として分離結果テーブル900に記憶される。この際、稼働データとは異なり、分離結果テーブル900において日付の情報は存在しなくなる。次に、図24の説明に移行する。
図24において、図16~図23の情報処理装置100の動作により、好ましい形式で、業務処理単位でリソースごとの成分データが取得されていることについて説明する。
図15を用いて上述したように、同時刻に発生したサーバAP01のCPU使用率とサーバDB01のディスクIOとのそれぞれの負荷を包含する成分データを、同じ業務処理の成分データとして抽出することが好ましい。これに対し、図24に示すように、情報処理装置100は、符号2401に示すように、同時刻に発生したサーバAP01のCPU使用率とサーバDB01のディスクIOとのそれぞれの負荷を包含する、1つの業務処理に対応する成分データを抽出することができる。
また、図15を用いて上述したように、サーバDB01のディスクIOの負荷を、異なる業務処理のディスクIOの成分データに分離して包含することが好ましい。これに対し、図24に示すように、情報処理装置100は、符号2402に示すように、サーバDB01のディスクIOの負荷を、異なる業務処理のディスクIOの成分データに分離して包含されるように、成分データを抽出することができる。
このように、情報処理装置100は、非負値行列因子分解で、1以上のリソースのそれぞれに関する時系列データの中から、同じ業務処理に対応する成分データの組み合わせを特定して抽出することができる。また、情報処理装置100は、いずれかのリソースについて複数の業務処理による使用傾向が類似し、それぞれの業務処理に対応する成分データが類似する場合に、非負値行列因子分解で、それぞれの業務処理に対応する成分データを分離して抽出することができる。次に、図25の説明に移行する。
図25において、情報処理装置100は、グラフ1811~1813に示すような重みベクトルa1,a2,a3に基づいて、業務処理単位での業務量の長期的な変化傾向を解析する。情報処理装置100は、例えば、重みベクトルa1,a2,a3のそれぞれの重み係数から、閾値以下の重み係数を削除する。情報処理装置100は、具体的には、重みベクトルa1,a2,a3のそれぞれから閾値以下の重み係数を削除した結果、グラフ2501~2503に示すような重み係数が残ることになる。次に、図26の説明に移行する。
図26において、情報処理装置100は、削除後の重み係数に対して線形回帰を実施し、回帰直線を生成し、長期傾向テーブル1000に記憶する。また、情報処理装置100は、回帰直線の傾きに基づいて、増加傾向、平坦、減少傾向のいずれかの増加減少傾向を特定し、長期傾向テーブル1000に記憶する。情報処理装置100は、例えば、傾き>閾値であれば、増加傾向を特定する。情報処理装置100は、例えば、-閾値<傾き≦閾値であれば、平坦を特定する。情報処理装置100は、例えば、傾き<-閾値であれば、減少傾向を特定する。閾値は、例えば、0.001である。次に、図27の説明に移行する。
図27において、情報処理装置100は、分離した結果である成分データ2211~2214,2221~2224,2231~2234を、利用者が参照可能なように表示する。また、情報処理装置100は、成分データ2211~2214,2221~2224,2231~2234のそれぞれに、グラフ2501~2503に示した重み係数と、解析結果である増加減少傾向とを対応付けて、利用者が参照可能なように表示する。これにより、利用者は、業務処理装置201のリソースにかかる負荷を考慮して、業務処理装置201のリソースの増設、および、業務処理システム200に含まれる業務処理装置201の増設などを検討することができる。
(全体処理手順)
次に、図28を用いて、情報処理装置100が実行する、全体処理手順の一例について説明する。全体処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
図28は、全体処理手順の一例を示すフローチャートである。図28において、情報処理装置100は、開始トリガーを受け付ける(ステップS2801)。開始トリガーは、例えば、定期的なタイミングで自動的に発生するトリガー、または、利用者の操作入力により発生するトリガーなどである。
次に、情報処理装置100は、1以上の業務処理装置201のそれぞれの業務処理装置201から稼働データを収集する(ステップS2802)。そして、情報処理装置100は、収集した複数の稼働データのそれぞれの稼働データを1日単位に分割する(ステップS2803)。
次に、情報処理装置100は、分割した稼働データを1日単位で纏めてベクトル化し、各日のベクトルを、列として並べた稼働データ行列を生成する(ステップS2804)。そして、情報処理装置100は、基底数に基づいて、生成した稼働データ行列に対して非負値行列因子分解を実施し、基底行列および重み行列を生成する(ステップS2805)。
次に、情報処理装置100は、基底行列に含まれる、業務処理単位に対応する基底ベクトルに含まれる業務処理単位での1以上の成分値を、リソースごとに分離する(ステップS2806)。そして、情報処理装置100は、重み行列に含まれる、業務処理単位に対応する重みベクトルに基づいて、業務処理単位での業務量の長期的な変化傾向を解析する(ステップS2807)。
次に、情報処理装置100は、業務処理単位で、リソースごとに1以上の成分値を分離した結果と、業務量の長期的な変化傾向を解析した結果とを対応付けて出力する(ステップS2808)。そして、情報処理装置100は、全体処理を終了する。これにより、情報処理装置100は、利用者が、業務処理単位で時系列データを解析しやすくし、業務処理単位で業務量の変化傾向を解析しやすくすることができる。
ここで、情報処理装置100は、図28の一部ステップの処理の順序を入れ替えて実行してもよい。例えば、ステップS2806,S2807の処理の順序が入れ替えられる場合があってもよい。また、情報処理装置100は、図28の一部ステップの処理を省略してもよい。例えば、ステップS2807の処理が省略され、ステップS2808の処理で解析した結果を出力しない場合があってもよい。
以上説明したように、情報処理装置によれば、1以上のリソースのそれぞれの使用状況を表す指標値の時間変化を示す時系列データを取得することができる。情報処理装置によれば、取得した時系列データに基づいて、所定の時間間隔ごとの1以上のリソースのそれぞれの使用状況を表す指標値を要素とする所定の時間間隔ごとのベクトルのそれぞれを列または行として含む行列を生成することができる。情報処理装置によれば、生成した行列に対して非負値行列因子分解を実施し、所定の数分の基底ベクトルのそれぞれを列または行として含む基底行列を生成することができる。情報処理装置によれば、生成した基底行列に含まれる所定の数分の基底ベクトルのそれぞれが表す1以上の成分値を1以上のリソースのそれぞれについて分離した結果を出力することができる。これにより、情報処理装置は、業務処理単位での1以上のリソースのそれぞれの情報を出力することができる。結果として、情報処理装置は、利用者が、業務処理ごとに時系列データを解析しやすくすることができ、業務処理ごとに所定の時間間隔での1以上のリソースそれぞれの使用傾向を解析しやすくすることができる。
情報処理装置によれば、生成した行列に対して非負値行列因子分解を実施し、所定の数分の重みベクトルのそれぞれを行または列として含み、生成した行列を基底行列との積によって表す重み行列を生成することができる。情報処理装置によれば、生成した重み行列に含まれる所定の数分の重みベクトルのそれぞれに関する情報を出力することができる。これにより、情報処理装置は、利用者が、業務処理ごとの業務量の長期的な変化傾向を把握しやすくすることができる。
情報処理装置によれば、所定の数に、1以上のリソースの少なくともいずれかを用いて実行される業務処理の数に基づいて設定される数を用いることができる。これにより、情報処理装置は、業務処理単位での1以上のリソースのそれぞれに関する情報を精度よく取得可能にし、基底ベクトルの数の低減化により、非負値行列因子分解にかかる処理量の低減化を図ることができる。
情報処理装置によれば、所定の数に、ベクトルの次元の数に基づいて設定される数を用いることができる。これにより、情報処理装置は、業務処理の数が不明でも、業務処理単位での1以上のリソースのそれぞれに関する情報を精度よく取得することができる。
情報処理装置によれば、1以上のリソースに、同一の機器における異なる種類のリソースを含むことができる。これにより、情報処理装置は、1つの業務処理が同一の機器における異なる種類のリソースに影響する場合に、1つの業務処理に対応する形式で、同一の機器における異なる種類のリソースのそれぞれの成分データを取得することができる。
情報処理装置によれば、1以上のリソースに、異なる機器におけるリソースを含むことができる。これにより、情報処理装置は、1つの業務処理が異なる機器におけるリソースに影響する場合に、1つの業務処理に対応する形式で、異なる機器におけるリソースのそれぞれの成分データを取得することができる。
情報処理装置によれば、取得した時系列データを、所定の時間間隔ごとの時系列データに分割することができる。情報処理装置によれば、分割した所定の時間間隔ごとの時系列データが示す1以上の指標値を要素とする所定の時間間隔ごとのベクトルのそれぞれを列または行として含む行列を生成することができる。これにより、情報処理装置は、業務処理の業務量の周期的な変化傾向を活用した非負値行列因子分解を実施可能にするために、取得した時系列データを加工することができる。このため、情報処理装置は、所定時間間隔ごとに時系列データを取得しなくてもよく、業務処理装置との通信回数の低減化を図ることができる。
なお、本実施の形態で説明した出力方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明した出力プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明した出力プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)1以上のリソースのそれぞれの使用状況を表す指標値の時間変化を示す時系列データを取得し、
取得した前記時系列データに基づいて、所定の時間間隔ごとの前記1以上のリソースのそれぞれの使用状況を表す指標値を要素とする前記所定の時間間隔ごとのベクトルのそれぞれを列または行として含む行列を生成し、
生成した前記行列に対して非負値行列因子分解を実施し、所定の数分の基底ベクトルのそれぞれを列または行として含む基底行列を生成し、
生成した前記基底行列に含まれる前記所定の数分の基底ベクトルのそれぞれが表す1以上の成分値を前記1以上のリソースのそれぞれについて分離した結果を出力する、
処理をコンピュータに実行させることを特徴とする出力プログラム。
(付記2)生成した前記行列に対して非負値行列因子分解を実施し、前記所定の数分の重みベクトルのそれぞれを行または列として含み、生成した前記行列を前記基底行列との積によって表す重み行列を生成し、
生成した前記重み行列に含まれる前記所定の数分の重みベクトルのそれぞれに関する情報を出力する、処理を前記コンピュータに実行させることを特徴とする付記1に記載の出力プログラム。
(付記3)前記所定の数は、前記1以上のリソースの少なくともいずれかを用いて実行される業務処理の数に基づいて設定される、ことを特徴とする付記1または2に記載の出力プログラム。
(付記4)前記所定の数は、前記ベクトルの次元の数に基づいて設定される、ことを特徴とする付記1~3のいずれか一つに記載の出力プログラム。
(付記5)前記1以上のリソースは、同一の機器における異なる種類のリソースを含む、ことを特徴とする付記1~4のいずれか一つに記載の出力プログラム。
(付記6)前記1以上のリソースは、異なる機器におけるリソースを含む、ことを特徴とする付記1~5のいずれか一つに記載の出力プログラム。
(付記7)取得した前記時系列データを、前記所定の時間間隔ごとの時系列データに分割する、処理を前記コンピュータに実行させ、
前記生成する処理は、分割した前記所定の時間間隔ごとの時系列データが示す1以上の指標値を要素とする前記所定の時間間隔ごとのベクトルのそれぞれを列または行として含む行列を生成する、ことを特徴とする付記1~6のいずれか一つに記載の出力プログラム。
(付記8)1以上のリソースのそれぞれの使用状況を表す指標値の時間変化を示す時系列データを取得し、
取得した前記時系列データに基づいて、所定の時間間隔ごとの前記1以上のリソースのそれぞれの使用状況を表す指標値を要素とする前記所定の時間間隔ごとのベクトルのそれぞれを列または行として含む行列を生成し、
生成した前記行列に対して非負値行列因子分解を実施し、所定の数分の基底ベクトルのそれぞれを列または行として含む基底行列を生成し、
生成した前記基底行列に含まれる前記所定の数分の基底ベクトルのそれぞれが表す1以上の成分値を前記1以上のリソースのそれぞれについて分離した結果を出力する、
処理をコンピュータが実行することを特徴とする出力方法。