【文献】
Jeffrey Richter,プログラミング Microsoft .NET Framework,日本,日経BP社,2011年 2月 7日,第3版,p.613-620, 635-636, 647, 661-664,ISBN:978-4-8222-9416-8
【文献】
シンプルかつ直感的な操作性で音楽制作のワークフローが大幅に向上 Studio One 2 Professional,Mac People,日本,株式会社アスキー・メディアワークス,2012年 3月29日,Vol.18 No.7,p.161
【文献】
柴田 文彦,超新星ブラウザーGoogle Chromeの衝撃,Mac People,日本,株式会社アスキー・メディアワークス,2008年11月 1日,Vol.14 No.11,p.20-21
【文献】
ヒノケン,Javaの底力 火消しエンジニアが明かすテクニック 第1回 Linux環境でのトラブルシューティング Linux環境でのトラブルシューティング,WEB+DB PRESS,日本,(株)技術評論社,2012年 7月25日,Vol.69 初版,p.120-128
(58)【調査した分野】(Int.Cl.,DB名)
前記複数のプログラムは、一のプラットフォームのプログラムと、一以上のアドインのプログラムを含み、前記プラットフォームのプログラムは、前記アドインのプログラムから取得された情報を表示する、
請求項1または2に記載の情報処理装置。
【発明を実施するための形態】
【0013】
以下、本発明の実施形態を図面に基づいて説明する。
【0014】
1.システムの概要
2.ハードウェア構成
3.機能構成
4.動作例
なお、本明細書では、プログラムの語を、アプリケーション又はライブラリを含む概念として、使用する。
【0015】
≪ 1. システムの概要 ≫
図1は、本発明の一実施形態におけるシステムの概要を表す図である。システムは、情報処理装置1と一以上の監視装置2a、2b(以下、まとめて監視装置2と表現する)を含む。情報処理装置1は、例えば、工業プラント内に設置されるコンピュータであり、Microsoft社の提供する.NET Frameworkの実行環境(ランタイム)を備えている。
【0016】
情報処理装置1には、プラットフォームと呼ばれるプログラム(アプリケーション)がインストールされている。プラットフォームは、プラント内のネットワークを介して接続された監視装置2から送信される情報をはじめ、カレンダー情報や、プラント内の設備一覧の情報等、プラントの管理者に有用な情報を、一元的に表示するアプリケーションである。これらの情報は、プラットフォーム向けに開発された、DLL形式のアドインのプログラム(ライブラリ)によって提供される。
【0017】
図2は、プラットフォームの表示する画面の例を表す。
図2に示すように、プラットフォーム(ここでは、「マルチプラットフォーム」と名付けられている)のウィンドウの内部に、複数のアドインの表示領域が含まれる。各アドインは、これらの表示領域を利用して、様々な情報を表示することができる。
【0018】
また、プラットフォームは、アドインごとに、使用するリソースの情報(以下、「リソース情報」とする)を取得し、出力することができる。リソース情報には、例えば、1秒あたりのCPU使用率や、メモリ使用量(瞬時値)が含まれる。プラットフォームは、管理者等からの指示があった場合、あるいは、所定の条件が満たされた場合に、
図3に例示されるアドイン管理画面を表示し、アドインの使用するリソース情報を一覧表示する。管理者等は、例えば、情報処理装置1のシステム負荷が異常に高くなっているとき、アドインがその原因となっていないか確認することができる。
【0019】
プラットフォームは、DLL形式のアドインの各々のリソース情報を得るために、.NET Frameworkのアプリケーションドメインの機能を使用する。アプリケーションドメインとは、CPUやメモリ等のリソースを管理する一単位であり、一のプロセス内で動作する。プラットフォームは、各アドインを、アドインごとに異なるアプリケーションドメイン内で動作させる。プラットフォームは、各アプリケーションドメインのリソース情報を取得し、このリソース情報を、アドインのリソース情報とみなすことにより、アドインごとのリソース情報を得ることができる。
【0020】
図4は、プラットフォーム及びアドインのアプリケーションドメインの構成例を示している。プラットフォームの実行ファイル10は、機能拡張用のDLLであるアドインA11と、アドインB12をロードする。ここで、
図4には、プラットフォーム10がロードするライブラリA13(非アドイン)と、アドインB12がロードするライブラリB14(非アドイン)も記載されている。プラットフォーム10(及びライブラリA13)は、アプリケーションドメインA15で動作する。一方で、アドインA11は、プラットフォームのアプリケーションドメインA15とは異なる、アプリケーションドメインB16で動作する。さらに、アドインB12(及びライブラリB14)は、プラットフォーム及びアドインA11のアプリケーションドメインA、Bとは異なる、アプリケーションドメインC17で動作する。
【0021】
以上のように、本発明の一実施形態における情報処理装置1により、プラットフォームとなるアプリケーション上で動作する、DLL形式のアドインのリソース使用状況を把握することができる。その結果、情報処理装置1の負荷が異常に高い場合等に、如何なるアドインが原因となっているかを突き止めることが可能となる。
【0022】
なお、情報処理装置1は、プラント内に設置されたコンピュータの例に限られず、任意の場所に設置された、任意のコンピュータであってもよい。
【0023】
≪ 2. ハードウェア構成 ≫
図5は、本発明の一実施形態における情報処理装置1のハードウェア構成例を表す図である。
図1に例示される情報処理装置1は、CPU21と、ROM22と、RAM23と、HDD(Hard Disk Drive)/SSD(Solid State Drive)24と、NIC(Network Interface Card)25と、ディスプレイ26と、キーボード27と、マウス28と、バス29を有する。
【0024】
CPU21は、情報処理装置1の動作制御を行うOS及びシステムプログラム、並びに、プラットフォーム等のアプリケーションを実行する。ROM22は、CPU21が実行するシステムプログラム等を記憶する。RAM23は、CPU21のワークエリアを構成する。HDD/SSD24は、プラットフォームやアドイン等のプログラムやライブラリ、監視装置2から受け取ったデータ等を記憶する。NIC25は、有線の通信インターフェースとその制御装置を含み、外部の装置と通信を行うために用いられる。ディスプレイ26は、液晶ディスプレイ及びグラフィックスコントローラを含み、ユーザに対して情報を提示する。キーボード27及びマウス28は、管理者等から入力を受け付ける。バス29は、当該情報処理装置1を構成する上記の装置を相互に接続し、データのやり取りを行う。
【0025】
上記構成により、本発明の一実施形態における情報処理装置1は、.NET Frameworkのランタイム上で、プラットフォーム及びアドインを動作させ、アドインごとのリソース情報を出力することができる。
【0026】
≪ 3. 機能構成 ≫
次に、
図6を用いて、本発明の一実施形態における情報処理装置1の機能ブロックを説明する。
図6には、情報処理装置1が備える様々な要素のうち、本実施形態の説明に特に関連する要素が示されている。
図6に示される情報処理装置1は、アドイン格納部51と、登録部52と、制御部53と、条件格納部54、取得部55と、閾値格納部56と、比較部57と、出力制御部58と、出力部59と、表示部60と、通信部61とを有する。
【0027】
アドイン格納部51は、HDD/SSD24によって実現され、DLL形式で提供されるアドインのプログラムを格納する。
【0028】
登録部52は、主にCPU21の処理によって実現され、アドイン格納部51に格納されたアドインを読み込み、アドインごとに、異なるアプリケーションドメインを定義する。そして、各アドインを、定義したアプリケーションドメインに、それぞれ登録する。また、登録部52は、プラットフォームを、アドインのアプリケーションドメインと異なるアプリケーションドメインに登録する。なお、このように定義された各アドイン及びプラットフォームのアプリケーションドメインは、一のプロセス内で動作する。
【0029】
制御部53は、主にCPU21の処理によって実現される、.NET Framworkのランタイムである。.NET Frameworkは、アプリケーションドメイン単位で、CPUやメモリ等のリソースを管理する。また、.NET Frameworkは、アプリケーションドメインを定義するクラス(AppDomain)のプロパティを通じて、アプリケーションドメインで使用されているリソース情報を提供する。
【0030】
条件格納部54は、HDD/SSD24によって実現され、アドインごとの、リソース情報の取得条件又は出力条件を格納する。具体的な条件の例は、以下の通りである。
(1)リソース情報の取得対象か否か
(2)リソース情報の出力対象か否か
(3)リソース情報の出力周期
上記の他に、リソース情報の取得又は出力に関する、他の条件が任意に定義され得る。
【0031】
取得部55は、主にCPU21の処理によって実現され、登録部52が登録したアプリケーションドメインの使用するリソース情報を、条件格納部54に格納された条件(1)に従って、取得する。すなわち、取得部55は、条件格納部54で、「リソース情報の取得対象」となっているアドインに対応する、アプリケーションドメインのリソース情報を取得する。
【0032】
ここで、リソース情報は、例えば、1秒あたりのCPU使用率(%)又はメモリ使用量(バイト;瞬時値)である。1秒あたりのCPU使用率は、.NET Frameworkの提供する機能(例えば、AppDomainクラスのMonitoringTotalProcessorTimeプロパティ)により取得される、アプリケーションドメインの使用したCPU時間に基づいて、算出することができる。具体的な算出方法については、後述する。また、メモリ使用量(瞬時値)も、同様に、.NET Frameworkの提供する機能(例えば、AppDomainクラスのMonitoringSurvivedMemorySize プロパティ等)により、取得され得る。
【0033】
また、取得部55は、プラットフォーム及びアドインのアプリケーションドメインの動作する一のプロセスのリソース情報を取得する。プロセスのリソース情報は、.NET Frameworkの機能(例えば、ProcessクラスのTotalProcessorTimeプロパティや、AppDomainクラスのMonitoringSurvivedProcessMemorySizeプロパティ)により、取得することができる。
【0034】
以下では、上述した二種類のリソース情報(各アプリケーションドメインのリソース情報と、プロセスのリソース情報)とを区別して説明する。
【0035】
閾値格納部56は、HDD/SSD24によって実現され、アプリケーションドメインのリソース情報に対する閾値と、プロセスのリソース情報に対する閾値とを格納する。上述したように、リソース情報は、例えば、1秒あたりのCPU使用率又はメモリ使用量である。各閾値は、当該情報処理装置1の管理者により、予め設定される。閾値は、アプリケーションドメインの数(すなわち、アドインの数)に応じて設定される。
【0036】
比較部57は、主にCPU21の処理によって実現され、取得部55の取得したリソース情報の示す値(CPU使用率又はメモリ使用量)を、閾値格納部56に格納された閾値と比較する。そして、リソース情報が閾値以上である場合に、その旨を出力制御部58に通知する。
【0037】
出力制御部58は、主にCPU21の処理によって実現され、取得部55が取得したアプリケーションドメインのリソース情報が、条件格納部54に格納された条件(2)(3)に従って出力されるよう、制御する。すなわち、出力制御部58は、取得部55が取得したリソース情報のうち、条件格納部54で、「リソース情報の出力対象」とされているアドインのリソース情報が、「リソース情報の出力周期」で出力されるよう、出力部59を制御する。
【0038】
また、出力制御部58は、比較部57からの通知に応じて、取得されたアプリケーションドメインのリソース情報の示す値が、閾値以上である場合にのみ、当該アプリケーションドメインのリソース情報を出力させるよう、出力部59に指示してもよい。
【0039】
また、出力制御部58は、比較部57からの通知に応じて、取得されたプロセスのリソース情報の示す値が、閾値以上である場合にのみ、各アプリケーションドメインのリソース情報を出力させるよう、出力部59に指示してもよい。
【0040】
また、出力制御部58は、ネットワークを介して監視装置2から受け取った情報を、出力部59に出力させる。
【0041】
出力部59は、主にCPU21の処理によって実現され、出力制御部58からの指示に基づいて、アプリケーションドメインのリソース情報を、対応するアドインのリソース情報として出力する。出力部59は、リソース情報を、当該情報処理装置1のディスプレイ26に表示させる。また、出力部59は、リソース情報を、通信部61を介して、他の情報処理装置に送信してもよい。
【0042】
また、出力部59は、ネットワークを介して監視装置2から受け取った情報を、表示部60に出力する。
【0043】
表示部60は、主にディスプレイ26によって実現され、出力部59の出力した、アドインのリソース情報や、監視装置2から受け取った情報を、表示する。
【0044】
通信部61は、主にNIC25によって実現され、出力部59の出力した、アドインのリソース情報を、他の情報処理装置に送信する。
【0045】
以上の機能により、本発明の一実施形態における情報処理装置1は、DLL形式のアドインを個別のアプリケーションドメイン内で動作させることにより、各アドインの使用するリソース情報を取得することができる。また、使用中のリソースが、予め定められた量以上となった場合に、当該リソースの情報を表示させることで、管理者は、必要に応じて、何れのアドインがリソースを消費しているかを特定することができる。
【0046】
≪ 4. 動作例 ≫
次に、
図7−
図9を用いて、本発明の一実施形態における情報処理装置1の処理フローを説明する。また、当該処理を実現するためのソースコードの一部を、
図10−
図12に例示する。
図7は、出力対象であるアドインのリソース情報を全て出力する処理を表し、
図8は、取得対象であるアドインのリソース情報の閾値を用いる処理を表し、
図9は、プロセスのリソース情報の閾値を用いる処理を表している。以下、順に説明する。なお、以下では、リソース情報が、1秒あたりのCPU使用率又はメモリ使用量である場合の例を用いて、説明する。
【0047】
≪ リソース情報を全て出力する例≫
図7は、本発明の一実施形態における情報処理装置1が、出力対象であるアドインのリソース情報を、全て出力する処理を表している。当該処理は、一定間隔で繰り返し実行されてもよいし、何らかのイベントに従って不定期に実行されてもよい。
【0048】
ステップ100において、登録部52は、アドイン格納部51に予め格納されたDLL形式のアドインを読み込み、そのアドインごとに、アプリケーションドメインを作成する。
図10は、登録部52が、アドインを読み込むためのソースコードであり、
図11の主に6行目から13行目までは、登録部52が、アプリケーションドメインを作成するためのソースコードである。
【0049】
ステップ101において、登録部52は、ステップ100で作成した各アプリケーションドメインに、各アドインを登録する。
図11の15行目は、登録部52が、アドインを、アプリケーションドメインに登録するためのソースコードである。
【0050】
ステップ102において、取得部55及び出力制御部58は、それぞれ、条件格納部54に格納された条件を読み込む。条件は、アドイン毎に予め定義されており、取得部55によってリソース情報が取得されるか否か、出力制御部58によってリソース情報が出力されるか否か、あるいは、出力制御部58がリソース情報を出力する周期を定める。
【0051】
ステップ103において、取得部55は、ステップ102で読み込んだ条件に従って、取得対象となっているアドインのCPU使用率及びメモリ使用量を取得する。ここで、取得部55は、各アプリケーションドメインのCPU使用率を、制御部53より直接取得することができない。そこで、取得部55は、各アプリケーションドメインの使用したCPU時間の合計時間を、制御部53より取得する。
図12の5行目は、アプリケーションドメインのメモリ使用量を取得するためのソースコードを表し、
図12の9行目は、アプリケーションドメインが使用したCPU時間を取得するためのソースコードを表している。
【0052】
ステップ104において、取得部55は、ステップ103で取得したCPU時間から、単位時間(1秒)あたりのCPU使用率を算出する。
図12の10行目から18行目は、前回取得したCPU時間及びその時刻と、今回取得したCPU時間及び現在時刻の情報を用いて、1秒あたりのCPU使用率を算出するためのソースコードを表している。
【0053】
ステップ105において、出力制御部58は、ステップ102で読み込んだ条件に従い、出力対象となっているアドインを対象として、ステップ103、104で取得したCPU使用率とメモリ使用量を、アドインのCPU使用率とメモリ使用量として出力させる。
【0054】
この後、表示部60は、出力部59の出力した、
図3のような画面を表示する。画面には、アドインの一覧と、各アドインのCPU使用率及びメモリ使用量が含まれる。
【0055】
以上により、DLL形式で提供されるアドインが使用するCPU使用率やメモリ使用量を容易に把握できるようになる。
【0056】
≪ 閾値を用いる例≫
図8は、本発明の一実施形態における情報処理装置1が、閾値を用いて、アドインのリソース情報を出力する処理を表している。当該処理は、一定間隔で繰り返し実行されてもよいし、何らかのイベントに従って不定期に実行されてもよい。
【0057】
ステップ200−ステップ204は、
図7のステップ100−104と同様である。
【0058】
ステップ205において、比較部57は、閾値格納部56に格納された、アプリケーションドメインのリソース情報に対する閾値を読み込む。ここでは、アプリケーションのCPU使用率の閾値及びメモリ使用量の閾値が読み込まれる。
【0059】
ステップ206において、比較部57は、ステップ203、204で取得したCPU使用率及びメモリ使用量と、ステップ205で読み込んだ閾値とを、それぞれ比較する。
【0060】
ステップ207において、出力制御部58は、出力対象となっているアドインのうち、閾値以上のCPU使用率及びメモリ使用量を示すアプリケーションドメインと対応するアドインの情報を、出力部59に出力させる。
【0061】
以上により、CPU使用率及び/又はメモリ使用量が、予め設定された閾値を超えるアドインを容易に特定することが可能となる。また、全てのアドインの情報を出力する場合に比べて、出力及び表示にかかる負荷が低減される。
【0062】
≪ プロセスの閾値を用いる例≫
図9は、本発明の一実施形態における情報処理装置1が、プロセスのリソース情報を用いて、アドインのリソース情報を出力する処理を表している。当該処理は、一定間隔で繰り返し実行されてもよいし、何らかのイベントに従って不定期に実行されてもよい。
【0063】
ステップ300−ステップ304は、
図7のステップ100−104又は
図8のステップ200−204と同様である。
【0064】
ステップ305において、取得部55は、プラットフォーム及びアドインのアプリケーションドメイン全体が動作するプロセスのCPU使用率及びメモリ使用量を取得する。
【0065】
ステップ306において、比較部57は、閾値格納部56に格納された、プロセスのリソース情報に対する閾値を読み込む。ここでは、プロセスのCPU使用率の閾値及びメモリ使用量の閾値が読み込まれる。
【0066】
ステップ307において、比較部57は、ステップ305で取得したCPU使用率及びメモリ使用量と、ステップ306で読み込んだ閾値とを、それぞれ比較する。
【0067】
ステップ308において、プロセスのCPU使用率とメモリ使用量の何れか、又は両方が、閾値以上であれば、ステップ309に進み、そうでない場合には、処理を終了する。
【0068】
ステップ309において、出力制御部58は、出力対象となっているアドインの情報を、出力部59に出力させる。
【0069】
以上により、プラットフォームの動作するプロセス全体のCPU使用率及び/又はメモリ使用量が、予め設定された閾値を超える場合に、各アドインのCPU使用率とメモリ使用量を出力することができる。その結果、管理者は、プラットフォームが高い負荷を示している場合に、その負荷の原因となっているアドインを、容易に特定することができる。
【0070】
なお、
図8を用いて説明した、アプリケーションドメインのリソース情報に対する閾値と、
図9を用いて説明した、プロセスのリソース情報に対する閾値は、組み合わせて使用されてもよい。