JP2020177424A - 情報処理装置およびその制御方法、並びにプログラム - Google Patents

情報処理装置およびその制御方法、並びにプログラム Download PDF

Info

Publication number
JP2020177424A
JP2020177424A JP2019078849A JP2019078849A JP2020177424A JP 2020177424 A JP2020177424 A JP 2020177424A JP 2019078849 A JP2019078849 A JP 2019078849A JP 2019078849 A JP2019078849 A JP 2019078849A JP 2020177424 A JP2020177424 A JP 2020177424A
Authority
JP
Japan
Prior art keywords
application
operating
operating environment
applications
information processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019078849A
Other languages
English (en)
Inventor
史朗 九里
Shiro Kuri
史朗 九里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2019078849A priority Critical patent/JP2020177424A/ja
Publication of JP2020177424A publication Critical patent/JP2020177424A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】アプリが動作する動作環境が複数動作可能である情報処理装置において、あるアプリにて問題が発生した際に、他のアプリへの影響を無くす。【解決手段】1または複数のアプリを動作させるための動作環境が複数、動作可能な情報処理装置であって、アプリの動作時における問題の発生を検知する検知手段と、動作している動作環境の中から、前記問題が発生した動作環境を特定する第1の特定手段と、前記第1の特定手段にて特定された動作環境において、前記問題の発生が検知されるまでに動作していた1または複数のアプリを特定する第2の特定手段と、前記第2の特定手段にて特定された1または複数のアプリが、新たな動作環境にて動作するように動作環境の変更を制御する制御手段とを有する。【選択図】 図4

Description

本発明は、情報処理装置およびその制御方法、並びにプログラムに関する。
従来、情報処理装置上で動作するアプリケーションの実行環境としてJava(登録商標、以下省略)が広く知られている。この実行環境では、Java言語で記述されたアプリケーション(以下、アプリ)が、Java Virtual Machine(JavaVM)上で動作する。1つのJavaVM上で複数のアプリを実行した場合、ある1つのアプリで不正な処理により問題が発生すると、同じJavaVM上で動作している他のアプリにも影響が出てしまう。そのため、1つのアプリを1つのJavaVM上で動作させることで、他のアプリに影響を与えないようにする技術が知られている。しかし、JavaVMの起動には資源が必要であるため、アプリ毎に異なるJavaVMを動作させると、大量の資源が必要になってしまう。そのため、画像形成装置のようにメモリやHDDなどの使用可能な資源が少ない情報処理装置では、アプリ毎に異なるJavaVMを動作させることは難しい。このための解決手段として、特許文献1のように、異なる役割のJavaVMを2つのみ起動することで、一方のJavaVM上で動作するアプリの影響がもう一方のJavaVM上で動作するアプリに影響を与えない技術が知られている。
特開2011−197827号公報
従来の方法により、一方のJavaVM上で動作するアプリの不正な処理が、もう一方のJavaVM上で動作するアプリに影響することはなくなる。しかし、従来の方法では、動作している複数のアプリのうちどのアプリが不正な処理を行っているかを特定することは難しいという課題がある。特に、あるアプリが大量のメモリを確保することによって他のアプリがメモリを確保できなくなったときに発生するメモリリーク(Javaの場合はOutOfMemoryError)のような場合、原因となっているアプリを特定することが難しい。難しい理由の一つとして、メモリリークが原因でシステムが停止したときに、動作していたアプリを特定したとしても、このアプリがメモリリークの直接の原因となるアプリではないことが挙げられる。
上記課題を解決するために本願発明は以下の構成を有する。すなわち、1または複数のアプリを動作させるための動作環境が複数、動作可能な情報処理装置であって、アプリの動作時における問題の発生を検知する検知手段と、動作している動作環境の中から、前記問題が発生した動作環境を特定する第1の特定手段と、前記第1の特定手段にて特定された動作環境において、前記問題の発生が検知されるまでに動作していた1または複数のアプリを特定する第2の特定手段と、前記第2の特定手段にて特定された1または複数のアプリが、新たな動作環境にて動作するように動作環境の変更を制御する制御手段とを有する。
本発明により、あるアプリにて問題が発生した際に、他のアプリへの影響を無くすことが可能となり、装置全体のセキュリティや堅牢性を向上させることができる。
本願発明の一実施形態に係る画像形成装置のハードウェア構成の例を示す図。 本願発明の一実施形態に係るソフトウェアのモジュール構成の例を示す図。 本願発明の一実施形態に係るJavaPF管理部の詳細を示す図。 本願発明の一実施形態に係る処理のフローチャート。 第1の実施形態に係るアプリの起動VM変更処理のフローチャート。 本願発明の一実施形態に係るJavaPF管理部の各モジュールのシーケンス図。 本願発明の一実施形態に係る問題アプリを特定するまでの流れを説明するための図。 本願発明の一実施形態に係るアプリの使用資源量を示す図。 第2の実施形態に係るアプリの起動VM変更処理のフローチャート。
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
<第1の実施形態>
以下、本発明の第1の実施形態について説明する。なお、本実施形態では、情報処理装置の一例として、画像形成装置を例に挙げて説明するが、これに限定するものではない。画像形成装置としては、MFP(Multi−Function Peripheral)などが該当する。
[ハードウェア構成]
図1は、本実施形態に係る画像形成装置100のハードウェア構成の例を示す。画像形成装置100は、コントローラユニット111および操作部106を含んで構成される。なお、ここでは、本実施形態に関連する部分のみを示すものとし、画像形成装置100の機能に応じて更なる部位を備えてよい。コントローラユニット111は、ログファイルやデバイス情報の入出力を行うだけではなく、画像形成装置100全体の制御や、ネットワークを介して外部へのデータ送信の制御も行う。
コントローラユニット111は、各種制御プログラムを実行するCPU101を有する。 CPU101は、ROM103に記憶されているブートプログラムに基づきシステムを起動する。そして、CPU101は、起動したシステム上でHDD(Hard Disk Drive)104に記憶されている制御プログラムを読み出してRAM102をワークエリアとして所定の処理を実行する。この制御プログラムにより、Javaプログラムなどの所定の制御を実行することが可能である。HDD104には、各種制御プログラムが記憶されるとともに、ログデータに関する全ての設定やネットワーク部107が有するすべての通信手段に関する情報を記憶する。
CPU101には、RAM102、ROM103、およびHDD104がシステムバス110を介して接続されている。さらに、CPU101には、操作部I/F105、ネットワーク部107、電源管理部109がシステムバス110を介して接続されている。操作部I/F105は、操作部106との間のインターフェース部であり、操作部106に表示する画像データの操作部106への転送、操作部106における操作入力により発生した信号のCPU101への転送などを行う。操作部106は、画像処理に関する各機能における現在の設定状態、各機能に関する設定情報を入力するための情報入力画面などを表示するための表示部、ユーザが各機能に対する設定情報を入力するキーなどを含む入力部を有する。
ネットワーク部107は、LAN(Local Area Network)108に接続され、LAN108を介した情報の入出力を行う。LAN回線にwebサーバや外部装置が接続されている場合は、それらの装置に対してLAN108を介して情報を出力することが可能である。また、LAN回線内のプロキシサーバなどを介して、インターネットに接続し、インターネット上のwebサーバにファイルを送信することも可能である。電源管理部109は、画像形成装置100の電源OFFと電源ONの管理を行う。なお、CPU101は、電源ONや電源OFFを検知した場合、上述のように、ROM103のブートプログラムやHDD104に記憶されている制御プログラムを実行する。これにより、画像形成装置100の初期化処理やシャットダウン処理を実行する。
[ソフトウェア構成]
次に、図2を用いて画像形成装置100のCPU101やHDD104などの各ハードウェア上で動作するソフトウェアのモジュール構成の例を説明する。なお、これらの各モジュールにおける処理は、CPU101の命令により、ROM103やHDD104に記憶されているプログラムを読み出し、RAM102をワークエリアとして所定の処理を実行することで実現している。また、所定の処理を実行することで生成される情報は、RAM102もしくはHDD104に記憶する。なお、このような各モジュールにおける処理は、以降でも同様であるため、以降では記載を省略する。また、本実施形態では、VMの例としてJavaVM(Java Virtual Machine)を例に挙げて説明するが、これに限定するものではない。他のプログラム言語にて実現される動作環境にて、本願発明は適用されてもよい。
OS201は、画像形成装置100全体のプロセス管理、メモリ管理、入出力管理等を行うモジュールであり、一般的なOS(Operating System)と同様の処理を行う。Javaプラットフォーム(JavaPF)管理部202は、Javaのプロセスの監視、起動、アプリ動作環境の変更を行うモジュールである。JavaPF管理部202は、図3に示すモジュールから構成される。なお、図2では、プロセスは2つのみしか記載していないが、JavaPF管理部202は、1または複数のプロセスの起動が可能である。また、JavaPF管理部202は、不正な処理により問題を発生させるアプリを、絞り込んで特定する処理を行う。この処理の詳細については、後述する。
プロセスA203は、JavaPF管理部202により起動されるプロセスである。なお、本実施形態では、プロセスごとに1つのアプリ実行環境が動作することとする。具体的には、1つのプロセスが起動すると、1つのJavaVMと1つのアプリプラットフォームが動作することとする。言い換えると、JavaPF管理部202上では、複数のJavaVM205が動作可能である。
JavaVM205は、HDD104に記憶されているJavaバイトコードを実行することでJavaプログラムを動作させる仮想マシンである。また、JavaVM205は、JavaPF管理部202が起動したプロセスA203上で起動する。JavaVM205は、起動する際に起動オプションを指定して起動することができる。起動オプションとしては、出力するログの内容の変更や、OutOfMemoryError(OOME)発生時のヒープダンプファイルの生成有無の指定などが挙げられるが、これらの値はHDD104に予め記憶されていることとする。
アプリプラットフォーム(アプリPF)206は、1つ以上のJavaアプリの起動、停止、インストール、アンインストールといったアプリのライフサイクルを管理するモジュールであり、JavaVM205上で動作する。なお、図2では、アプリPF206では2つのアプリ207、208(アプリ1、アプリ2)が起動しているが、アプリPF206は2つ以上のアプリを起動することが可能である。また、アプリPF206は、アプリ207、208が利用するライブラリやサービスを有する。また、アプリPF206は、どのアプリがこれまでに動作したかの管理も行う。なお、アプリPF206は様々な方法で実現可能であるが、本実施形態ではOSGi Service Platform(OSGi)を用いることとする。このOSGiは一般的な仕組みであり、ここでの説明は省略する。
アプリ207、208は、JavaVM205上で動作するJavaプログラムのバイトコードであり、アプリPF206が有するライブラリやサービスを利用して動作する。なお、これらのアプリは、他のプロセスのJavaVM上で動作することも可能である。なお、JavaPF管理部202上で動作する他のプロセス(例えば、プロセスB204)におけるJavaVM、アプリPF、アプリの構成等は、プロセスA203のものと同様であるため、説明は省略する。なお、アプリごとに提供される機能やサービスは異なっていてよい。
(JavaPF管理部)
図3は、本実施形態に係るJavaPF管理部202の詳細な説明を行うための図である。 JavaPF管理部202は、プロセス制御部301、問題特定部302、アプリ動作管理部303、VM起動管理部304、および資源管理部305を含んで構成される。
プロセス制御部301は、複数のJavaプロセスの起動や停止などの制御を行う。例えば、図2の例の場合、プロセス制御部301は、プロセスA203とプロセスB204を起動する。問題特定部302は、プロセス制御部301で起動したプロセス上で動作するアプリの中で、問題(フリーズやExceptionなど)が発生しているアプリを特定するための処理を行う。ここでの問題の内容は特に限定するものでは無い。
アプリ動作管理部303は、各アプリを、プロセス制御部301で起動した複数のプロセスのJavaVMのうちのいずれの上で動作させるかの決定や管理を行うための処理を行う。VM起動管理部304は、資源管理部305を用いて、起動可能なJavaVMの最大数を決定するための処理を行う。また、VM起動管理部304は、決定した最大数のJavaVMを、プロセス制御部301を用いて起動するための処理を行う。
資源管理部305は、JavaVMを動作させるために必要な資源量(JavaVM資源量)と、JavaPF管理部202上で動作するアプリが使用するメモリサイズやファイルサイズなどの資源量(アプリ使用資源量)を取得する処理を行う。なお、JavaVM資源量は予めHDD104に記憶されていることとする。また、アプリ使用資源量はアプリの設定ファイルから取得することとする。アプリの設定ファイルとしては様々なものがあるが、本実施形態では、HDD104に記憶している各アプリのMANIFESTファイルを用いる。また、MANIFESTファイルには、対応するアプリの最大使用資源量が記載されていることとする。情報処理装置の資源(リソース)は、特に限定されるものでは無いが、例えば、記憶領域のサイズや処理負荷などに応じて対象となるものが変更されてよい。
[処理フロー]
続いて、本実施形態に係るJavaPF管理部202の各モジュールにより、アプリの不正な処理により問題が発生した場合に、起動可能な最大数のJavaVMを起動し、問題の原因となるアプリを絞り込みながら特定する処理を説明する。図4、図5は、本実施形態の処理に係るフローチャートである。また、図6は、図4、図5の処理フローにおける各モジュール間の連携を示すシーケンス図である。上述したように、各処理は、画像形成装置100のCPU101がHDD104等に格納されたプログラムを読み出して実行することで実現される。
S401にて、問題特定部302は、JavaPF管理部202上で動作しているプロセスの中で、監視対象の問題が発生しているJavaVMがあるか否かを判定する。なお、ここでは、問題特定部302が定期的に各プロセスの状態を監視することで確認する方法を用いることとするが、これに限定するものではない。例えば、問題が発生したJavaVMが問題特定部302に通知を行うコールバック形式などの別の方法でもよい。また、ここでのアプリの動作時における問題として判定される内容は、予め定義されているものとする。問題を検知した場合は(S401にてYES)S402へ進み、問題を検知していない場合は(S401にてNO)監視が継続される。
S402にて、問題特定部302は、題が発生したJavaVMを特定する。以下、ここで特定したJavaVMを問題発生JavaVMと呼ぶ。
S403にて、問題特定部302は、S402にて特定した問題発生JavaVM上で動作するアプリPFに対して、問題発生までに起動したアプリの問い合わせを行い、起動したアプリを特定する。ここで特定されたアプリのいずれかが問題を引き起こしているアプリである。以下、ここで特定したアプリを特定アプリと呼ぶ。
S404にて、問題特定部302は、S403にて特定した特定アプリを停止する要求をアプリPFに出し、特定アプリを停止させる。
S405にて、問題特定部302は、S404の処理により停止したアプリが2つ以上か否かの判定を行う。停止するアプリの数は、例えば、S403における問い合わせの結果に基づいて判定してよい。停止したアプリが1つ以下であると判定された場合は(S405にてNO)S412へ進み、2つ以上であると判定された場合は(S405にてYES)S406へ進む。
S406にて、問題特定部302は、起動可能なJavaVMの最大数(最大JavaVM数)をVM起動管理部304に問い合わせるための要求を送信する(図6のF601)。上記要求を受信したVM起動管理部304は、資源管理部305にJavaPF管理部202上で動作する全アプリの最大使用資源量(アプリ使用資源量)と、JavaVM動作に必要な資源量(JavaVM資源量)の問い合わせ要求を送信する(図6のF602)。この要求を受信した資源管理部305は、JavaPF管理部202上で動作している全プロセスのアプリPFに対して、全アプリが動作するのに必要なアプリ資源量の要求を送信する。この要求を受信した各アプリPFは、アプリPF上で動作する各アプリのMANIFESTファイルからアプリ毎の最大使用資源量を抽出し、合計した値を資源管理部305に送信する。これを受信した資源管理部305は、各プロセスから送信された資源量の合計値を、アプリ使用資源量とする。
S407にて、資源管理部305は、HDD104から1つのJavaVMを動作するために必要なJavaVM資源量と、JavaPF管理部202で使用可能なJava総資源量を取得する。なお、JavaVM資源量とJava総資源量は、本実施形態では予めHDD104に記憶しておく。そして、資源管理部305は、S406にて取得したアプリ使用資源量、JavaVM資源量、およびJava総資源量を、VM起動管理部304へ送信する(図6のF603)。
S408にて、VM起動管理部304は、S407にて取得したアプリ使用資源量、JavaVM資源量、およびJava総資源量を用いて、最大JavaVM数を決定する。具体的には、以下の式(1)が成り立つように、最大JavaVM数Nを算出する。
Java総資源量 ≧ アプリ使用資源量 + JavaVM資源量×N …式(1)
この後に、VM起動管理部304は、最大JavaVM数Nを問題特定部302に送信する(図6のF604)。
S409にて、問題特定部302は、最大JavaVM数を受信すると、最大JavaVM数のJavaVMが既に起動しているか否かを判定する。ここでは、JavaPF管理部202上で動作しているプロセス数を調べること起動しているJavaVM数を特定することが可能である。最大JavaVM数のJavaVMがすでに起動していると判定された場合は(S409にてYES)S411へ進み、そうでない場合は(S409にてNO)S410へ進む。
S410にて、問題特定部302は、最大JavaVM数になるようにJavaVMを起動するためのプロセスの起動要求を、プロセス制御部301に送信する(図6のF605)。この要求を受信したプロセス制御部301は、プロセスを起動し、さらにこのプロセス上で動作するJavaVMも起動させる。プロセス制御部301は、プロセスの起動が完了すると、プロセスの起動完了通知を問題特定部302に送信する(図6のF606)。そして、S411へ進む。
S411にて、問題特定部302は、一部のアプリを別のJavaVM上で動作させるために、後述のアプリの起動VM変更処理を行う。本工程の処理の時点では、最大JavaVM数のJavaVMが起動した状態となっている。本工程の詳細は、図5を用いて説明する。本工程の処理の完了後、S401に戻り、監視を継続する。
S412にて、問題特定部302は、停止したアプリが問題の原因であるアプリ(問題アプリ)として特定する。そして、本処理フローを終了する。
(起動VM変更処理)
図5を用いて、図4のS411の工程におけるアプリの起動VM変更処理の詳細について説明する。
S501にて、問題特定部302は、図4のS402で特定した問題発生JavaVM以外のJavaVM(以下、安全JavaVM)上で、監視対象アプリが動作しているか否かを判定する。この監視対象アプリは、前回の問題発生時に動作した特定アプリが相当する。監視対象アプリは、後述のS505の処理にてHDD104に記憶されているものとし、初期の状態では監視対象アプリなしとして扱われるものとする。問題特定部302は、HDD104から取得した監視対象アプリが動作しているJavaVMを特定するために、各プロセスのアプリPFに問い合わせを行う。この問い合わせ結果に基づき、問題特定部302は、監視対象アプリが動作しているJavaVMが、安全JavaVM上で動作しているか否かを判定する。ここで、安全JavaVM上で監視対象アプリが動作していると判定された場合、これらの監視対象アプリは問題を発生させないアプリであるして扱われる。以下、安全JavaVM上で動作する監視対象アプリを、監視除外アプリと呼ぶ。安全JavaVM上で監視対象アプリが動作していると判定された場合(S501にてYES)S502へ進み、安全JavaVM上で監視対象アプリが動作していないと判定された場合(S501にてNO)S504へ進む。
S502にて、問題特定部302は、アプリ動作管理部303に、監視除外アプリを動作させる安全JavaVMを変更するための要求を送信する(図6のF607)。この要求を受信したアプリ動作管理部303は、監視除外アプリを動作させる安全JavaVMを決定する。この決定方法としては様々な方法があるが、本実施形態では、安全JavaVMの任意の1つを選択し、この選択した安全JavaVM上で全ての監視除外アプリを動作させることとする。
S503にて、アプリ動作管理部303は、S502にて決定した安全JavaVM上で、監視除外アプリをアプリPFによって起動させる。そして、アプリ動作管理部303は、問題特定部302に監視除外アプリの動作変更要求の完了を送信する(図6のF608)。
S504にて、問題特定部302は、特定アプリを動作させるJavaVMを決定する。より詳細には、問題特定部302は、アプリ動作管理部303に、JavaPF管理部202上で動作しているJavaVMの中から、特定アプリを動作させるJavaVMを変更するための要求を送信する(図6のF609)。この要求を受信したアプリ動作管理部303は、まず、特定アプリを動作させる候補となるJavaVM(以下、割当候補JavaVM)を特定する。具体的には、アプリ動作管理部303は、起動しているJavaVMの中で1つもアプリが動作しないJavaVMと、特定アプリが動作していたJavaVMを、割当候補JavaVMとする。そして、アプリ動作管理部303は、これらの割当候補JavaVMの中から特定アプリを動作させるJavaVMを決定する。この決定方法は様々な方法があるが、本実施形態では各割当候補JavaVM上で動作するアプリ数が均等になるように決定する。例えば、割当候補JavaVMが3個であり、特定アプリが8個の場合は、2つの割当候補JavaVM上で3つの特定アプリを動作させ、残りの1つの割当候補JavaVM上で2つの特定アプリを動作させるように決定する。なお、割当候補JavaVMへの割り当ては、アプリの数に基づくものに限定するものではなく、アプリのデータサイズや処理負荷などに基づいて決定してもよい。
S505にて、アプリ動作管理部303は、S505で決定した割り当てに基づいて、各割当候補JavaVM上で特定アプリを、アプリPFを用いて起動させる。そしてアプリ動作管理部303は、問題特定部302に特定アプリのJavaVM動作変更完了を送信する(図6のF610)。
S506にて、問題特定部302は、HDD104にて保持されていた今までの監視対象アプリの情報をクリアする。ここでのクリアとは、管理アプリ対象を「なし」に変更することを指す。さらに、問題特定部302は、S403で特定した特定アプリを、監視対象アプリに設定し、HDD104にて記憶させる。そして、本処理フローを終了する。
[動作例]
続いて、図4〜図6を用いて説明した本実施形態に係る問題アプリを特定するまでの流れの具体例を、図7を用いて説明する。本例が開始される際の状態として、JavaPF管理部202上では、図7(a)のように1つのプロセスAが動作しており、このプロセスAでは、アプリ1〜アプリ6の6つのアプリがJavaVM1上で動作していることとする。
(1回目の問題発生時の処理)
まず、図7(a)の状態において、プロセスAのいずれかのアプリにより問題が発生したとする。問題特定部302は、各プロセスの状態を確認し、問題が発生したか否かを確認する (図4のS401)。ここでは、問題特定部302は、プロセスAで問題が発生したことを検知し、JavaVM1で問題が発生したと特定する(図4のS402)。そして、問題特定部302は、問題発生までに起動したアプリを特定する(図4のS403)。ここでは、6つのアプリのうち、アプリ1、アプリ2、アプリ4、アプリ5が問題発生までに動作していたこととする。このため、図7(b)に示すように、アプリ1、アプリ2、アプリ4、アプリ5を特定アプリと特定する。以降では、図7(b)のように、特定アプリを四角の点線で囲むことで示す。さらに問題特定部302は、特定アプリを停止させる(図4のS404)。
その後、問題特定部302は、停止したアプリが2つ以上であるか否かの判定を行う(図4のS405)。ここで停止したアプリは4つであるため、問題特定部302は、最大JavaVM数をVM起動管理部304に問い合わせるための要求を送信する。これを受信したVM起動管理部304は、資源管理部305にアプリ使用資源量とJavaVM資源量の問い合わせ要求を送信する。この要求を受信した資源管理部305は、アプリPFを用いて、アプリ使用資源量とJavaVM資源量を取得する。本実施形態では、使用資源量としてメモリを対象とする。図8は、本例におけるアプリ1〜アプリ6の各アプリのMANIFESTファイルに記載されている最大使用メモリをまとめたアプリ使用資源管理テーブル801の構成例を示す。図8は、アプリ使用資源管理テーブル801における番号を表す「No」と、アプリの名称を表す「アプリ名称」と、アプリの最大使用メモリサイズを表す「使用メモリ」を含んで構成される。アプリ使用資源管理テーブル801は、HDD104にて保持・管理される。
資源管理部305は、アプリ使用資源管理テーブル801を参照し、アプリ使用資源量として1000MBを特定する(図4のS406)。さらに資源管理部305は、HDD104から1つのJavaVMを動作するために必要なJavaVM資源量と、JavaPF管理部202で利用可能なJava総資源量を取得する(図4のS407)。本例では、JavaVM資源量は300MB、Java総資源量は2000MBであることとし、この値は予めHDD104に記憶されていることとする。そして、資源管理部305は、アプリ使用資源量、JavaVM資源量、およびJava総資源量をVM起動管理部304へ送信する。VM起動管理部304は、アプリ使用資源量、JavaVM資源量、およびJava総資源量を用いて、最大JavaVM数を決定する(図4のS408)。上記式(1)に基づき、「2000 ≧ 1000 + 300×N」が成り立つNは、「3」であるため、資源管理部305は、最大JavaVM数は3であると算出し、この最大JavaVM数を問題特定部302に送信する。
問題特定部302は、最大JavaVM数を受信すると、最大JavaVM数のJavaVMが既に起動しているか否かを確認する(図4のS409)。この時点では図7(b)に示すように、1つのプロセスAしか起動していないため、問題特定部302は、プロセス制御部301を用いて更に2つのプロセスを起動することで、2つのJavaVMを起動させる(図4のS410)。ここでは、更に起動させる2つのJavaVMとして、JavaVM2とJavaVM3を起動することとする。
そして問題特定部302は、一部のアプリをJavaVM1とは別のJavaVM上で動作させるために、アプリの起動VM変更処理を行う(図4のS411)。まず、問題特定部302は、安全JavaVM上で監視対象アプリが動作しているか否かを判定する(図5のS501)。この時点では、監視対象アプリは1つもないため、問題特定部302は、アプリ動作管理部303に、特定アプリを動作させるJavaVMを決定するための要求を送信する。
この要求を受信したアプリ動作管理部303は、割当候補JavaVMを特定する。ここでは、JavaVM2とJavaVM3が1つもアプリが動作していないJavaVMであり、特定アプリを動作していたのがJavaVM1である。そのため、割当候補JavaVMとして、JavaVM2、JavaVM3、JavaVM1が特定される。アプリ動作管理部303は、これらの割当候補JavaVMそれぞれに対し、いずれの特定アプリを動作させるかを決定する(図5のS504)。ここでは、アプリ1とアプリ4をJavaVM2上で動作させ、アプリ2をJavaVM3上で動作させ、アプリ5をJavaVM3上で動作させることとする。この決定に基づき、アプリ動作管理部303は、JavaVM2上でアプリ1とアプリ4を起動させ、JavaVM3上でアプリ2を起動させ、JavaVM1上でアプリ5を起動させる(図5のS505)。そして、問題特定部302は、HDD104にて管理されていた監視対象アプリの情報をクリアした上で、特定アプリを監視対象アプリに設定するように更新する (図5のS506)。これにより、図7(c)の状態となる。図7(c)において、S506で決定した監視対象アプリを識別可能に表記し、以降でも同様の表記を行う。その後、図4のS401の処理に戻り、問題発生の監視が継続される。
(2回目の問題発生時の処理)
続いて、プロセスAのいずれかのアプリにより問題が発生したとする(図4のS401)。問題特定部302は、プロセスAのJavaVM2で問題が発生したと特定する(図4のS402)。そして、問題特定部302は、問題発生までに起動したアプリを特定する(図4のS403)。ここでは、アプリ1とアプリ4が問題発生までに動作していたこととする。このため、アプリ1とアプリ4を特定アプリとみなし、図7(d)の状態となる。さらに、問題特定部302は、これらの特定アプリを停止させる (図4のS404)。
その後、問題特定部302は、停止したアプリが2つ以上であるか否かの判定を行う(図4のS405)。ここで停止したアプリは2つであるため、前述のS408〜S410により、最大JavaVM数を特定する。ここでは最大JavaVM数Nは「3」となる。この後に問題特定部302は、最大JavaVM数のJavaVMが既に起動しているか否かを確認する(図4のS409)。ここでは、図7(d)に示すように3つのJavaVMが既に起動しているため、アプリの起動VM変更処理を行う(図4のS411)。
まず、問題特定部302は、安全JavaVM上で動作している監視除外アプリを判定する(図5のS501)。ここでは、図7(d)に示すように、JavaVM3とJavaVM1が安全JavaVMである。また、アプリ2とアプリ5が安全JavaVM上で動作しているため、これらが監視除外アプリとなる。アプリ動作管理部303は、この2つの監視除外アプリをどの安全JavaVMで動作させるかを決定する(図5のS502)。ここでは、安全JavaVMであるJavaVM1でアプリ2とアプリ5を動作させることとする。アプリ動作管理部303は、決定した安全JavaVM上で監視除外アプリを起動させる(図5のS503)。これにより、図7(e)の状態となる。つまり、特定アプリ以外のアプリが安全JavaVMに集約されることとなる。この後、アプリ動作管理部303は、問題特定部302に監視対象アプリの動作変更要求の完了を送信する。
更に問題特定部302は、前述のS504〜S505の処理を行い、特定アプリを複数のJavaVM上に分けて起動させる。まず問題特定部302は、アプリ動作管理部303に、特定アプリを動作させるJavaVMを決定するための要求を送信する。この要求を受信したアプリ動作管理部303は、割当候補JavaVMを特定する。本例において、図7(e)に示すように、JavaVM3が1つもアプリが動作していないJavaVMであり、また、JavaVM2が特定アプリが動作していたJavaVMである。そのため、JavaVM3とJavaVM2を割当候補JavaVMとなる。アプリ動作管理部303は、これらの割当候補JavaVMそれぞれ上で、いずれの特定アプリを動作させるかを決定する(図5のS504)。ここでは、アプリ1をJavaVM2上で動作させ、アプリ4をJavaVM3上で動作させることとする。この決定に基づき、アプリ動作管理部303は、JavaVM2上でアプリ1を起動させ、JavaVM3上でアプリ4を起動させる(図5のS505)。そして、問題特定部302は、HDD104にて管理されていた監視対象アプリの情報をクリアした上で、特定アプリを監視対象アプリに設定するように更新する (図5のS506)。ここでは、アプリ1とアプリ4が新たな監視対象アプリとなる。これにより、図7(f)の状態となる。その後、図4のS401の処理に戻り、問題発生の監視が継続される。
(3回目の問題発生時の処理)
続いて、プロセスCのいずれかのアプリにより問題が発生したとする(図4のS401)。問題特定部302は、プロセスCのJavaVM3で問題が発生したと特定する(図4のS402)。そして、問題特定部302は、問題発生までに起動したアプリを特定する(図4のS403)。ここでは、アプリ4が問題発生までに動作していたこととする。このため、アプリ4を特定アプリとみなし、図7(g)の状態となる。さらに、問題特定部302は、特定アプリを停止させる (図4のS404)。
その後、問題特定部302は、停止したアプリが2つ以上であるか否かの判定を行う(図4のS405)。ここで停止したアプリは1つであるため、問題特定部302は、問題の原因となるアプリは、アプリ4であると特定する(図4のS412)。
以上、本実施形態により、Java総資源量、アプリ使用資源量、JavaVM資源量を考慮して決定した最大JavaVM数以内のJavaVMを起動し、問題の原因となるアプリを特定することができる。これにより、問題発生アプリを他のJavaVMとは分けて動作することが可能となり、他のアプリへの影響を無くすことが可能となる。その結果、装置全体のセキュリティや堅牢性を向上させることができる。
上記の説明では、図4のS408において最大JavaVM数を決定するために、S406もしくはS407では、資源としてメモリを用いた。しかし、資源はメモリに限定されるものではなく、使用するファイルサイズ(ファイル容量)、ディスクリプタ数、ソケット数、スレッド数、プロセス数などのメモリ以外の資源を用いてもよい。
また、図4のS412にて問題アプリを特定したが、この際に、ユーザに通知するような構成であってもよい。例えば、ログに問題アプリの情報を出力してもよいし、画面上に表示してもよい。
また、上記の説明では、図4の処理により問題アプリの絞り込みを行って、特定(隔離)するまでの流れについて示した。更にこの処理の後、問題アプリが存在しない複数のJavaVMのいずれかに問題が発生していないアプリをまとめる処理を行ってもよい。具体的には、図7(g)に示す状態では、プロセスAとプロセスBには問題アプリは動作していない。そのため、プロセスAもしくはプロセスBのいずれかを停止させ、一方のプロセスにて問題アプリ以外のアプリ(ここでは、アプリ1〜3、アプリ5、アプリ6)を動作させるようにしてもよい。これにより資源の節約が可能となる。もしくは、問題が発生する直前において起動していたJavaVMの数を記憶しておき、その数に近づくように、問題アプリが動作していないJavaVMの数を制御するような構成であってもよい。
<第2の実施形態>
第1の実施形態では、割当候補JavaVMは、安全JavaVMと同じ起動オプションで起動する構成について説明した。しかし、問題アプリを一意に特定するまでに時間がかかる場合は、一意に特定する前に、問題発生時のログを開発者が確認することで、問題アプリを特定したい場合がある。このような場合に対応するために、割当候補JavaVMは、安全JavaVMとは異なる起動オプションで起動することで、より詳細なログ(安全JavaVMでは出力しないログ)を自動で出力することが望まれる。
本実施形態では、割当候補JavaVMの起動オプションを自動で変更する構成について説明する。なお、基本的な処理や制御は第1の実施形態と同じであるため、第1の実施形態と異なる点のみを説明する。具体的には、本実施形態では、起動VM変更処理において割当候補JavaVMの起動オプション変更の処理を行う点が、第1の実施形態とは異なる。
(起動VM変更処理)
図9を用いて、本実施形態に係る図4のS411の工程におけるアプリの起動VM変更処理の詳細について説明する。S501〜S504の処理は、第1の実施形態にて述べた図5の処理と同じである。S504の処理の後、S901にて、問題特定部302は、問題発生回数が所定の回数以下であるか否かを判定する。問題発生回数は、デフォルト値は「0」であり、HDD104に記憶されているものとする。また、所定の回数は、予め定義され、HDD104に保持されているものとする。問題発生回数が所定の回数以下であると判定された場合(S901にてYES)S505へ進み、所定の回数よりも多いと判定された場合は(S901にてNO)S902へ進む。
S902にて、問題特定部302は、S504で決定した割当候補JavaVMの起動時のオプションを、安全JavaVMとは異なる起動オプションに変更する。本実施形態では、問題アプリを特定することに繋がるログを出力するための出力設定に関するオプションを追加することとする。具体的なオプションとしては、例えば、OutOfMemoryError発生時にヒープダンプログを取得するための「−XX:+HeapDumpOnOutOfMemoryError」がある。また、ローテーションにより多くのGCログを残すための「−XX:+UserGCLogFileRotation」オプションもある。問題特定部302は、このようなオプションをつけて起動するように設定を変更し、HDD104に記憶する。ここでのオプションは、発生した問題に応じて異なる起動オプションが設定されるような構成であってもよい。
S903にて、問題特定部302は、変更した起動オプションを適用するためにJavaVMを再起動させる。そして、S505にて。問題特定部302は、特定アプリを割当候補JavaVM上で起動させる。また、S506にて、問題特定部302は、特定アプリを管理対象アプリに設定する。その後、S904にて、問題特定部302は、HDD104に記憶している問題発生回数を1回増やす。そして、本処理フローを終了する。
なお、図9のS902にて起動オプションを変更した場合、問題発生回数をカウントした値は初期化してもよい。もしくは、図4のS412の処理にて問題アプリが特定されたのち、問題発生回数のカウント値を初期化するような構成であってもよい。
以上、本実施形態では、割当候補JavaVMを起動する場合、安全JavaVMとは異なる起動オプションを自動的に追加して起動する。これにより、より詳細なログを自動で出力することが可能となり、早期に問題アプリを特定することが可能となる。
<その他の実施形態>
本発明は上述の実施形態の1以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピューターにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
100…情報処理装置、101…CPU、102…RAM、103…ROM、104…HDD、111…コントローラユニット、201…OS、202…JavaPF管理部、301…プロセス制御部、302…問題特定部、303…アプリ動作管理部、304…VM起動管理部、305…資源管理部

Claims (12)

  1. 1または複数のアプリを動作させるための動作環境が複数、動作可能な情報処理装置であって、
    アプリの動作時における問題の発生を検知する検知手段と、
    動作している動作環境の中から、前記問題が発生した動作環境を特定する第1の特定手段と、
    前記第1の特定手段にて特定された動作環境において、前記問題の発生が検知されるまでに動作していた1または複数のアプリを特定する第2の特定手段と、
    前記第2の特定手段にて特定された1または複数のアプリが、新たな動作環境にて動作するように動作環境の変更を制御する制御手段と
    を有することを特徴とする情報処理装置。
  2. 前記情報処理装置にて動作可能な動作環境の最大数を決定する決定手段を更に有し、
    前記制御手段は、前記決定手段にて決定された最大数の複数の動作環境を動作させ、当該複数の動作環境のいずれかを前記第2の特定手段にて特定された1または複数のアプリが動作する前記新たな動作環境とすることを特徴とする請求項1に記載の情報処理装置。
  3. 前記決定手段は、アプリが使用する資源量、動作環境を動作させるために要する資源量、および、使用可能な資源量に基づいて、動作可能な動作環境の最大数を決定することを特徴とする請求項2に記載の情報処理装置。
  4. 前記決定手段にて用いられる資源の情報は、メモリ、ファイルサイズ、ディスクリプタ数、ソケット数、スレッド数、およびプロセス数の少なくともいずれかであることを特徴とする請求項3に記載の情報処理装置。
  5. 前記制御手段は、前記第2の特定手段にて特定された1または複数のアプリ以外のアプリが、1の動作環境にて動作するように動作環境を変更することを特徴とする請求項1乃至4のいずれか一項に記載の情報処理装置。
  6. 前記検知手段、前記第1の特定手段、前記第2の特定手段、および前記制御手段による処理が繰り返されることで、前記問題の原因となる1のアプリが1の動作環境にて動作するように動作環境が変更されることを特徴とする請求項1乃至5のいずれか一項に記載の情報処理装置。
  7. 前記検知手段による問題の検知の回数が所定の回数を超えたか否かを判定する判定手段と、
    前記判定手段にて前記所定の回数を超えたと判定された場合、前記新たな動作環境においてアプリを動作させた際の出力設定を変更する変更手段と
    を更に有することを特徴とする請求項1乃至6のいずれか一項に記載の情報処理装置。
  8. 前記出力設定は、アプリの動作に関するログの設定であることを特徴とする請求項7に記載の情報処理装置。
  9. 前記情報処理装置は、画像形成装置であることを特徴とする請求項1乃至8のいずれか一項に記載の情報処理装置。
  10. 前記動作環境は、Java Virtual Machine(JavaVM)であることを特徴とする請求項1乃至9のいずれか一項に記載の情報処理装置。
  11. 1または複数のアプリを動作させるための動作環境が複数、動作可能な情報処理装置の制御方法であって、
    アプリの動作時における問題の発生を検知する検知工程と、
    動作している動作環境の中から、前記問題が発生した動作環境を特定する第1の特定工程と、
    前記第1の特定工程にて特定された動作環境において、前記問題の発生が検知されるまでに動作していた1または複数のアプリを特定する第2の特定工程と、
    前記第2の特定工程にて特定された1または複数のアプリが、新たな動作環境にて動作するように動作環境の変更を制御する制御工程と
    を有することを特徴とする情報処理装置の制御方法。
  12. 1または複数のアプリを動作させるための動作環境が複数、動作可能なコンピューターを、
    アプリの動作時における問題の発生を検知する検知手段、
    動作している動作環境の中から、前記問題が発生した動作環境を特定する第1の特定手段、
    前記第1の特定手段にて特定された動作環境において、前記問題の発生が検知されるまでに動作していた1または複数のアプリを特定する第2の特定手段、
    前記第2の特定手段にて特定された1または複数のアプリが、新たな動作環境にて動作するように動作環境の変更を制御する制御手段
    として機能させるためのプログラム。
JP2019078849A 2019-04-17 2019-04-17 情報処理装置およびその制御方法、並びにプログラム Pending JP2020177424A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019078849A JP2020177424A (ja) 2019-04-17 2019-04-17 情報処理装置およびその制御方法、並びにプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019078849A JP2020177424A (ja) 2019-04-17 2019-04-17 情報処理装置およびその制御方法、並びにプログラム

Publications (1)

Publication Number Publication Date
JP2020177424A true JP2020177424A (ja) 2020-10-29

Family

ID=72936117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019078849A Pending JP2020177424A (ja) 2019-04-17 2019-04-17 情報処理装置およびその制御方法、並びにプログラム

Country Status (1)

Country Link
JP (1) JP2020177424A (ja)

Similar Documents

Publication Publication Date Title
US8321655B2 (en) Execution parallelism in extensible firmware interface compliant systems
JP5387415B2 (ja) 仮想計算機システム、ポリシ強制システム、ポリシ強制方法及び仮想計算機制御用プログラム
US8176480B1 (en) Adaptive instrumentation through dynamic recompilation
JP5147728B2 (ja) 質的に注釈を付けられた注釈付きコード
Zimmer et al. Beyond BIOS: developing with the unified extensible firmware interface
US9542228B2 (en) Image processing apparatus, control method thereof and storage medium
JP2008524686A (ja) コンピュータ装置においてアプリケーションを保守する方法
KR20150052107A (ko) Bpram을 이용한 운영체제의 레이아웃 및 실행
JP2014170515A (ja) 機器、情報記録プログラム、及び情報記録方法
US20190379800A1 (en) Information processing apparatus, control method thereof, and storage medium
US20070180433A1 (en) Method to enable accurate application packaging and deployment with optimized disk space usage
US10089211B2 (en) Information processing apparatus that executes processing by using a bytecode, method for controlling the same, and non-transitory computer-readable medium
US10356267B2 (en) Information processing apparatus, control method, and storage medium
US10552318B2 (en) Working set adjustment in a managed environment
US11720390B2 (en) Information processing apparatus that determines whether an extended application can reuse a virtual machine, method of controlling the same, and storage medium
JP6179200B2 (ja) 情報処理装置、機器、情報処理システム、情報処理方法、及び情報処理プログラム
JP2010134705A (ja) 機器、ログ記録制御方法、及びプログラム
US20160044201A1 (en) Image forming apparatus and resource management method
JP2020177424A (ja) 情報処理装置およびその制御方法、並びにプログラム
JP2017126293A (ja) 情報処理装置及びリソース管理方法
US10387093B2 (en) Image forming apparatus that sets a time-out value based on an executed application, information processing method, storage medium storing program
JP2016095792A (ja) 情報処理装置、その制御方法、及びプログラム
JP5020121B2 (ja) 情報処理装置、画像形成装置および情報処理方法
JP2018036799A (ja) 情報処理装置およびその制御方法
JP2020115267A (ja) 仮想マシン管理装置、仮想マシン管理方法、及びプログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113