以下に、図面を参照して、本発明にかかるシステム分析方法、およびシステム分析プログラムの実施の形態を詳細に説明する。
(実施の形態にかかるシステム分析方法の一実施例)
図1は、実施の形態にかかるシステム分析方法の一実施例を示す説明図である。情報処理装置100は、業務処理システムに含まれる1以上の機器のそれぞれの機器のリソースの負荷量に関わる情報が、複数の業務処理のいずれの業務処理に対応するのかを、ユーザが判断しやすくすることができるコンピュータである。
業務処理システムは、例えば、ICT(Information and Communication Technology)システムである。機器は、例えば、ICT機器である。機器は、例えば、サーバなどである。リソースは、例えば、インフラストラクチャーを形成する資源である。リソースは、例えば、CPU、メモリ、および、通信帯域などである。業務処理は、例えば、1以上の機器における1以上の機能を使用することによって実現される一連の処理である。
従来、分析者は、ICTシステムにおいて、複数の業務処理の実行時のリソースの負荷量のシミュレーションを実施しようと考えることがある。
分析者は、例えば、将来、業務処理の業務量が増加した際に必要となる機器の台数などを見積もるために、シミュレーションを実施しようと考えることがある。また、分析者は、例えば、将来、業務処理の業務量が増加した際に業務処理の性能向上のボトルネックとなるリソースを特定するために、シミュレーションを実施しようと考えることがある。
また、分析者は、例えば、突発的に業務量が増加した場合について、実機検証が困難な状況であれば、リソースの負荷量のシミュレーションを実施しようと考えることがある。また、分析者は、想定する運用時のリソースの負荷量の時間変化のパターン以外に、発生し得るリソースの負荷量の時間変化のパターンを分析するために、リソースの負荷量のシミュレーションを実施しようと考えることがある。
このため、シミュレーションの基準として、それぞれの業務処理で、リソースをどの程度使用するのかを特定することが望まれる。
ここで、仮に、それぞれの業務処理の単独実行時のリソースの負荷量を計測し、それぞれの業務処理で、リソースをどの程度使用するのかを特定することができれば、シミュレーションを実施することができる。
しかしながら、それぞれの業務処理の単独実行時のリソースの実際の負荷量を計測し、それぞれの業務処理で、リソースをどの程度使用するのかを特定することは難しい。
例えば、実際の業務処理システムでは、複数の業務処理が同時に実行される傾向があり、1つの機器を使用して複数の業務処理が実行される場合もあり得る。具体的には、1つの機器で、複数の業務処理からデータベースに対するクエリを受け付けるプロセスが実行される場合が考えられる。この場合、1つの機器のリソースの負荷量の中で、それぞれの業務処理に対応する負荷量は一体化しているため、それぞれの業務処理の単独実行時のリソースの負荷量を計測することはできない。
これに対し、業務処理の性質を利用して、リソースの負荷量のうち、業務処理の数分の成分量を特定する手法が考えられる。当該技術は、負荷量の時系列の発生傾向から、負荷量全体を複数の成分量に分けるものである。しかしながら、この手法でも、複数に分けた成分量のうち、いずれの成分量が、具体的にどのような業務処理に対応するのかを判断することは難しい。
なお、業務処理の性質としては、例えば、以下の2つの性質が考えられる。業務処理の業務量が、日や週や月などの一定時間間隔で周期的な変化傾向を示すという第1の性質と、それぞれの業務処理の業務量に基づき、それぞれのリソースの使用状況が決定されるという第2の性質である。
そこで、本実施の形態では、分析者が、リソースの負荷量のうちの所定の成分量が、具体的にいずれの業務処理に対応するのかを判断しやすくすることができるシステム分析方法について説明する。これにより、システム分析方法は、複数の業務処理の実行時におけるリソースの負荷量についてのシミュレーションを実施しやすくすることができる。
図1において、業務処理システムは、1以上のリソースを含み、1以上の機能を有し、複数の業務処理を実現するとする。1以上のリソースは、複数の業務処理の少なくともいずれかの業務処理に使用されるリソースの集まりである。1以上の機能は、複数の業務処理の少なくともいずれかの業務処理に使用される機能の集まりである。図1の例では、業務処理システムは、リソース1,2を含み、機能1,2を有するとする。
(1−1)情報処理装置100は、いずれかの業務処理について、それぞれのリソースの負荷量を複数の成分量に分けた各成分量の時系列データと、それぞれの機能の処理量のうちの当該業務処理に関わる成分量の時系列データとを取得する。
リソースの負荷量のうちのいずれかの業務処理に関わる成分量の時系列データは、成分量の時間変化を示すデータである。機能の処理量のうちのいずれかの業務処理に関わる成分量の時系列データは、成分量の時間変化を示すデータである。
図1の例では、情報処理装置100は、特定の業務処理に関わる、それぞれのリソースの負荷量のうちの成分量の時系列データ101,102と、前記特定の業務処理に関わる、それぞれの機能の処理量のうちの成分量の時系列データ103,104とを取得する。ここで、情報処理装置100は、時系列データ101〜104が、同じ業務処理に関わると認識するが、具体的にいずれの業務処理に関わるのかを認識していなくてもよい。
(1−2)情報処理装置100は、いずれかの業務処理について、それぞれのリソースの負荷量のうちの当該業務処理に関わる成分量の時系列データに対応付けて、当該業務処理の業務判別情報を表示する。業務処理の業務判別情報は、それぞれの機能の処理量のうちの当該業務処理に関わる成分量の時系列データを、それぞれの機能を識別可能に表示するための表示情報であって、業務に含まれる複数の機能の処理量を表すグラフである。
図1の例では、情報処理装置100は、それぞれのリソースの負荷量のうちの前記特定の業務処理に対応する成分量の時系列データ101,102に対応付けて、機能の処理量のうちの前記特定の業務処理に対応する成分量の時系列データ103,104を、それぞれの機能を識別可能に表示する。ここでは、対応付けは、1行に並べて表示することである。
例えば、分析者は、表示された業務判別情報により、その業務に含まれる機能の組合せと各機能の処理量がわかるため、抽出された業務処理の内容を容易に把握することができる。例えば、機能1がログイン機能、機能2が休暇入力機能、であることがわかれば、これらを含む業務は、休暇申請業務であることがわかる。したがって、上述のようにリソースの成分量と機能の処理量の成分量とが並べて表示されていることで、分析者は、どの業務処理において、各リソースがどのように使用されているかを把握することができる。結果として、情報処理装置100は、分析者が判断した結果に基づいて、複数の業務処理の実行時におけるリソースの負荷量についてのシミュレーションを実施しやすくすることができる。
(業務処理システム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は、分析者に使用されるコンピュータである。情報処理装置100は、例えば、業務処理装置201と通信し、全体の稼働データを取得する。情報処理装置100は、具体的には、所定のタイミングで、業務処理装置201が記憶するリソースの負荷量と機能の処理量とを収集し、収集したリソースの負荷量と機能の処理量とを纏めた全体の稼働データを生成する。全体の稼働データは、例えば、図4に後述する稼働テーブル400を用いて記憶される。
情報処理装置100は、例えば、全体の稼働データのリソースの負荷量と機能の処理量とを正規化し、正規化後のリソースの負荷量と機能の処理量とを纏めた全体の正規化稼働データを生成する。全体の正規化稼働データは、例えば、図5に後述する正規化稼働テーブル500を用いて記憶される。
情報処理装置100は、例えば、全体の正規化稼働データを一定時間間隔ごとに分割する。一定時間間隔は、例えば、1日である。情報処理装置100は、具体的には、全体の正規化稼働データを、1日ごとに分割する。情報処理装置100は、例えば、1日ごとに分割された日単位稼働データをベクトル化し、1日ごとのベクトルを生成する。各日のベクトルは、例えば、図6に後述するベクトルテーブル600を用いて記憶される。
情報処理装置100は、例えば、各日のベクトルを列として含む稼働データ行列を生成する。情報処理装置100は、例えば、基底数に基づいて、生成した稼働データ行列に対して非負値行列因子分解を実施し、基底行列および重み行列を生成する。基底行列は、例えば、図7に後述する成分テーブル700を用いて記憶される。
情報処理装置100は、例えば、基底行列に含まれる、業務処理単位に対応する基底ベクトルに含まれる業務処理単位での1以上の成分量を、それぞれのリソースとそれぞれの機能とに分離する。分離した結果は、例えば、図8に後述する分離結果テーブル800を用いて記憶される。これにより、情報処理装置100は、それぞれのリソースに分離した成分量を並べた時系列データと、それぞれの機能に分離した成分量を並べた時系列データとを生成することができる。
情報処理装置100は、例えば、分析者に、分離した結果を提示する。情報処理装置100は、具体的には、それぞれのリソースに分離した成分量を並べた時系列データに対応付けて、それぞれの機能に分離した成分量を並べた時系列データを、それぞれの機能を識別可能に表示することにより、分析者に提示する。
情報処理装置100は、例えば、分析者から、それぞれの業務処理の業務量の設定を受け付ける。設定された業務量は、例えば、図9に後述する業務量テーブル900を用いて記憶される。
情報処理装置100は、例えば、設定された業務量に基づいて、業務処理ごとのリソースの負荷量と、全体のリソースの負荷量を算出する。業務処理ごとのリソースの負荷量は、例えば、図10に後述する予測テーブル1000を用いて記憶される。全体のリソースの負荷量は、例えば、図11に後述する全体予測テーブル1100を用いて記憶される。情報処理装置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以上のリソース負荷量と、1以上の機能処理量とのフィールドを有する。稼働テーブル400は、各フィールドに情報を設定することにより、履歴データがレコード400−aとして記憶される。aは、任意の整数である。
日付時刻のフィールドには、業務処理装置201でリソースの負荷量と機能の処理量とが計測された日付と時刻との組み合わせが設定される。リソース負荷量のフィールドには、リソースの負荷量が設定される。機能処理量のフィールドには、機能の処理量が設定される。
リソース負荷量のフィールドは、例えば、CPU使用率[%]のフィールドと、ディスクIO(Input/Output)[IOPS(Input/Output Per Second)]のフィールドとなどである。CPU使用率[%]のフィールドには、業務処理装置201でのCPU301の負荷量であるCPU使用率[%]が設定される。ディスクIO[IOPS]のフィールドには、業務処理装置201での記録媒体305の負荷量であるディスクIO[IOPS]が設定される。
業務処理装置201が複数存在する場合であれば、業務処理装置201ごとにCPU使用率[%]のフィールドが存在してもよい。業務処理装置201が複数存在する場合であれば、業務処理装置201ごとにディスクIO[IOPS]のフィールドが存在してもよい。
機能処理量のフィールドは、例えば、A画面アクセス回数のフィールドと、B画面アクセス回数のフィールドとなどである。A画面アクセス回数のフィールドには、業務処理装置201で、少なくともいずれかの業務処理に使用されるA画面を表示した回数が設定される。B画面アクセス回数のフィールドには、業務処理装置201で、少なくともいずれかの業務処理に使用されるB画面を表示した回数が設定される。
業務処理装置201が複数存在する場合であれば、業務処理装置201ごとにA画面アクセス回数のフィールドが存在してもよい。業務処理装置201が複数存在する場合であれば、業務処理装置201ごとにB画面アクセス回数のフィールドが存在してもよい。
(正規化稼働テーブル500の構造)
次に、図5を用いて、正規化稼働テーブル500の構造の一例について説明する。正規化稼働テーブル500は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図5は、正規化稼働テーブル500の構造の一例を示す説明図である。図5に示すように、正規化稼働テーブル500は、日付時刻と、1以上のリソース正規化負荷量と、1以上の機能正規化処理量とのフィールドを有する。正規化稼働テーブル500は、各フィールドに情報を設定することにより、正規化履歴データがレコード500−aとして記憶される。aは、任意の整数である。
日付時刻のフィールドには、業務処理装置201でリソースの負荷量と機能の処理量とが計測された日付と時刻との組み合わせが設定される。リソース正規化負荷量のフィールドには、計測されたリソースの負荷量を正規化した正規化負荷量が設定される。機能正規化処理量のフィールドには、計測された機能の処理量を正規化した正規化処理量が設定される。
リソース正規化負荷量のフィールドは、例えば、正規化CPU使用率[%]のフィールドと、正規化ディスクIO[IOPS]のフィールドとなどである。正規化CPU使用率[%]のフィールドには、業務処理装置201でのCPU301の負荷量であるCPU使用率[%]を正規化して得られる値が設定される。正規化ディスクIO[IOPS]のフィールドには、業務処理装置201での記録媒体305の負荷量であるディスクIO[IOPS]を正規化して得られる値が設定される。
業務処理装置201が複数存在する場合であれば、業務処理装置201ごとに正規化CPU使用率[%]のフィールドが存在してもよい。業務処理装置201が複数存在する場合であれば、業務処理装置201ごとに正規化ディスクIO[IOPS]のフィールドが存在してもよい。
機能正規化処理量のフィールドは、例えば、正規化A画面アクセス回数のフィールドと、正規化B画面アクセス回数のフィールドとなどである。正規化A画面アクセス回数のフィールドには、業務処理装置201で、少なくともいずれかの業務処理に使用されるA画面を表示した回数を正規化して得られる値が設定される。正規化B画面アクセス回数のフィールドには、業務処理装置201で、少なくともいずれかの業務処理に使用されるB画面を表示した回数を正規化して得られる値が設定される。
業務処理装置201が複数存在する場合であれば、業務処理装置201ごとに正規化A画面アクセス回数のフィールドが存在してもよい。業務処理装置201が複数存在する場合であれば、業務処理装置201ごとに正規化B画面アクセス回数のフィールドが存在してもよい。
(ベクトルテーブル600のデータ構造)
次に、図6を用いて、ベクトルテーブル600のデータ構造の一例について説明する。ベクトルテーブル600は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図6は、ベクトルテーブル600のデータ構造の一例を示す説明図である。図6に示すように、ベクトルテーブル600は、日ごとのデータのフィールドを有する。ベクトルテーブル600は、各フィールドに情報を設定することにより、ベクトルデータがレコード600−aとして記憶される。aは、任意の整数である。
日ごとのデータのフィールドには、全体の正規化稼働データを日ごとに分割した日単位稼働データをベクトル化して得られたベクトルのそれぞれの要素が設定される。ベクトルのそれぞれの要素は、日単位稼働データに含まれる、いずれかのリソースの正規化負荷量、または、いずれかの機能の正規化処理量である。
(成分テーブル700のデータ構造)
次に、図7を用いて、成分テーブル700のデータ構造の一例について説明する。成分テーブル700は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図7は、成分テーブル700のデータ構造の一例を示す説明図である。図7に示すように、成分テーブル700は、1以上の成分のフィールドを有する。成分テーブル700は、各フィールドに情報を設定することにより、成分データがレコード700−aとして記憶される。aは、任意の整数である。
成分のフィールドには、稼働データ行列に対して非負値行列因子分解を実施して得られた基底行列に含まれる、いずれかの業務処理に対応する基底ベクトルのそれぞれの要素が設定される。いずれかの業務処理に対応する基底ベクトルのそれぞれの要素は、当該業務処理に関わる、いずれかのリソースの負荷量のうちの成分量、または、いずれかの機能の処理量のうちの成分量である。
(分離結果テーブル800のデータ構造)
次に、図8を用いて、分離結果テーブル800のデータ構造の一例について説明する。分離結果テーブル800は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図8は、分離結果テーブル800のデータ構造の一例を示す説明図である。図8に示すように、分離結果テーブル800は、成分IDと、時刻と、1以上のリソース正規化負荷量と、1以上の機能正規化処理量とのフィールドを有する。分離結果テーブル800は、各フィールドに情報を設定することにより、分離結果データがレコード800−aとして記憶される。aは、任意の整数である。
成分IDのフィールドには、それぞれのリソースの負荷量のうちの成分量と、それぞれの機能の処理量のうちの成分量との分離元になる、いずれかの業務処理に対応する基底ベクトルを識別する成分IDが設定される。成分IDは、いずれかの業務処理自体を識別する識別情報としても扱われる。
時刻のフィールドには、それぞれのリソースの負荷量のうちの成分量と、それぞれの機能の処理量のうちの成分量とが、一定時間間隔内のいつの成分量であるかを示す時刻が設定される。リソース正規化負荷量のフィールドには、いずれかのリソースの負荷量のうちの成分量が設定される。機能正規化処理量のフィールドには、いずれかの機能の処理量のうちの成分量が設定される。
リソース正規化負荷量のフィールドは、例えば、正規化CPU使用率[%]のフィールドと、正規化ディスクIO[IOPS]のフィールドとなどである。正規化CPU使用率[%]のフィールドには、成分量として、業務処理装置201でのCPU301の一部の負荷量であるCPU使用率[%]が設定される。正規化ディスクIO[IOPS]のフィールドには、成分量として、業務処理装置201での記録媒体305の一部の負荷量であるディスクIO[IOPS]が設定される。
業務処理装置201が複数存在する場合であれば、業務処理装置201ごとに正規化CPU使用率[%]のフィールドが存在してもよい。業務処理装置201が複数存在する場合であれば、業務処理装置201ごとに正規化ディスクIO[IOPS]のフィールドが存在してもよい。
機能正規化処理量のフィールドは、例えば、正規化A画面アクセス回数のフィールドと、正規化B画面アクセス回数のフィールドとなどである。正規化A画面アクセス回数のフィールドには、成分量として、業務処理装置201で、少なくともいずれかの業務処理に使用されるA画面を表示した全体の回数のうちの一部の回数が設定される。正規化B画面アクセス回数のフィールドには、成分量として、業務処理装置201で、少なくともいずれかの業務処理に使用されるB画面を表示した全体の回数のうちの一部の回数が設定される。
業務処理装置201が複数存在する場合であれば、業務処理装置201ごとに正規化A画面アクセス回数のフィールドが存在してもよい。業務処理装置201が複数存在する場合であれば、業務処理装置201ごとに正規化B画面アクセス回数のフィールドが存在してもよい。
(業務量テーブル900のデータ構造)
次に、図9を用いて、業務量テーブル900のデータ構造の一例について説明する。業務量テーブル900は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図9は、業務量テーブル900のデータ構造の一例を示す説明図である。図9に示すように、業務量テーブル900は、成分IDと、業務量とのフィールドを有する。業務量テーブル900は、各フィールドに情報を設定することにより、業務量データがレコード900−aとして記憶される。aは、任意の整数である。
成分IDのフィールドには、いずれかの業務処理を識別する成分IDが設定される。業務処理は、例えば、業務パターンで表現される。業務パターンは、業務処理で使用する1以上の機能の順序である。業務量のフィールドには、いずれかの業務処理の業務量が設定される。業務量は、例えば、業務処理の実行回数である。
(予測テーブル1000のデータ構造)
次に、図10を用いて、予測テーブル1000のデータ構造の一例について説明する。予測テーブル1000は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図10は、予測テーブル1000のデータ構造の一例を示す説明図である。図10に示すように、予測テーブル1000は、成分IDと、時刻と、1以上のリソース正規化負荷量とのフィールドを有する。予測テーブル1000は、各フィールドに情報を設定することにより、予測データがレコード1000−aとして記憶される。aは、任意の整数である。
成分IDのフィールドには、いずれかの業務処理を識別する成分IDが設定される。時刻のフィールドには、いずれかの業務処理に関わる、それぞれのリソースについての正規化負荷量の予測値が、一定時間間隔内のいつの予測値であるかを示す時刻が設定される。リソース正規化負荷量のフィールドには、いずれかのリソースの正規化負荷量の予測値が設定される。
リソース正規化負荷量のフィールドは、例えば、正規化CPU使用率[%]のフィールドと、正規化ディスクIO[IOPS]のフィールドとなどである。正規化CPU使用率[%]のフィールドには、業務処理装置201でのCPU301の正規化負荷量の予測値であるCPU使用率[%]が設定される。正規化ディスクIO[IOPS]のフィールドには、業務処理装置201での記録媒体305の正規化負荷量の予測値であるディスクIO[IOPS]が設定される。
業務処理装置201が複数存在する場合であれば、業務処理装置201ごとに正規化CPU使用率[%]のフィールドが存在してもよい。業務処理装置201が複数存在する場合であれば、業務処理装置201ごとに正規化ディスクIO[IOPS]のフィールドが存在してもよい。
(全体予測テーブル1100のデータ構造)
次に、図11を用いて、全体予測テーブル1100のデータ構造の一例について説明する。全体予測テーブル1100は、例えば、図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
図11は、全体予測テーブル1100のデータ構造の一例を示す説明図である。図11に示すように、全体予測テーブル1100は、時刻と、1以上のリソース正規化負荷量とのフィールドを有する。全体予測テーブル1100は、各フィールドに情報を設定することにより、全体予測データがレコード1100−aとして記憶される。aは、任意の整数である。
時刻のフィールドには、業務処理システム200における、それぞれのリソースについての正規化負荷量の予測値が、一定時間間隔内のいつの予測値であるかを示す時刻が設定される。リソース正規化負荷量のフィールドには、業務処理システム200における、いずれかのリソースの正規化負荷量の予測値が設定される。
リソース正規化負荷量のフィールドは、例えば、正規化CPU使用率[%]のフィールドと、正規化ディスクIO[IOPS]のフィールドとなどである。正規化CPU使用率[%]のフィールドには、業務処理システム200における、業務処理装置201でのCPU301の正規化負荷量の予測値であるCPU使用率[%]が設定される。正規化ディスクIO[IOPS]のフィールドには、業務処理システム200における、業務処理装置201での記録媒体305の正規化負荷量の予測値であるディスクIO[IOPS]が設定される。
業務処理装置201が複数存在する場合であれば、業務処理装置201ごとに正規化CPU使用率[%]のフィールドが存在してもよい。業務処理装置201が複数存在する場合であれば、業務処理装置201ごとに正規化ディスクIO[IOPS]のフィールドが存在してもよい。
(業務処理装置201のハードウェア構成例)
業務処理装置201のハードウェア構成例は、図3に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。業務処理装置201は、図4に示した稼働テーブル400と同様のデータ構造で、自装置分の稼働データを記憶する。業務処理装置201は、図4〜図11に示した各種テーブルを記憶しなくてもよい。
(情報処理装置100の機能的構成例)
次に、図12を用いて、情報処理装置100の機能的構成例について説明する。
図12は、情報処理装置100の機能的構成例を示すブロック図である。情報処理装置100は、記憶部1200と、取得部1201と、分解部1202と、統合部1203と、抽出部1204と、分離部1205と、分析部1206と、出力部1207とを含む。
記憶部1200は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、記憶部1200が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部1200が、情報処理装置100とは異なる装置に含まれ、記憶部1200の記憶内容が情報処理装置100から参照可能である場合があってもよい。
取得部1201〜出力部1207は、制御部の一例として機能する。取得部1201〜出力部1207は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
記憶部1200は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部1200は、例えば、1以上のリソースのそれぞれのリソースの負荷量の時間変化を示す時系列データを記憶する。リソースは、例えば、CPUやメモリ、通信帯域などである。1以上のリソースは、例えば、同一の機器における異なる種類のリソースを含む。1以上のリソースは、例えば、異なる機器におけるリソースを含む。負荷量は、例えば、使用量である。
記憶部1200は、例えば、1以上の機能のそれぞれの機能の処理量の時間変化を示す時系列データを記憶する。機能は、例えば、所定の画面にアクセスする機能である。機能は、データを受け付けたり、処理したりする機能であってもよい。機能は、例えば、アプリにより実現されてもよい。処理量は、例えば、画面へのアクセス回数である。処理量は、例えば、アプリで処理したデータの件数であってもよい。負荷量と処理量とは、例えば、正規化されることがある。
記憶部1200は、例えば、非負値行列因子分解の対象となる行列を記憶する。行列は、例えば、一定時間間隔ごとの、それぞれのリソースの負荷量の時間変化を示す時系列データと、それぞれの機能の処理量の時間変化を示す時系列データとのグループに基づいて生成される。行列は、具体的には、一定時間間隔ごとの、それぞれのリソースの負荷量の時間変化を示す時系列データと、それぞれの機能の処理量の時間変化を示す時系列データとのグループをベクトル化して得られたベクトルに基づいて生成される。
記憶部1200は、例えば、非負値行列因子分解の結果得られる、基底行列を記憶する。基底行列は、所定の数の基底ベクトルのそれぞれを列または行として含む行列である。基底ベクトルは、一定時間間隔での周期的な変化傾向が互いに類似するような、それぞれのリソースの負荷量のうちの成分量の時間変化を示す時系列データとそれぞれの機能の処理量のうちの成分量の時間変化を示す時系列データとのグループを表すベクトルである。
記憶部1200は、例えば、業務処理ごとの業務量を記憶する。業務量は、例えば、分析者によって設定される。記憶部1200は、例えば、業務処理ごとに、設定された業務量に応じて予測された、一定時間間隔あたりの、それぞれのリソースの負荷量の時間変化を示す時系列データと、それぞれの機能の処理量の時間変化を示す時系列データとのグループを記憶する。記憶部1200は、業務処理システム200における、一定時間間隔あたりの、それぞれのリソースの負荷量の時間変化を示す時系列データと、それぞれの機能の処理量の時間変化を示す時系列データとのグループを記憶する。記憶部1200は、具体的には、図4〜図11に示した各種テーブルを記憶する。
記憶部1200は、例えば、所定の数を記憶する。所定の数は、基底数である。基底数は、基底行列に含まれる基底ベクトルの数を決定する。所定の数は、1以上のリソースの少なくともいずれかのリソースを使用して実行され、1以上の機能の少なくともいずれかの機能を使用して実行される業務処理の数に基づいて設定される。所定の数は、例えば、予め分析者によって業務処理の数と同じ数に設定される。また、所定の数は、ベクトルの次元の数に基づいて設定されてもよい。所定の数は、例えば、自動でベクトルの次元の数と同じ数が設定される。
記憶部1200は、例えば、一定時間間隔ごとの、それぞれのリソースの負荷量の時間変化を示す時系列データと、それぞれの機能の処理量の時間変化を示す時系列データとのグループをベクトル化するための所定の規則を記憶する。一定時間間隔は、例えば、日、週、月などである。所定の規則は、いずれの種類のリソースのいずれの時刻の負荷量が、ベクトル内のいずれの位置の要素になり、かつ、いずれの種類の機能のいずれの時刻の処理量が、ベクトル内のいずれの位置の要素になるかを規定する規則である。
取得部1201は、各機能部の処理に用いられる各種情報を取得する。取得部1201は、取得した各種情報を、記憶部1200に記憶し、または、各機能部に出力する。また、取得部1201は、記憶部1200に記憶しておいた各種情報を、各機能部に出力してもよい。取得部1201は、例えば、分析者の操作入力に基づき、各種情報を取得する。取得部1201は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
取得部1201は、例えば、それぞれのリソースの負荷量の時系列データと、それぞれの機能の処理量の時系列データとのグループを取得する。取得部1201は、具体的には、1以上の業務処理装置201から、所定の期間分の、それぞれのリソースの負荷量の時間変化と、それぞれの機能の処理量の時間変化とを示す、全体の稼働データを取得する。
また、取得部1201が、例えば、一定時間間隔ごとの、それぞれのリソースの負荷量の時系列データと、それぞれの機能の処理量の時系列データとのグループを取得する場合があってもよい。この場合、取得部1201は、具体的には、1日ごとに、1以上の業務処理装置201から、それぞれのリソースの負荷量の時間変化と、それぞれの機能の処理量の時間変化とを示す、1日分の日単位稼働データを取得する。この場合、情報処理装置100は、分解部1202を有さなくてもよい。
また、取得部1201が、例えば、同じ業務処理に関わる、一定時間間隔あたりの、それぞれのリソースの負荷量のうちの成分量の時系列データと、それぞれの機能の処理量のうちの成分量の時系列データとのグループを取得する場合があってもよい。この場合、取得部1201は、具体的には、業務処理ごとに、1日あたりのそれぞれのリソースの負荷量のうちの当該業務処理に関わる成分量の時系列データとそれぞれの機能の処理量のうちの当該業務処理に関わる成分量の時系列データとのグループを取得する。この場合、情報処理装置100は、分解部1202〜分離部1205を有さなくてもよい。
また、取得部1201は、例えば、分析者の操作入力に基づき、所定の数の設定を受け付けてもよい。
また、取得部1201は、例えば、分析者の操作入力に基づき、複数の業務処理のそれぞれの業務処理の業務量の設定を受け付けてもよい。
取得部1201は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、分析者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。取得部1201は、例えば、所定の期間分の、全体の稼働データを取得したことを、分解部1202の処理を開始する開始トリガーとして受け付ける。
分解部1202は、取得した時系列データを、一定時間間隔ごとの時系列データに分割する。分解部1202は、例えば、負荷量と処理量とを正規化し、取得した稼働データを、正規化稼働データに変換する。分解部1202は、正規化稼働データを1日ごとに分割し、日単位稼働データを生成する。これにより、分解部1202は、業務処理の業務量の周期的な変化傾向を活用した非負値行列因子分解を実施可能にするために、取得した時系列データを加工することができる。
統合部1203は、分割した一定時間間隔ごとの時系列データに基づいて、一定時間間隔ごとのそれぞれのリソースの負荷量とそれぞれの機能の処理量とを要素とする一定時間間隔ごとのベクトルを生成する。統合部1203は、例えば、記憶部1200に記憶された所定の規則に従って、日単位稼働データが示す、それぞれのリソースの負荷量とそれぞれの機能の処理量とを、決められた位置の要素として配置することにより、日単位稼働データをベクトル化する。これにより、結合部は、行列の列または行となる、1日ごとのベクトルを生成することができる。
抽出部1204は、一定時間間隔ごとのベクトルのそれぞれを列または行として含む行列を生成する。抽出部1204は、例えば、各日のベクトルを列として含む稼働データ行列を生成する。これにより、抽出部1204は、一定時間間隔ごとに、それぞれのリソースの負荷量とそれぞれの機能の処理量とを纏めて、行列のそれぞれの列または行として処理可能にすることができ、非負値行列因子分解の結果に、業務処理の性質を反映させることができる。このため、抽出部1204は、非負値行列因子分解で、業務処理単位に対応する、一定時間間隔ごとの周期的な変化傾向が類似する、それぞれのリソースの負荷量とそれぞれの機能の処理量とを抽出可能にすることができる。
次に、抽出部1204は、生成した行列に対して非負値行列因子分解を実施する。抽出部1204は、例えば、稼働データ行列を基底行列と重み行列との積で規定し、非負値行列因子分解を実施する。抽出部1204は、非負値行列因子分解の結果、所定の数分の基底ベクトルのそれぞれを列または行として含む基底行列を生成する。これにより、抽出部1204は、業務処理単位に対応する、周期的な変化傾向が類似する、それぞれのリソースの負荷量の時間変化と、それぞれの機能の処理量の時間変化とを示す基底ベクトルを抽出することができる。
分離部1205は、生成した基底行列に含まれる所定の数分の基底ベクトルのそれぞれが表す複数の成分量を、それぞれのリソースとそれぞれの機能とについて分離する。ここで、例えば、基底行列に含まれる基底ベクトルと、稼働データ行列に含まれるベクトルとの間では、要素の位置に対応関係が存在する。このため、分離部1205は、例えば、記憶部1200に記憶された所定の規則を参照し、基底ベクトルが示す複数の成分量を、それぞれのリソースとそれぞれの機能とについて分離する。
これにより、分離部1205は、業務処理単位の、それぞれのリソースの負荷量のうちの成分量と、それぞれの機能の処理量のうちの成分量とを取得することができる。分離部1205は、例えば、それぞれの業務処理に関わる、一定時間間隔あたりの、それぞれのリソースの負荷量のうちの成分量の時系列データと、それぞれの機能の処理量のうちの成分量の時系列データとを取得することができる。
分離部1205は、いずれかの業務処理に関わる、それぞれの機能の処理量のうちの成分量の時系列データに基づいて、当該業務処理の業務判別情報を設定する。分離部1205は、例えば、いずれかの業務処理に関わる、一定時間間隔あたりの、それぞれの機能の処理量のうちの成分量を積み上げた積み上げ量の時系列データを生成し、当該業務処理の業務判別情報に設定する。分離部1205は、例えば、いずれかの業務処理に関わる、それぞれの機能の処理量のうちの成分量の時系列データを、そのまま、当該業務処理の業務判別情報に設定してもよい。これにより、分離部1205は、分析者が業務内容の種別を判別するための基準となる業務判別情報を生成することができる。
分析部1206は、業務処理ごとに、将来の一定時間間隔あたりの、それぞれのリソースの負荷量のうちの当該業務処理に関わる成分量の時間変化を示す予測の時系列データを生成する。分析部1206は、例えば、業務処理ごとに、それぞれのリソースの負荷量のうちの当該業務処理に関わる成分量の時系列データと、指定された当該業務処理の業務量とに基づいて、当該業務処理に対応する予測の時系列データを生成する。分析部1206は、具体的には、業務処理ごとに、それぞれのリソースの負荷量のうちの当該業務処理に関わる成分量の時系列データに、当該業務処理の業務量を乗算し、当該業務処理に対応する予測の時系列データを生成する。これにより、分析部1206は、業務処理ごとに、リソースの負荷量のうちの成分量の時間変化のシミュレーションを実施可能にすることができる。
分析部1206は、業務処理システム200について、将来の一定時間間隔あたりの、それぞれのリソースの負荷量の時間変化を示す予測の時系列データを生成する。分析部1206は、例えば、業務処理ごとの予測の時系列データに基づいて、業務処理システム200についての予測の時系列データを生成する。分析部1206は、具体的には、業務処理ごとの予測の時系列データを重畳し、業務処理システム200についての予測の時系列データを生成する。これにより、分析部1206は、複数の業務処理の実行時の、リソースの負荷量の時間変化のシミュレーションを実施可能にすることができる。
出力部1207は、いずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、出力部1207は、いずれかの機能部の処理結果を分析者に通知可能にし、情報処理装置100の利便性の向上を図ることができる。
出力部1207は、いずれかの業務処理に関わる、一定時間間隔あたりの、それぞれのリソースの負荷量のうちの成分量の時間変化を示す時系列データに対応付けて、当該業務処理の業務判別情報を表示する。出力部1207は、例えば、いずれかの業務処理に関わる、一定時間間隔あたりの、それぞれのリソースの負荷量のうちの成分量の時系列データに対応付けて、それぞれの機能の処理量のうちの成分量の時系列データを、それぞれの機能を識別可能に表示する。これにより、出力部1207は、分析者が、業務内容の種別を判別するための基準となる業務判別情報を参照可能にすることができる。
出力部1207は、例えば、いずれかの業務処理に関わる、一定時間間隔あたりの、それぞれのリソースの負荷量のうちの成分量の時系列データに対応付けて、積み上げ量の時系列データを、それぞれの機能を識別可能に表示する。これにより、出力部1207は、分析者が、業務内容の種別を判別するための基準となる業務判別情報を参照可能にすることができる。
出力部1207は、例えば、それぞれの業務処理に対応する予測の時系列データを、それぞれの業務処理を識別可能に表示する。これにより、出力部1207は、業務処理ごとに、リソースの負荷量のうちの当該業務処理に関わる成分量の時間変化をシミュレーションした結果を、分析者が参照可能にすることができる。
出力部1207は、例えば、業務処理システム200についての予測の時系列データを表示する。これにより、出力部1207は、業務処理システム200について、複数の業務処理の実行時のリソースの負荷量の時間変化をシミュレーションした結果を、分析者が参照可能にすることができる。
ここでは、情報処理装置100が、取得部1201〜出力部1207を含む場合について説明したが、これに限らない。例えば、情報処理装置100が、分解部1202〜分離部1205を含まず、分解部1202〜分離部1205を含む他のコンピュータから、他のコンピュータで分離部1205が分離した結果を受信する場合があってもよい。また、例えば、情報処理装置100が、分析部1206を含まず、分離部1205が分離した結果を、分析部1206を含む他のコンピュータに送信する場合があってもよい。
(情報処理装置100の実施例)
次に、図13〜図23を用いて、情報処理装置100の実施例について説明する。まず、図13を用いて、情報処理装置100の動作の流れについて説明する。
図13は、情報処理装置100の動作の流れを示す説明図である。実施例において、情報処理装置100は、図12に示した各機能部を具体的に実現するための、正規化統合部1311と、成分量推定部1312と、業務判別情報作成部1313と、負荷量算出部1321とを含む。
図13において、正規化統合部1311は、業務処理システム200の稼働中、1以上の業務処理装置201から、各リソースの負荷量の履歴1301と、各機能の処理量の履歴1302とを収集し、全体の稼働データを取得する。負荷量は、例えば、CPU使用率とディスクIOである。処理量は、例えば、所定の画面へのアクセス回数である。所定の画面は、例えば、画面Aと画面Bとである。所定の画面は、業務処理で用いられる。
正規化統合部1311は、取得した稼働データに基づいて、各リソースの負荷量と各機能の処理量とを正規化して統合し、正規化稼働データを生成する。正規化する手法の具体例については、例えば、図14を用いて後述する。
成分量推定部1312は、正規化稼働データに基づいて、業務処理ごとに、各リソースの負荷量のうちの当該業務処理に関わる成分量の時系列データと、各機能の処理量のうちの当該業務処理に関わる成分量の時系列データとを推定する。推定する手法の具体例については、例えば、図15〜図18を用いて後述する。
業務判別情報作成部1313は、各機能の処理量のうちの各業務処理に関わる成分量の時系列データに基づいて、各業務処理に対応する業務判別情報を作成する。業務処理に対応する業務判別情報は、例えば、各機能を識別可能に、かつ、各機能の処理量のうちの当該業務処理に関わる成分量を識別可能に、当該成分量を積み上げた積み上げ量の時系列データを表示するための表示情報である。業務判別情報を作成する具体例については、例えば、図19を用いて後述する。
業務判別情報作成部1313は、業務処理ごとに、各リソースの負荷量のうちの当該業務処理に関わる成分量の時系列データに対応付けて、作成した当該業務処理に対応する業務判別情報を、ディスプレイに表示することにより、分析者1300に提示する。業務判別情報を分析者1300に提示する具体例については、例えば、図20を用いて後述する。
分析者1300は、各業務処理に対応する業務判別情報を確認し、各業務処理の業務内容を予想し、各業務処理の種別を予想し、各業務処理の業務量を、情報処理装置100に設定する。設定された業務量は、例えば、図9に示した業務量テーブル900を用いて記憶される。業務量を設定する具体例については、例えば、図21を用いて後述する。
負荷量算出部1321は、設定された各業務処理の業務量と、各リソースの負荷量のうちの各業務処理に関わる成分量の時系列データとに基づいて、将来の、各リソースの負荷量のうちの各業務処理に関わる成分量の予測値を算出する。算出した予測値は、例えば、図10に示した予測テーブル1000を用いて記憶される。予測値を算出する具体例については、例えば、図22および図23を用いて後述する。
また、負荷量算出部1321は、業務処理システム200における、将来の、各リソースの負荷量のうちの各業務処理に関わる成分量の予測値を算出する。算出した予測値は、例えば、図11に示した全体予測テーブル1100を用いて記憶される。予測値を算出する具体例については、例えば、図22および図23を用いて後述する。
負荷量算出部1321は、業務処理システム200における、将来の、各リソースの負荷量のうちの各業務処理に関わる成分量の予測値の時系列データを生成し、ディスプレイに表示することにより、分析者1300に提示する。予測値の時系列データを提示する具体例については、例えば、図22および図23を用いて後述する。
これにより、負荷量算出部1321は、業務処理システム200における、複数の業務処理の実行時の、リソースの負荷量の時間変化のシミュレーションを実施することができ、シミュレーションを実施した結果を、分析者1300に参照させることができる。
次に、図14〜図23を用いて、情報処理装置100の動作の一例について説明する。
図14〜図23は、情報処理装置100の動作の一例を示す説明図である。図14において、(14−1)情報処理装置100は、稼働データを取得し、稼働テーブル400を用いて記憶する。
(14−2)情報処理装置100は、各リソースの負荷量と、各機能の処理量とを正規化する。情報処理装置100は、例えば、下記式(1)により、i番目のリソースの時刻tの負荷量ri(t)を正規化した正規化負荷量nri(t)を算出する。正規化は、下記式(2)の条件を満たすように行われる。
nri(t)=ri(t)/Σi,t(ri(t)) ・・・(1)
Σi,t(nri(t))=1 ・・・(2)
情報処理装置100は、例えば、下記式(3)により、i番目の機能の時刻tの処理量gi(t)を正規化した正規化負荷量ngi(t)を算出する。正規化は、下記式(4)の条件を満たすように行われる。
ngi(t)=gi(t)/Σi,t(gi(t)) ・・・(3)
Σi,t(ngi(t))=1 ・・・(4)
(14−3)情報処理装置100は、各リソースの正規化負荷量と、各機能の正規化処理量とを纏めた正規化稼働データを生成し、正規化稼働テーブル500を用いて記憶する。これにより、情報処理装置100は、各リソースの負荷量と、各機能の処理量とのスケールの異なる値を、纏めて扱いやすくすることができる。
情報処理装置100は、例えば、非負値行列因子分解において、各リソースの負荷量と、各機能の処理量とを、等価に扱いやすくすることができる。このため、情報処理装置100は、非負値行列因子分解において、リソースの負荷量に関する評価関数の値と、機能の処理量に関する評価関数の値とのいずれか一方が重視される問題を回避しやすくすることができる。次に、図15の説明に移行する。
図15において、(15−1)情報処理装置100は、正規化稼働テーブル500に記憶された正規化稼働データを、1日単位に分解し、日単位稼働データを特定する。情報処理装置100は、例えば、日付「20180101」の日単位稼働データ、および、日付「20180102」の日単位稼働データなどを特定する。
(15−2)情報処理装置100は、日単位稼働データをベクトル化し、日ごとのベクトルを生成する。情報処理装置100は、例えば、日単位稼働データが示す各リソースの負荷量と各機能の処理量とを、所定の規則に従って、要素として並べてベクトル化し、ベクトルテーブル600を用いて記憶する。
情報処理装置100は、具体的には、日付「20180101」の日単位稼働データが示す各リソースの負荷量群1501,1502と各機能の処理量群1503,1504とを並べたベクトルx1を生成する。同様に、情報処理装置100は、日付「20180102」の日単位稼働データに基づいて、ベクトルx2を生成する。
そして、情報処理装置100は、ベクトルx1を、ベクトルテーブル600の1日目のデータのフィールドに設定し、ベクトルx2を、ベクトルテーブル600の2日目のデータのフィールドに設定する。次に、図16の説明に移行する。
図16において、(16−1)情報処理装置100は、ベクトルテーブル600を参照して、各日に対応するベクトルを列とした稼働データ行列X=(x1,x2,・・・)を生成する。ここで、1日分の日単位稼働データに対応するベクトルxjは、それぞれの業務処理についての基底ベクトルuiと重み係数aijとの線形結合により形成される。jは、何日目の日単位稼働データであるかを示す値である。
このため、1日分の日単位稼働データに対応するベクトルxjを、基底ベクトルuiと重みベクトルai(重み係数aij)とに分割すれば、それぞれの業務処理についてのリソースごとの情報と機能ごとの情報とが得られると考えられる。ベクトルxjは、数式を用いれば下記式(5)のように表現される。Nは、基底数である。基底数Nは、例えば、予め設定される。基底数Nは、例えば、稼働データ行列を形成するベクトルの次元数である場合があってもよい。
xj=Σi=1 N(aij×ui) ・・・(5)
上記式(5)を行列形式で表現すると下記式(6)のように表現される。稼働データ行列X=(x1,x2,・・・)である。Uは、基底行列である。U=(u1,u2,・・・)である。Aは、重み行列である。A=(a1,a2,・・・)=(aij)である。
X=UA ・・・(6)
ここで、非負値行列因子分解は、対象とする行列の各ベクトルの頻出成分を抽出する特性を有する。頻出成分は、周期的な変化傾向を示す成分である。このため、稼働データ行列に対して非負値行列因子分解を実施すれば、頻出成分として、周期的な変化傾向を示す成分データを抽出可能になると考えられる。具体的には、それぞれの業務処理に関わる頻出成分に対応する、各リソースの負荷量のうちの当該業務処理に関わる成分量と、各機能の処理量のうちの当該業務処理に関わる成分量とのグループが、基底行列の基底ベクトルとして抽出可能であると考えられる。
(16−2)そこで、情報処理装置100は、行列形式で表現した上記式(6)に対して非負値行列因子分解を実施し、それぞれの業務処理に対応する基底ベクトルを含む基底行列Uを生成する。基底行列Uは、例えば、図7に示した成分テーブル700を用いて記憶される。
非負値行列因子分解については、例えば、下記参考文献1を参照することができる。下記参考文献1におけるSparseness Constraintsとしては、例えば、L1ノルムが用いられる。
参考文献1 : Hoyer, Patrik O. “Non−negative matrix factorization with sparseness constraints.” Journal of machine learning research 5.Nov (2004): 1457−1469.
非負値行列因子分解では、具体的には、下記式(7)を最小化する重み行列Aと基底行列Uとを推定することになる。||Z||FROは、フロベニウスノルムである。α||A||1およびβ||U||1の項が、Sparseness Constraintsである。||Z||FROは、下記式(8)により定義される。Z=(zij)である。重み行列Aについては、下記式(9)が成立する。また、基底行列Uについては、下記式(10)が成立する。
(A*,U*)=argminA,U(1/2||X−UA||FRO 2)+α||A||1+β||U||1 ・・・(7)
||Z||FRO 2=Σi=1 NΣj=1 M(zij) ・・・(8)
A≧0 ・・・(9)
U≧0 ・・・(10)
このように、α||A||1およびβ||U||1の項を用いることにより、重みと基底行列とが可能な限り0になるよう誘導される。このため、上記式(7)を用いた非負値行列因子分解によれば、業務処理単位で、各リソースの負荷量のうちの成分量と、各機能の処理量のうちの成分量とのグループを、分析者1300が理解しやすい形式で生成しやすくすることができる。
(16−3)情報処理装置100は、生成した基底行列Uの各基底ベクトルuiを、各リソースと各機能とに分離すれば、業務処理単位で、各リソースの負荷量のうちの成分量と、各機能の処理量のうちの成分量とのグループを取得することができる。分離は、日単位稼働データをベクトル化する所定の規則を逆にした規則に従う。
情報処理装置100は、例えば、基底ベクトルu1の成分量群1601〜1604を、各リソースと各機能とに分離し、図8に示した分離結果テーブル800を用いて記憶する。情報処理装置100は、具体的には、成分量群1601を、正規化CPU使用率のフィールドに設定し、成分量群1602を、正規化ディスクIOのフィールドに設定する。また、情報処理装置100は、具体的には、成分量群1603を、正規化A画面アクセス回数のフィールドに設定し、成分量群1604を、正規化B画面アクセス回数のフィールドに設定する。次に、図17および図18の説明に移行する。
図17および図18において、情報処理装置100は、分離結果テーブル800を参照して、業務処理単位で、各リソースの負荷量のうちの成分量の時系列データと、各機能の処理量のうちの成分量の時系列データとのグループを特定する。
図17の例では、情報処理装置100は、基底ベクトルu1に対応する、成分ID1の業務処理について、各リソースの負荷量のうちの成分量の時系列データと、各機能の処理量のうちの成分量の時系列データとのグループを特定する。情報処理装置100は、例えば、各リソースの負荷量のうちの成分量の時系列データ1701,1702と、各機能の処理量のうちの成分量の時系列データ1703,1704とのグループを特定する。
図18の例では、情報処理装置100は、基底ベクトルu2に対応する、成分ID2の業務処理について、各リソースの負荷量のうちの成分量の時系列データと、各機能の処理量のうちの成分量の時系列データとのグループを特定する。情報処理装置100は、例えば、各リソースの負荷量のうちの成分量の時系列データ1801,1802と、各機能の処理量のうちの成分量の時系列データ1803,1804とのグループを特定する。次に、図19の説明に移行する。
図19において、情報処理装置100は、業務処理単位で業務判別情報を生成する。情報処理装置100は、例えば、成分ID1の業務処理の、各機能の処理量のうちの成分量の時系列データ1703,1704に基づいて、各機能の処理量のうちの成分量を識別可能に色分けし、成分量を累積した累積量の時間変化を示すグラフ1901を生成する。図中では、色分けを、例えば、ハッチで示す。グラフ1901は、成分ID1の業務処理の業務判別情報として用いられる。
ここで、情報処理装置100は、各機能の処理量のうちの成分量の単位が共通するため、成分量を累積し、累積量に纏めることができ、表示領域の低減化を図ると共に、分析者1300が参照するグラフ数の低減化を図ることができる。このように、情報処理装置100は、業務判別情報を参照しやすくすることができ、分析者の作業負担の低減化を図ることができる。
情報処理装置100は、例えば、成分ID2の業務処理の、各機能の処理量のうちの成分量の時系列データ1803,1804に基づいて、各機能の処理量のうちの成分量を識別可能に色分けし、成分量を累積した累積量の時間変化を示すグラフ1902を生成する。図中では、色分けを、例えば、ハッチで示す。グラフ1902は、成分ID1の業務処理の業務判別情報として用いられる。
ここで、情報処理装置100は、各機能の処理量のうちの成分量の単位が共通するため、成分量を累積し、累積量に纏めることができ、表示領域の低減化を図ると共に、分析者1300が参照するグラフ数の低減化を図ることができる。このように、情報処理装置100は、業務判別情報を参照しやすくすることができ、分析者の作業負担の低減化を図ることができる。次に、図20の説明に移行する。
図20において、情報処理装置100は、業務処理単位で、各リソースの負荷量のうちの成分量の時系列データに対応付けて、生成した業務判別情報をディスプレイに表示することにより、分析者1300に提示する。情報処理装置100は、例えば、成分ID1の業務処理の、各リソースの負荷量のうちの成分量の時系列データ1701,1702に対応付けて、生成したグラフ1901をディスプレイに表示する。ここでは、対応付けは、同じ行に並べて表示することである。
情報処理装置100は、例えば、成分ID2の業務処理の、各リソースの負荷量のうちの成分量の時系列データ1801,1802に対応付けて、生成したグラフ1902をディスプレイに表示する。ここでは、対応付けは、同じ行に並べて表示することである。これにより、情報処理装置100は、業務判別情報を頼りに、各リソースの負荷量のうちの成分量が、具体的にいずれの種別の業務処理に対応するのかを、分析者1300が判断しやすくすることができる。次に、図21の説明に移行する。
図21において、分析者1300は、業務判別情報を頼りに判断した業務処理の種別に基づいて、それぞれの業務処理の業務量を、情報処理装置100に設定する。分析者1300は、例えば、成分ID1の業務処理が、A画面のみにアクセスする傾向があるため、休暇申請の業務処理と予想し、成分ID1の業務処理の将来の業務量を130に設定する。分析者1300は、例えば、成分ID2の業務処理が、A画面とB画面とのいずれにもアクセスする傾向があるため、休暇承認の業務処理と予想し、成分ID2の業務処理の将来の業務量を100に設定する。情報処理装置100は、設定された業務量を、図9に示した業務量テーブル900を用いて記憶する。次に、図22の説明に移行する。
図22において、情報処理装置100は、業務処理ごとに、将来の、各リソースの負荷量のうちの当該業務処理に関わる成分量の予測値を算出する。情報処理装置100は、例えば、下記式(11)により、業務処理ごとに、将来の、各リソースの負荷量のうちの当該業務処理に関わる成分量の予測値を算出し、将来の、各リソースの負荷量のうちの当該業務処理に関わる成分量の予測値の時系列データを生成する。
成分量の予測値=業務量i・成分量i ・・・(11)
情報処理装置100は、将来の、各リソースの負荷量のうちの業務処理に関わる成分量の予測値の時系列データをディスプレイに表示することにより、分析者1300に提示する。このように、情報処理装置100は、業務処理ごとに、リソースの負荷量のうちの当該業務処理に関わる成分量の時間変化をシミュレーションした結果を、分析者1300が参照可能にすることができる。
また、情報処理装置100は、業務処理システム200における、将来の、各リソースの負荷量の予測値を算出する。情報処理装置100は、例えば、下記式(12)により、業務処理システム200における、将来の、各リソースの負荷量の予測値を算出し、将来の、各リソースの負荷量の予測値の時系列データを生成する。
負荷量の予測値=Σi業務量i・成分量i ・・・(12)
情報処理装置100は、具体的には、時系列データ1701に130を乗算した結果と、時系列データ1801に100を乗算した結果とを加算して得られる時系列データ2201をディスプレイに表示する。また、情報処理装置100は、具体的には、時系列データ1702に130を乗算した結果と、時系列データ1802に100を乗算した結果とを加算して得られる時系列データ2202をディスプレイに表示する。
情報処理装置100は、将来の、各リソースの負荷量の予測値の時系列データをディスプレイに表示することにより、分析者1300に提示する。このように、情報処理装置100は、業務処理システム200について、複数の業務処理の実行時のリソースの負荷量の時間変化をシミュレーションした結果を、分析者1300が参照可能にすることができる。
これにより、分析者1300は、それぞれのリソースの負荷量の予測値を考慮して、業務処理装置201におけるリソースの増設、および、業務処理システム200に含まれる業務処理装置201の増設などを検討することができる。このため、分析者1300は、業務処理システム200の利便性、耐障害性、処理性能などの確保または向上を図ることができる。次に、図23の説明に移行する。
図23において、情報処理装置100は、将来の、各リソースの負荷量のうちの業務処理に関わる成分量の予測値の時系列データを、予測テーブル1000を用いて記憶する。また、情報処理装置100は、将来の、各リソースの負荷量の予測値の時系列データを、全体予測テーブル1100を用いて記憶する。
(全体処理手順)
次に、図24を用いて、情報処理装置100が実行する、全体処理手順の一例について説明する。全体処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
図24は、全体処理手順の一例を示すフローチャートである。図24において、情報処理装置100は、開始トリガーを受け付ける(ステップS2401)。開始トリガーは、例えば、定期的なタイミングで自動的に発生するトリガー、または、分析者1300の操作入力により発生するトリガーなどである。分析者1300の操作入力は、例えば、将来のリソースの負荷量の見積もりを開始する際の操作入力である。
次に、情報処理装置100は、1以上の業務処理装置201のそれぞれの業務処理装置201から、リソースの負荷量と機能の処理量とを収集し、全体の稼働データを取得する(ステップS2402)。そして、情報処理装置100は、取得した全体の稼働データのリソースの負荷量と機能の処理量とを正規化する(ステップS2403)。
次に、情報処理装置100は、正規化したリソースの負荷量と機能の処理量とを統合し、全体の正規化稼働データを生成する(ステップS2404)。そして、情報処理装置100は、生成した全体の正規化稼働データを、1日単位に分割する(ステップS2405)。
次に、情報処理装置100は、1日単位に分割した日単位稼働データをベクトル化し、各日のベクトルを、列として並べた稼働データ行列を生成する(ステップS2406)。そして、情報処理装置100は、基底数に基づいて、生成した稼働データ行列に対して非負値行列因子分解を実施し、基底行列および重み行列を生成する(ステップS2407)。
次に、情報処理装置100は、基底行列に含まれる、業務処理単位に対応する基底ベクトルに含まれる業務処理単位での1以上の成分量を、リソースおよび機能に分離する(ステップS2408)。そして、情報処理装置100は、業務処理単位で、機能に分離した成分量のグループに基づいて、業務判別情報を生成する(ステップS2409)。
次に、情報処理装置100は、業務処理単位で、リソースに分離した成分量のグループに、業務判別情報を付与する(ステップS2410)。そして、情報処理装置100は、分析者1300に、業務処理単位で、リソースに分離した成分量のグループと、リソースに分離した成分量のグループに付与した業務判別情報とを対応付けて提示する(ステップS2411)。
次に、情報処理装置100は、業務処理単位で業務量の設定を受け付ける(ステップS2412)。そして、情報処理装置100は、設定された業務量に基づいて、将来のリソースの負荷量の時間変化を算出する(ステップS2413)。その後、情報処理装置100は、分析者1300に、将来のリソースの負荷量の時間変化を提示する(ステップS2414)。
そして、情報処理装置100は、全体処理を終了する。これにより、情報処理装置100は、分析者1300が、リソースに分離した成分量のグループが、具体的にいずれの種別の業務処理に対応するのかを判断可能にすることができる。そして、情報処理装置100は、分析者1300が、将来のリソースの負荷量の時間変化を分析可能にすることができる。
ここで、情報処理装置100は、図24の一部ステップの処理を省略してもよい。例えば、ステップS2412〜S2414の処理が省略され、分析者1300に、将来のリソースの負荷量の時間変化を提示しない場合があってもよい。また、例えば、ステップS2412〜S2414の処理が、情報処理装置100とは異なる装置によって実行される場合があってもよい。
以上説明したように、情報処理装置100によれば、いずれかの業務処理について、各リソースの負荷量のうちの当該業務処理に関わる成分量の時系列データと、各機能の処理量のうちの当該業務処理に関わる成分量の時系列データとを取得することができる。情報処理装置100によれば、いずれかの業務処理について、各リソースの負荷量のうちの当該業務処理に関わる成分量の時系列データに対応付けて各機能の処理量のうちの当該業務処理に関わる成分量の時系列データを、各機能を識別可能に表示することができる。これにより、情報処理装置100は、リソースの負荷量のうちのいずれかの業務処理に関わる成分量が、具体的にいずれの種別の業務処理に対応するのかを、分析者が判断しやすくすることができる。
情報処理装置100によれば、各機能の処理量のうちのいずれかの業務処理に関わる成分量を積み上げた積み上げ量の時系列データを、各機能を識別可能に表示することができる。これにより、情報処理装置100は、分析者が参照する時系列データの数の増加を抑制することができ、分析者の作業負担の低減化を図ることができる。
情報処理装置100によれば、各リソースの負荷量の時系列データと、各機能の処理量の時系列データとを取得することができる。情報処理装置100によれば、取得した各種時系列データに基づいて、各リソースの負荷量と、各機能の処理量とを要素とする、一定時間間隔ごとのベクトルのそれぞれを列または行として含む行列を生成することができる。情報処理装置100によれば、生成した行列に対して非負値行列因子分解を実施し、所定の数分の基底ベクトルのそれぞれを列または行として含む基底行列を生成することができる。情報処理装置100によれば、生成した基底行列に含まれる所定の数分の基底ベクトルのそれぞれが表す複数の成分量を、各リソースと各機能とについて分離することができる。これにより、情報処理装置100は、それぞれの業務処理について、各リソースの負荷量のうちの当該業務処理に関わる成分量の時系列データと、各機能の処理量のうちの当該業務処理に関わる成分量の時系列データとを取得することができる。
情報処理装置100によれば、各リソースの負荷量のうちのそれぞれの業務処理に関わる成分量の時系列データを取得することができる。情報処理装置100によれば、それぞれの業務処理の業務量の指定を受け付けることができる。情報処理装置100によれば、取得した各リソースの負荷量のうちのそれぞれの業務処理に関わる成分量の時系列データと、指定を受け付けたそれぞれの業務処理の業務量とに基づいて、将来の、各リソースの負荷量の予測値の時系列データを生成することができる。これにより、情報処理装置100は、将来の各リソースの負荷量についてのシミュレーションを実施することができる。
情報処理装置100によれば、負荷量と処理量とを、正規化して扱うことができる。これにより、情報処理装置100は、非負値行列因子分解において、各リソースの負荷量と、各機能の処理量とを、等価に扱いやすくすることができる。このため、情報処理装置100は、非負値行列因子分解において、リソースの負荷量に関する評価関数の値と、機能の処理量に関する評価関数の値とのいずれか一方が重視される問題を回避しやすくすることができる。
情報処理装置100によれば、1以上のリソースとして、CPUとメモリと通信帯域との少なくともいずれかを採用することができる。これにより、情報処理装置100は、CPUとメモリと通信帯域との少なくともいずれかの負荷量のうちの成分量を、分析者に提示することができる。
情報処理装置100によれば、1以上のリソースとして、同一の機器における異なる種類のリソースを採用することができる。これにより、情報処理装置100は、1つの業務処理が同一の機器における異なる種類のリソースに影響する場合に、1つの業務処理に対応する形式で、同一の機器における異なる種類のリソースの負荷量のうちの成分量の時系列データを取得することができる。
情報処理装置100によれば、1以上のリソースとして、異なる機器におけるリソースを採用することができる。これにより、情報処理装置100は、1つの業務処理が異なる機器におけるリソースに影響する場合に、1つの業務処理に対応する形式で、異なる機器におけるリソースの負荷量のうちの成分量の時系列データを取得することができる。
情報処理装置100によれば、1以上の機能として、少なくとも所定の画面にアクセスする機能を採用することができる。これにより、情報処理装置100は、分析者が、種別が不明な業務処理において、いずれの画面にアクセスする傾向があるかを参照可能にすることができ、具体的にいずれの種別の業務処理であるかを判断しやすくすることができる。
情報処理装置100によれば、所定の数を、1以上のリソースの少なくともいずれかのリソースを使用して実行される業務処理の数に基づいて設定することができる。これにより、情報処理装置100は、業務処理単位で、各リソースの負荷量のうちの成分量の時系列データと、各機能の処理量のうちの成分量の時系列データとのグループを、精度よく取得可能にすることができる。また、情報処理装置100は、基底ベクトルの数の低減化を図り、非負値行列因子分解にかかる処理量の低減化を図ることができる。
情報処理装置100によれば、所定の数を、ベクトルの次元の数に基づいて設定することができる。これにより、情報処理装置100は、業務処理の数が不明でも、業務処理単位で、各リソースの負荷量のうちの成分量の時系列データと、各機能の処理量のうちの成分量の時系列データとのグループを、精度よく取得可能にすることができる。
なお、本実施の形態で説明したシステム分析方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明したシステム分析プログラムは、ハードディスク、フレキシブルディスク、CD(Compact Disc)−ROM、MO、DVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明したシステム分析プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)複数の業務処理のいずれかの業務処理について、前記複数の業務処理に使用されるリソースの負荷量のうちの前記いずれかの業務処理に関わる成分量の時系列データと、前記複数の業務処理に使用される機能の処理量のうちの前記いずれかの業務処理に関わる成分量の時系列データとを取得し、
取得した前記リソースの負荷量のうちの前記いずれかの業務処理に関わる成分量の時系列データに対応付けて、取得した前記機能の処理量のうちの前記いずれかの業務処理に関わる成分量の時系列データを、前記機能を識別可能に表示する、
処理をコンピュータが実行することを特徴とするシステム分析方法。
(付記2)前記表示する処理は、
取得した前記リソースの負荷量のうちの前記いずれかの業務処理に関わる成分量の時系列データに対応付けて、取得した前記機能の処理量のうちの前記いずれかの業務処理に関わる成分量を積み上げた積み上げ量の時系列データを、前記機能を識別可能に表示する、ことを特徴とする付記1に記載のシステム分析方法。
(付記3)前記リソースの負荷量の時系列データと、前記機能の処理量の時系列データとを取得し、
取得した前記リソースの負荷量の時系列データと、取得した前記機能の処理量の時系列データとに基づいて、前記リソースの負荷量と、前記機能の処理量とを要素とするベクトルを列または行として含む行列を生成し、
生成した前記行列に対して非負値行列因子分解を実施し、所定の数分の基底ベクトルのそれぞれを列または行として含む基底行列を生成し、
生成した前記基底行列に含まれる前記所定の数分の基底ベクトルのそれぞれが表す複数の成分量を、前記リソースと前記機能とについて分離することにより、前記複数の業務処理のそれぞれの業務処理について、前記リソースの負荷量のうちの当該業務処理に関わる成分量の時系列データと、前記機能の処理量のうちの当該業務処理に関わる成分量の時系列データとを取得する、処理を前記コンピュータが実行する、ことを特徴とする付記1または2に記載のシステム分析方法。
(付記4)前記リソースの負荷量のうちの前記複数の業務処理のそれぞれの業務処理に関わる成分量の時系列データを取得し、
前記それぞれの業務処理の業務量の指定を受け付け、
取得した前記リソースの負荷量のうちの前記複数の業務処理のそれぞれの業務処理に関わる成分量の時系列データと、前記指定を受け付けた前記それぞれの業務処理の業務量とに基づいて、前記リソースの負荷量の時系列データを生成し、
生成した前記時系列データを出力する、処理を前記コンピュータが実行する、ことを特徴とする付記1〜3のいずれか一つに記載のシステム分析方法。
(付記5)前記負荷量と前記処理量とは、正規化された量である、ことを特徴とする付記1〜4のいずれか一つに記載のシステム分析方法。
(付記6)前記リソースは、CPUとメモリと通信帯域とのいずれかである、ことを特徴とする付記1〜5のいずれか一つに記載のシステム分析方法。
(付記7)前記リソースは、同一の機器における異なる種類のリソースのそれぞれである、ことを特徴とする付記1〜6のいずれか一つに記載のシステム分析方法。
(付記8)前記リソースは、異なる機器におけるリソースのそれぞれである、ことを特徴とする付記1〜7のいずれか一つに記載のシステム分析方法。
(付記9)前記機能は、所定の画面にアクセスする機能である、ことを特徴とする付記1〜8のいずれか一つに記載のシステム分析方法。
(付記10)前記所定の数は、前記リソースを使用して実行される業務処理の数に基づいて設定される、ことを特徴とする付記3に記載のシステム分析方法。
(付記11)前記所定の数は、前記ベクトルの次元の数に基づいて設定される、ことを特徴とする付記3に記載のシステム分析方法。
(付記12)複数の業務処理のいずれかの業務処理について、前記複数の業務処理に使用されるリソースの負荷量のうちの前記いずれかの業務処理に関わる成分量の時系列データと、前記複数の業務処理に使用される機能の処理量のうちの前記いずれかの業務処理に関わる成分量の時系列データとを取得し、
取得した前記リソースの負荷量のうちの前記いずれかの業務処理に関わる成分量の時系列データに対応付けて、取得した前記機能の処理量のうちの前記いずれかの業務処理に関わる成分量の時系列データを、前記機能を識別可能に表示する、
処理をコンピュータに実行させることを特徴とするシステム分析プログラム。