(57)【要約】【課題】  仮想マシン上で動作するアプリケーションの性能の向上を図った組み込み装置、パラメータ設定方法、プログラムおよび記録媒体を提供すること。【解決手段】  本発明の組み込み装置１０は、オペレーティング・システム１１０上で仮想マシン１２０が動作しており、仮想マシン１２０の１以上の制御パラメータを記憶する記憶手段１１６と、仮想マシン１２０上で実行される１以上のアプリケーション１２６，１２８の追加および削除を制御し、当該組み込み装置１０の構成状態を管理する制御手段１２４と、１以上のアプリケーション手段の利用状況または構成状態の変化を検知して通知を発する検知手段１２２と、通知に応答し、利用状況および構成状態に応じて１以上の制御パラメータの再割当値を算出し、記憶手段１１６に保存する算出手段１１２と、再割当値が保存された後、仮想マシン１２０の再起動を指令する指令手段１１４とを含む。【選択図】  図２
2012027768.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティング・システム上で仮想マシンが動作する組み込み装置であって、
前記仮想マシンの１以上の制御パラメータを記憶する記憶手段と、
前記仮想マシン上で実行される１以上のアプリケーション手段の追加および削除を制御し、当該組み込み装置の構成状態を管理する制御手段と、
前記１以上のアプリケーション手段の利用状況または前記構成状態の変化を検知して通知を発する検知手段と、
前記通知に応答し、前記利用状況および前記構成状態に応じて前記１以上の制御パラメータの再割当値を算出し、前記記憶手段に保存する算出手段と、
前記再割当値が保存された後、前記仮想マシンの再起動を指令する指令手段と
を含む、組み込み装置。
【請求項２】
被写体からの反射光を光電変換して生成された画像信号に従い転写部材に画像を形成する画像形成手段と、
前記画像形成手段に対する電力供給を制御し、当該組み込み装置が省エネルギーモードへ移行する際または該モードから復帰する際に、前記再割当値が保存されていた場合、前記指令手段に対し前記仮想マシンの再起動を要求する、省エネルギー制御手段をさらに含む、請求項１に記載の組み込み装置。
【請求項３】
ヒープメモリ領域のサイズ不足を警告するエラーの発生を検出するエラー検出手段をさらに含み、前記算出手段は、前記エラーの発生に応答して、該メモリ領域のサイズの再割当値を増大させる、請求項１または２に記載の組み込み装置。
【請求項４】
ジャスト・イン・タイム・コンパイラが使用するメモリ領域のスラッシングの発生を検出するスラッシング検出手段を含み、前記算出手段は、前記スラッシングの発生に応答して、該メモリ領域のサイズの再割当値を増大させる、請求項１〜３のいずれか１項に記載の組み込み装置。
【請求項５】
組み込み装置が備える表示装置は、算出されたヒープメモリ領域のサイズの再割当値が、当該組み込み装置に搭載されるメモリサイズに設定可能な最大値を超える場合に、メモリ増設を促すユーザ通知を行う、請求項１〜４のいずれか１項に記載の組み込み装置。
【請求項６】
組み込み装置が備える表示装置は、算出されたヒープメモリ領域のサイズの再割当値が、ヒープメモリ領域のサイズを変更する際にスワップを発生させてしまう基準値を超える場合に、メモリ増設を促すユーザ通知を行う、請求項１〜５のいずれか１項に記載の組み込み装置。
【請求項７】
前記算出手段および前記指令手段はネイティブプログラムとして実装され、前記１以上のアプリケーション手段、前記制御手段および前記検知手段は、バイトコードにより記述されて前記仮想マシン上で実行される、請求項１〜６のいずれか１項に記載の組み込み装置。
【請求項８】
前記１以上の制御パラメータは、ヒープメモリ領域の初期サイズ、ヒープメモリ領域の最大サイズおよびジャスト・イン・タイムコンパイラのキャッシュ領域のサイズの少なくとも１つを含む、請求項１〜７のいずれか１項に記載の組み込み装置。
【請求項９】
オペレーティング・システム上で仮想マシンを動作させる組み込み装置が実行する、該仮想マシンの１以上の制御パラメータを設定する方法であって、前記組み込み装置が、
前記仮想マシン上で実行される１以上のアプリケーション手段の追加または削除による当該組み込み装置の構成状態を監視するステップと、
前記１以上のアプリケーション手段の利用状況または前記構成状態の変化を検知し、該構成状態の変化の通知を発するステップと、
前記通知に応答し、前記利用状況および前記構成状態に応じて前記１以上の制御パラメータの再割当値を算出するステップと、
前記仮想マシンの１以上の制御パラメータの前記再割当値を保存するステップと、
前記仮想マシンの再起動を指令するステップと
を含む、パラメータ設定方法。
【請求項１０】
オペレーティング・システム上で仮想マシンが動作する組み込み装置として動作させるための装置可読なプログラムであって、前記組み込み装置に対し、
前記仮想マシンの１以上の制御パラメータを記憶する記憶手段、
前記仮想マシン上で実行される１以上のアプリケーション手段の追加および削除を制御し、当該組み込み装置の構成状態を管理する制御手段、
前記１以上のアプリケーション手段の利用状況および前記構成状態の変化を検知して通知を発する検知手段、
前記通知に応答し、前記利用状況および前記構成状態に応じて前記１以上の制御パラメータの再割当値を算出して、前記記憶手段に保存する算出手段、および
前記再割当値が保存された後、前記仮想マシンの再起動を指令する指令手段
として機能させるためのプログラム。
【請求項１１】
請求項１０に記載のプログラムを装置可読に格納する記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンに関し、より詳細には、仮想マシン上で動作するアプリケーションの性能の向上を図った組み込み装置、パラメータ設定方法、プログラムおよび記録媒体に関する。
【背景技術】
【０００２】
従来よりＪａｖａ（登録商標）では、メモリ領域を有効に活用するために、プログラムが使用するメモリ領域を段階的に確保する技術を採用している。Ｊａｖａ（登録商標）におけるメモリ管理は、ＪＶＭ（Java（登録商標） Virtual Machine）に統合されたガベージ・コレクション（Garbage Collection）と呼ばれる機能によって行われる。ガベージ・コレクションは、プログラムが動的に確保したメモリ領域のうち、プログラムが使用しなくなったメモリ領域やプログラム間の隙間のメモリ領域を回収して、他のプログラムが利用できるように解放することで、効率的なメモリ管理を実現している。またＪＶＭは、ＪＩＴ（Just In Time）コンパイラを実装しており、プラットフォームから独立した形式のプログラムを、実行前にプラットフォーム上で実行可能なネイティブな機械語に変換しておくことで、高速な処理を実現している。
【０００３】
近年、種々のニーズに合わせて機能拡張を容易に行えるように、アプリケーションを動作させるプラットフォームとして、ＪＶＭを実装するＭＦＰ（Multi Functional Printer）などが開発されている。ＪＶＭ上で動作するアプリケーションの性能は、ヒープメモリのサイズやＪＩＴのキャッシュ・サイズなどＪＶＭの制御パラメータの影響を受けるため、上記制御パラメータは、アプリケーション構成等に対応してチューニングする必要がある。例えば、ＪＩＴコンパイラによって機械語に変換されたコードを格納するためのＪＩＴのキャッシュのサイズが充分でない場合、頻繁にキャッシュの入出力が発生し、アプリケーションの性能を劣化させてしまう。
【０００４】
しかしながら、上記ＪＶＭを実装し、複合機など、機器動作中にアプリケーションの追加または削除を行うことができるように構成された従来の組み込み機器では、アプリケーション構成等の変化によって仮想マシンの最適なパラメータが変化するにもかかわらず、上記構成の変化に対応して仮想マシンのパラメータを動的に変更することが困難であった。また、ＪＶＭの動作中は制御パラメータの変更が難しいため、組み込み装置の使用に不都合なくＪＶＭに再割当されたパラメータを反映させることは困難であった。
【０００５】
ＪＶＭのパラメータの設定に関連して、特開２００４−５６５０号公報（特許文献１）は、Ｊａｖａ（登録商標）環境においてプログラムの性能を向上させる目的で、Ｊａｖａ（登録商標）プログラムの動作するＪＶＭにアクセスすることができる制御パネルを呼び出し、該制御パネルを介し、プログラムおよび仮想マシンが実行している間にパラメータの値を新たな値になるように調整する方法を開示する。特許文献１の技術によれば、利用者は、制御パネルを通じてＪＶＭのパラメータの変更およびプログラムのクリティカル部分の機械語へのコンパイルを強制することを繰り返すことで、プログラムの性能を向上を図ることができる。
【０００６】
また、本願出願人の先行技術である特願２００９−０９３０８２号は、Ｊａｖａ（登録商標）環境において、ユーザ利用時のプログラムの性能を向上させる目的で、ユーザが利用していないタイミングにメジャーＧＣを発生させる構成と、ＯｕｔＯｆＭｅｍｏｒｙエラーの発生を防止する目的で、メジャーＧＣ発生時にヒープの最大サイズを拡大させる構成が記載されている。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１に開示される従来技術によれば、ＪＶＭの設定を変更することでアプリケーションの性能をいくらか向上させることができる。また上記先行技術によれば、ユーザが利用していないタイミングにメジャーＧＣを発生させることができ、メジャーＧＣ発生に対応してヒープの最大サイズを拡大させることができ、ＯｕｔＯｆＭｅｍｏｒｙエラーの発生をいくらか防止することができる。しかしながら、上記特許文献１に開示される従来技術および上記先行技術は、アプリケーション構成等に適合した最適なパラメータを動的に設定できるというものではない。
【０００８】
本発明は、上記従来技術の課題に鑑みてなされたものであり、組み込み装置上で動作する仮想マシンにおいて、アプリケーション構成と、さらに時々刻々と変化するアプリケーションの利用状況とに適合させて、最適なパラメータを自動的に設定することが可能な組み込み装置、パラメータ設定方法、プログラムおよび記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明では、上記課題を解決するために、オペレーティング・システム上で仮想マシンが動作する、以下の特徴を備えた組み込み装置を提供する。すなわち、本発明の組み込み装置は、仮想マシン上で実行される１以上のアプリケーション手段の追加または削除によって当該組み込み装置の構成状態の変化があった場合、または上記１以上のアプリケーション手段の利用状況に変化があった場合に、当該変化を検知する。そして、本組み込み装置は、上記変化に応答して、利用状況および構成状態に応じて１以上の制御パラメータの再割当値を算出し、再割当値を保存し、仮想マシンの再起動を指令する。
【００１０】
さらに本発明の組み込み装置は、電力供給が制御され、被写体からの反射光を光電変換して生成された画像信号に従い転写部材に画像を形成する画像形成手段を備え、上記仮想マシンの再起動は、当該組み込み装置が省エネルギーモードへ移行する際または該モードから復帰する際に行うことができる。
【発明の効果】
【００１１】
上記構成によれば、組み込み装置上の仮想マシンにおいて、組み込み装置の構成状態および利用状況に適合した最適な起動パラメータを自動的に設定し、仮想マシンを再起動することによりパラメータを反映させることができる。適切なパラメータを設定し、反映することで、ガベージ・コレクションやＪＩＴコンパイルのスラッシングによるアプリケーションの性能への悪影響を抑制することができる。さらに、アプリケーションの利用状況に応じてパラメータが算出されるため、組み込み装置の利用状況に応じたきめ細やかなパラメータのチューニングが可能となる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態の複合機のハードウェア構成を示す図。
【図２】第１の実施形態の複合機のソフトウェア構成を示す図。
【図３】（Ａ）カウンタ記憶部および（Ｂ）パラメータ記憶部が格納するデータ構造を示す図。
【図４】第１の実施形態の（Ａ）カウント制御モジュール、（Ｂ）プラグイン管理モジュール、（Ｃ）状態監視モジュールが実行する処理を示すフローチャートである。
【図５】第１の実施形態のパラメータ管理コントローラ部が実行する処理を示すフローチャート。
【図６】第２の実施形態の複合機のソフトウェア構成を示す図。
【図７】第２の実施形態のパラメータ管理コントローラ部が実行する処理を示すフローチャート。
【図８】第２の実施形態の省エネルギー移行制御部が実行する処理を示すフローチャート。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態について説明するが、本発明の実施形態は、以下に説明する実施形態に限定されるものではない。なお、以下に説明する実施形態では、組み込み装置の一例として、コピー、プリンタ、スキャナ、ファクシミリなどの画像に関する複数の機能を備えた複合機１０について説明する。
【００１４】
図１は、第１の実施形態の複合機１０のハードウェア構成を示す。複合機１０は、コントローラ１２と、オペレーションパネル４０と、ＦＣＵ（ファクシミリ・コントロール・ユニット）４２と、エンジン部４４とを含み構成される。コントローラ１２は、ＣＰＵ（中央演算処理装置）１４と、ＮＢ（ノース・ブリッジ）１８と、ＮＢ１８を介してＣＰＵ１４に接続するＡＳＩＣ２０と、システムメモリ１６とを含み構成される。ＡＳＩＣ２０は、各種画像処理を実行し、ＡＧＰ（Accelerated Graphic Port）４６を介してＮＢ１８と接続される。システムメモリ１６は、描画用メモリなどとして用いられる。
【００１５】
ＡＳＩＣ２０は、ローカルメモリ２２と、ハードディスクドライブ（以下、ＨＤＤとして参照する。）２４と、フラッシュメモリなどの不揮発性メモリ（以下、ＮＶ−ＲＡＭとして参照する。）２６と接続する。ローカルメモリ２２は、コピー用画像バッファや符号バッファとして用いられ、ＨＤＤ２４は、画像データ、文書データ、プログラム、フォントデータやフォームデータなどを蓄積するストレージである。ＮＶ−ＲＡＭ２６は、複合機１０を制御するための、後述する各モジュールおよび各機能部を実現するためのプログラムや各種システム情報や各種設定情報を格納する。
【００１６】
コントローラ１２は、さらにＳＢ（サウス・ブリッジ）２８と、ＮＩＣ（ネットワーク・インタフェース・カード）３０と、ＳＤ（Secure Digital）カード・スロット３２と、ＵＳＢインタフェース３４と、ＩＥＥＥ１３９４インタフェース３６と、セントロニクス・インタフェース３８とを含み構成され、これらはＰＣＩバス４８を介してＮＢ１８と接続される。ＳＢ２８は、図示しないＲＯＭやＰＣＩバス周辺デバイスなどとＮＢ１８とを接続するためのブリッジである。
【００１７】
ＮＩＣ３０は、複合機１０をインターネットやＬＡＮなどのネットワークに接続するインタフェース機器であり、ネットワークを介した指令を受付けている。ＳＤカード・スロット３２は、図示しないＳＤカードを着脱可能に装着する。ＵＳＢインタフェース３４、ＩＥＥＥ１３９４インタフェース３６およびセントロニクス・インタフェース３８は、それぞれの規格に準じたインタフェースであり、印刷ジョブなどを受付けている。
【００１８】
オペレーションパネル４０は、コントローラ１２のＡＳＩＣ２０と接続され、オペレータからの各種指示の入力を受付けや、画面表示を行なうためのユーザ・インタフェースを提供し、各種ユーザ通知を行う。ＦＣＵ４２およびエンジン部４４は、ＰＣＩバス５０を介してＡＳＩＣ２０と接続する。ＦＣＵ４２は、Ｇ３またはＧ４といったファクシミリ通信規格に準じた通信方法を実行する。エンジン部４４は、アプリケーションが発行したプリント指令やスキャン指令を受け、画像形成処理や画像読取処理を実行する。エンジン部４４は、本実施形態の被写体からの反射光を光電変換して生成された画像信号に従い転写部材に画像を形成する画像形成手段を構成する。
【００１９】
図２は、第１の実施形態の複合機のソフトウェア構成を示す。本実施形態の複合機１０のソフトウェア構成１００は、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）などのマルチタスクのオペレーティング・システム（ＯＳ）１１０と、上記ＯＳ１１０上で動作する言語環境の仮想マシン１２０と、仮想マシン１２０上で実行されるバイトコード形式のプログラム群Ｂとを含む。上記仮想マシン１２０としては、Ｊａｖａ（登録商標）言語で記述されたバイトコードをネイティブコードに変換して実行するＪＶＭ（Java（登録商標） Virtual Machine）を好適に挙げることができるが、特に限定されるものではない。上記仮想マシン１２０は、その他、共通言語ランタイム（Common Language Runtime）、Ｐａｒｒｏｔなどの他の言語環境による仮想マシンを採用してもよい。
【００２０】
上記バイトコード形式のプログラム群Ｂには、状態監視モジュール１２２と、プラグイン管理モジュール１２４と、プラグインアプリケーション（以下、単にアプリケーションという。）１２６，１２８と、カウンタ制御モジュール１３０とが含まれる。状態監視モジュール１２２、プラグイン管理モジュール１２４およびカウンタ制御モジュール１３０は、詳細は後述するが、複合機１０の構成状態およびアプリケーションの利用状況を把握し、その変化に応じて仮想マシン１２０を最適化するべく制御パラメータを動的に変更するための制御モジュールとして動作する。アプリケーション１２６，１２８は、当該複合機１０の機能拡張を行うため各機能を実現するアプリケーション・モジュールである。
【００２１】
本実施形態の仮想マシン１２０では、各モジュールのバイトコード・プログラムをＨＤＤ２４やＮＶ−ＲＡＭ２６から読み出し、ジャスト・イン・タイム・コンパイル方式のコンパイラが、実行前にコードを解釈して機械語に変換してから実行することで、複合機１０上に上記バイトコード形式のプログラム群Ｂの各モジュールを実現している。また仮想マシン１２０では、ガベージコレクタが、プログラムが動的に確保したメモリ領域のうち不要になった領域を自動的に解放することで、アプリケーションの性能の向上を図っている。
【００２２】
プラグイン管理モジュール１２４は、アプリケーションの追加および削除を管理しており、種々のコンポーネントのインストールまたはアンインストール等を実行するとともに、インストールされているコンポーネントの一覧情報等を管理する。またプラグイン管理モジュール１２４は、アプリケーションの追加または削除が発生した場合、このアプリケーションの追加または削除を状態監視モジュール１２２へ通知する。なお、本実施形態においては、複合機１０上で機能している１以上のアプリケーションによる構成を構成状態という。つまり、アプリケーションが追加または削除されると、構成状態は変化することになる。なお、プラグイン管理モジュール１２４は、本実施形態の構成状態を管理する制御手段を構成する。
【００２３】
カウンタ制御モジュール１３０は、仮想マシン１２０上で動作するアプリケーション１２６，１２８の動作を監視し、アプリケーションの利用状況を記録する。より具体的には、カウンタ制御モジュール１３０は、仮想マシンの実行環境が提供する監視用のＡＰＩなどを使用して、アプリケーション１２６，１２８の動作を検知すると、各アプリケーション毎に動作回数を記録するカウンタ値をカウントアップする。ここで、利用状況として計数することができるアプリケーションの動作回数としては、例えば、アプリケーションが提供する機能の実行回数やアプリケーションの起動の回数を挙げることができる。
【００２４】
各カウンタ値は、カウンタ記憶部１３２に保持されており、カウンタ記憶部１３２は、例えばＮＶ−ＲＡＭ２６などの記憶領域により提供される。なお、本実施形態において、カウンタ記憶部１３２に保持されるアプリケーション毎のカウンタ値は、本実施形態におけるアプリケーションの利用状況を表す指標として使用される。図３（Ａ）は、カウンタ記憶部１３２が格納するデータ構造を示す。図３（Ａ）に示すカウンタ・データ２００には、各アプリケーションを識別する名称と、その動作回数を記録する各カウンタ値とが対応付けられている。上記カウンタ・データ２００により、最頻度または頻度上位で動作するアプリケーションが特定され、後述するように、最頻度または頻度上位のアプリケーションに適合させて、仮想マシン１２０の起動パラメータを調整することができる。
【００２５】
状態監視モジュール１２２は、プラグイン管理モジュール１２４からのアプリケーション追加または削除の通知を待ち受けるとともに、カウンタ記憶部１３２をモニタし、各アプリケーションのカウンタ値の変化を監視し、アプリケーションの追加または削除による構成状態の有意な変化およびアプリケーションの利用状況の有意な変化の検出を試みる。ここで、有意な変化とは、ＪＶＭの起動パラメータを再割当するに足る程度の変化をいい、例えば前回の起動パラメータの再割当値を基準として、カウンタ値が所定数（例えば１）増減したことをもって有意な変化として検出してもよいし、カウンタ値が増減するだけでは有意とせず、最頻度または頻度上位のアプリケーションの順位が変化したことをもって有意な変化として検出してもよいし、特に限定されるものではない。また、頻繁にパラメータ再割当を行うのも非効率であるため、時間平均したトレンドを対象としてもよい。なお、状態監視モジュール１２２は、本実施形態の変化を検知して通知を発する検知手段を構成する。
【００２６】
ソフトウェア構成１００は、さらに、ネイティブ形式のプログラム群Ｎとして、パラメータ管理コントローラ部１１２と、仮想マシン起動管理部１１４とを含む。これらの機能部は、パラメータ割当等の仮想マシン１２０に対し外部から制御するため、仮想マシン１２０から独立してＯＳ１１０上で動作する。
【００２７】
上記仮想マシン１２０上の状態監視モジュール１２２は、構成状態または利用状況の有意な変化を検出すると、その変化をパラメータ管理コントローラ部１１２へ通知する。パラメータ管理コントローラ部１１２は、仮想マシン１２０が起動時に読み込む起動パラメータを管理しており、上記通知を受信すると、利用状況および構成状態に応じて仮想マシン１２０の起動パラメータの再割当値を算出し、パラメータ記憶部１１６が保持する値を再割当値で書き換え、その後、仮想マシン起動管理部１１４に対し仮想マシン１２０の再起動を要求する。なお、パラメータ管理コントローラ部１１２は、本実施形態の算出手段を構成する。
【００２８】
図３（Ｂ）は、パラメータ記憶部１１６が格納するデータ構造を示す。図３（Ｂ）に示すパラメータ・データ２１０には、ヒープメモリ領域の初期サイズ、ヒープメモリ領域の最大サイズ、ＪＩＴのキャッシュ領域のサイズが定義されている。パラメータ記憶部１１６は、例えばＮＶ−ＲＡＭ２６などの記憶領域により提供される。ヒープメモリおよびＪＩＴのキャッシュの最適なサイズは、仮想マシン１２０上で動作するアプリケーションの特性等に応じて変化し、またこのサイズの適否は実行アプリケーションの性能に影響を及ぼす。このため、これらの起動パラメータは例示であるが、最適化する必要性は高いものである。なお、パラメータ記憶部１１６は、本実施形態の仮想マシンの１以上の制御パラメータを記憶する記憶手段を構成する。
【００２９】
仮想マシン起動管理部１１４は、パラメータ管理コントローラ部１１２からの要求に応答して、パラメータ記憶部１１６から起動パラメータの最新の値を読み出し、仮想マシン１２０に対して再起動を指令する。再起動の指令を受信した仮想マシン１２０は、アプリケーション１２６，１２８および上記各モジュール１２２，１２４，１３０を一旦終了させた後、仮想マシン１２０自体の終了処理を行い、再起動を開始する。再起動が完了すると、最新の起動パラメータによって最適化された状態で制御モジュール１２２，１２４，１３０およびアプリケーション１２６，１２８を動作させる。なお、仮想マシン起動管理部１１４は、本実施形態の指令手段を構成する。
【００３０】
以下、図４および図５を参照して、本実施形態のパラメータ設定方法について説明する。図４（Ａ）〜（Ｃ）は、本実施形態の各制御モジュール１２２，１２４，１３０が実行する処理を示すフローチャートである。図４（Ａ）は、カウンタ制御モジュール１３０が実行する処理を示すフローチャートである。図４（Ａ）に示す処理は、カウンタ制御モジュール１３０の起動に応答して、ステップＳ１００から開始される。
【００３１】
ステップＳ１０１では、カウンタ制御モジュール１３０は、アプリケーション監視用のＡＰＩを呼び出して、アプリケーションの動作状態をモニタする。ステップＳ１０２では、カウンタ制御モジュール１３０は、アプリケーションの動作を検出したか否かを判定する。ステップＳ１０２で、アプリケーションの動作を検出しなかった場合（ＮＯ）には、再びステップＳ１０１へループさせ、再度動作の検出を試みる。一方、ステップＳ１０２で、アプリケーションの動作を検出した場合（ＹＥＳ）、ステップＳ１０３へ処理を進める。ステップＳ１０３では、カウンタ制御モジュール１３０は、動作を検出したアプリケーションの動作回数を記録するカウント値をカウントアップし、ステップＳ１０１へループさせ、動作の検出を繰り返す。図４（Ａ）に示す処理により、アプリケーションの動作回数が計数されて行く。
【００３２】
図４（Ｂ）は、プラグイン管理モジュール１２４が実行する処理を示すフローチャートである。図４（Ｂ）に示す処理は、プラグイン管理モジュール１２４の起動に応答して、ステップＳ２００から開始される。ステップＳ２０１では、プラグイン管理モジュール１２４は、アプリケーションの追加または削除が発生していないかをモニタし、ステップＳ２０２では、アプリケーションの追加または削除が検出されたか否かを判定する。ステップＳ２０２で、追加または削除が検出されなかった場合（ＮＯ）には、再びステップＳ２０１へループさせ、追加または削除が検出されるのを待ち受ける。
【００３３】
一方、ステップＳ２０２で、アプリケーションの追加または削除を検出した場合（ＹＥＳ）、ステップＳ２０３へ処理を進める。ステップＳ２０３では、プラグイン管理モジュール１２４は、その追加または削除されたアプリケーションを状態監視モジュール１２２に対して通知し、ステップＳ２０１へループさせ、再度追加または削除が検出されるのを待ち受ける。図４（Ｂ）に示す処理により、アプリケーションが追加または削除された場合、その旨が状態監視モジュール１２２に通知が発せられ、状態監視モジュール１２２は、この通知を受けて、パラメータの再割当の要否を判断することになる。
【００３４】
図４（Ｃ）は、状態監視モジュール１２２が実行する処理を示すフローチャートである。図４（Ｃ）に示す処理は、状態監視モジュール１２２の起動に応答して、ステップＳ３００から開始される。ステップＳ３０１では、状態監視モジュール１２２は、カウンタ記憶部１３２のカウンタ・データ２００を参照し、カウント値の変化から利用状況の変化を監視する。ステップＳ３０２では、状態監視モジュール１２２は、有意な利用状況の変化が認められるか否かを判定する。なお、どのような利用状況の変化を有意な変化と判断するかについては、起動パラメータの算出方法に応じて定めることもできるため、詳細は後述する。
【００３５】
ステップＳ３０２で、有意な利用状況の変化が認められなかった場合（ＮＯ）には、ステップＳ３０３へ処理を進める。ステップＳ３０３では、状態監視モジュール１２２は、プラグイン管理モジュール１２４からアプリケーションの追加または削除、つまり構成状態の変化が通知されているか否かを判定する。ステップＳ３０３で、構成状態の変化が通知されていない場合（ＮＯ）は、利用状況にも構成状態にも有意な変化が発生していないことを意味しているため、ステップＳ３０１へループさせ、モニタを継続する。
【００３６】
一方、構成状態の変化が通知されている場合（ＹＥＳ）、またはステップＳ３０２で、有意な利用状況の変化が認められた場合（ＹＥＳ）には、ステップＳ３０４へ処理を進める。ステップＳ３０４では、状態監視モジュール１２２は、ネイティブ形式のプログラムＮとして動作するパラメータ管理コントローラ部１１２に対し、パラメータの再割当を促すため構成状態および利用状況の変化を通知し、再びステップＳ３０１へ処理をループさせ、再度パラメータの変更が必要となる時期がくるのを待ち受ける。
【００３７】
図５は、本実施形態のパラメータ管理コントローラ部１１２が実行する処理を示すフローチャートである。図５に示す処理は、パラメータ管理コントローラ部１１２の起動に応答して、ステップＳ４００から開始される。ステップＳ４０１では、パラメータ管理コントローラ部１１２は、状態監視モジュール１２２から通知を受け取ったか否かを判定する。ステップＳ４０１で、通知が無い間（ＮＯの間）は、ステップＳ４０１内をループさせ、状態監視モジュール１２２からの通知を待ち受ける。一方、ステップＳ４０１で、通知があると判定された場合（ＹＥＳ）には、ステップＳ４０２へ処理が進められ、起動パラメータの再割当処理が開始される。
【００３８】
ステップＳ４０２では、パラメータ管理コントローラ部１１２は、ヒープメモリ領域の最大サイズを算出する。ヒープメモリ領域の最大サイズは、好適には、現在システムに追加されているプラグインアプリケーションの数に対応させて算出することができる。または、ヒープメモリ領域の最大サイズは、好適には、現在システムに追加されているプラグインアプリケーションに対し定義されている必要ヒープ量の合計値に対応して算出することもできる。なお、アプリケーション数または必要ヒープ量の合計値に応じてヒープメモリ容量の最大サイズを決定する場合には、上述した構成状態の変化を検出する際には、アプリケーション数が変化したことをもって構成状態が有意に変化したものと判定することができる。
【００３９】
ステップＳ４０３では、パラメータ管理コントローラ部１１２は、ヒープメモリ領域の初期サイズを算出する。ヒープメモリ領域の初期サイズは、好適には、ユーザが頻繁に利用しているアプリケーションに対応させて算出することができる。例えば、システムの起動に必要なヒープメモリ領域のサイズと、ユーザが頻繁に利用する上位の１または複数のアプリケーションが動作するのに必要なヒープメモリ領域のサイズとの合計した値を、ヒープメモリ領域の初期サイズとすることができる。ここで、利用頻度の高いアプリケーションの必要ヒープ量に応じて初期ヒープメモリ容量のサイズを決定する場合には、上述した利用状況の変化を検出する際には、カウンタ値の変化により、アプリケーションの利用動作回数の順位が変化した場合に、利用状況が有意に変化したものと判定することができる。
【００４０】
ステップＳ４０４では、パラメータ管理コントローラ部１１２は、さらに、ＪＩＴのキャッシュ領域のサイズを算出する。ＪＩＴのキャッシュ領域のサイズは、ユーザが頻繁に利用する機能において必要なコードを実際に擬似的に実行することで算出することができる。その他の手法では、各アプリケーションに定義されている必要ＪＩＴキャッシュ領域サイズに対応させてＪＩＴのキャッシュ領域のサイズを算出することもできる。
【００４１】
ステップＳ４０５では、パラメータ管理コントローラ部１１２は、算出した最大ヒープ領域のサイズ、初期ヒープ領域のサイズおよびＪＩＴのキャッシュ領域のサイズをパラメータ記憶部１１６に保存し、再割当を行う。ステップＳ４０６では、パラメータ管理コントローラ部１１２は、仮想マシン起動管理部１１４に対し、仮想マシン１２０の再起動を要求し、ステップＳ４０１へループさせる。要求を受けた仮想マシン起動管理部１１４は、仮想マシン１２０に対し再起動を指令し、これを受けて仮想マシン１２０は、再起動を開始する。
【００４２】
上述した第１の実施形態によれば、仮想マシン１２０において、複合機１０の構成状態および利用状況に適合した最適な起動パラメータを自動的に設定し、仮想マシン１２０を再起動することにより、自動的にパラメータを反映させることができる。適切なパラメータを設定し、反映することで、ガベージ・コレクションやＪＩＴコンパイルのスラッシングによるアプリケーションの性能への悪影響を抑制することが可能となる。さらに、アプリケーションの利用状況に応じてパラメータが算出されるため、複合機１０の利用状況に応じたきめ細やかなパラメータのチューニングが可能となる。
【００４３】
なお、上述した例では、利用状況および構成状態に応じて算出される起動パラメータとして、ヒープメモリ領域の最大サイズ、ヒープメモリ領域の初期サイズおよびＪＩＴのキャッシュ領域のサイズの３つの起動パラメータを対象としたが、特にこれに限定されるものではない。その他、ガベージ・コレクションにおける、ＮＥＷ領域のサイズ、ＧＣ時間比などのチューニング対象となり得る仮想マシンのいかなる制御パラメータを対象とすることができる。
【００４４】
上述した実施形態では、起動パラメータの算出後、仮想マシン１２０を再起動させ、パラメータの再割当値を直ちに反映させる構成としたが、以下、当該複合機１０をユーザが利用していないアイドル状態に仮想マシン１２０を再起動させることで、複合機１０の利用に不具合を回避することができる第２の実施形態について説明する。なお、第２の実施形態は、第１の実施形態と同様の構成を有するため、同様の機能部およびモジュールには第１の実施形態と同一符番を付し、相違点を中心に説明する。
【００４５】
図６は、第２の実施形態の複合機のソフトウェア構成を示す。第２の実施形態のソフトウェア構成１００は、第１の実施形態と同様に、ＯＳ１１０、パラメータ記憶部１１６、ネイティブコード形式のプログラム群Ｎ、仮想マシン１２０、バイトコード形式のプログラム群Ｂおよびカウンタ記憶部１３２を含んで構成される。バイトコード形式のプログラム群Ｂとしては、第１の実施形態と同様に、状態監視モジュール１２２、プラグイン管理モジュール１２４、アプリケーション１２６，１２８およびカウンタ制御モジュール１３０を含む。
【００４６】
本実施形態のネイティブ形式のプログラム群Ｎとしては、第１の実施形態で説明したパラメータ管理コントローラ部１１２および仮想マシン起動管理部１１４に加えて、省エネルギー移行制御部１１８が含まれる。本実施形態の仮想マシン１２０上の状態監視モジュール１２２は、構成状態または利用状況の有意な変化を検出すると、その変化をパラメータ管理コントローラ部１１２へ通知する。パラメータ管理コントローラ部１１２は、仮想マシン１２０が起動時に読み込む起動パラメータを管理しており、上記通知を受信すると、利用状況および構成状態に応じて仮想マシン１２０の起動パラメータの再割当値を算出し、パラメータ記憶部１１６が保持する値を再割当値で書き換え、省エネルギー移行制御部１１８に対し、パラメータを再割当した旨を通知する。
【００４７】
省エネルギー移行制御部１１８は、通常モードと、エンジン部４４への電力供給が停止される省エネルギーモードとの状態制御をし、省エネルギーモードへの移行条件が成立したことに応答し、省エネルギーモードへの移行処理を行い、通常モードへの復帰条件が成立したことに応答して復帰処理を行う。ここで、省エネルギー・モードとしては、複合機１０の各部への電力供給の状態に応じて複数種類のモードが存在し得るが、本実施形態では、説明の便宜上、１つのモードのみが存在するものとして説明する。また、上記移行条件としては、特に限定されるものではないが、例えば、当該複合機１０に対する操作および命令が一定時間行われなかったことを条件とすることができる。
【００４８】
省エネルギー移行制御部１１８は、上記パラメータ管理コントローラ部１１２により起動パラメータが再割当された場合に、省エネルギー・モードに移行する際に、仮想マシン起動管理部１１４に対し仮想マシン１２０の再起動を要求する。なお、仮想マシン１２０の再起動は、省エネルギー・モードから復帰する際に行っても良い。なお、省エネルギー移行制御部１１８は、本実施形態の省エネルギー制御手段を構成する。
【００４９】
仮想マシン起動管理部１１４は、省エネルギー移行制御部１１８からの要求に応答して、パラメータ記憶部１１６から起動パラメータの最新の値を読み出し、仮想マシン１２０に対して再起動を指令する。再起動の指令を受信した仮想マシン１２０は、終了処理を行い、再起動を開始する。再起動が完了すると、最新の起動パラメータによって最適化された状態で制御モジュール１２２，１２４，１３０およびプラグインアプリケーション１２６，１２８を動作させる。
【００５０】
以下、図７および図８を参照して、第２の実施形態のパラメータ設定方法について説明する。なお、カウンタ制御モジュール１３０、プラグイン管理モジュール１２４、状態監視モジュール１２２が実行する処理は、図４（Ａ）〜（Ｃ）に示した処理と同様であるため、説明は割愛する。図７は、第２の実施形態のパラメータ管理コントローラ部１１２が実行する処理を示すフローチャートである。図７に示す処理は、パラメータ管理コントローラ部１１２の起動に応答して、ステップＳ５００から開始される。ステップＳ５０１では、パラメータ管理コントローラ部１１２は、状態監視モジュール１２２から通知を受け取ったか否かを判定する。ステップＳ５０１で、通知が無い間（ＮＯの間）は、ステップＳ５０１内をループさせる。一方、ステップＳ５０１で、通知があると判定された場合（ＹＥＳ）には、ステップＳ５０２へ処理が進められ、起動パラメータの再割当処理が開始される。
【００５１】
ステップＳ５０２では、パラメータ管理コントローラ部１１２は、構成状態に応じてヒープメモリ領域の最大サイズを算出する。ステップＳ５０３では、パラメータ管理コントローラ部１１２は、利用状況に応じてヒープメモリ領域の初期サイズを算出する。ステップＳ５０４では、パラメータ管理コントローラ部１１２は、利用状況に応じてＪＩＴのキャッシュ領域のサイズを算出する。
【００５２】
ステップＳ５０５では、パラメータ管理コントローラ部１１２は、算出した最大ヒープ領域のサイズ、初期ヒープ領域のサイズおよびＪＩＴのキャッシュ領域のサイズをパラメータ記憶部１１６に保存し、再割当を行う。ステップＳ５０６では、パラメータ管理コントローラ部１１２は、省エネルギー移行制御部１１８に対し、起動パラメータが再割当された旨を通知し、ステップＳ５０１へループさせる。
【００５３】
図８は、第２の実施形態の省エネルギー移行制御部１１８が実行する処理を示すフローチャートである。図８に示す処理は、省エネルギー移行制御部１１８の起動に応答して、ステップＳ６００から開始される。ステップＳ６０１では、省エネルギー移行制御部１１８は、複合機１０の操作状況を監視し、省エネルギーモードへ移行する条件が成立したか否かを判定する。例えば、複合機１０が一定時間アイドル状態であった場合に、省エネルギーモード移行条件が成立することになる。ステップＳ６０１で、省エネルギーモード移行条件が成立していないと判定された場合（ＮＯ）には、ステップＳ６０１内をループさせ、省エネルギーモード移行条件の成立を待ち受ける。
【００５４】
一方、ステップＳ６０１で、省エネルギーモード移行条件が成立したと判定された場合（ＹＥＳ）には、ステップＳ６０２へ処理を進める。ステップＳ６０２では、省エネルギー移行制御部１１８は、パラメータ管理コントローラ部１１２からのパラメータ再割当の通知があったか否かを判定する。ステップＳ６０２で、パラメータ再割当の通知があった場合（ＹＥＳ）には、ステップＳ６０３へ処理を進める。
【００５５】
ステップＳ６０３では、省エネルギー移行制御部１１８は、再割当されたパラメータを反映させるため、仮想マシン起動管理部１１４に対し、仮想マシンの再起動を要求する。ステップＳ６０４では、省エネルギー移行制御部１１８は、省エネルギーモードへの移行処理を実行し、ステップＳ６０５で本処理を終了させる。一方、ステップＳ６０２で、パラメータ再割当の通知が無かった場合（ＮＯ）には、ステップＳ６０４へ直接処理を進める。再起動の要求を受けた仮想マシン起動管理部１１４は、適宜、仮想マシン１２０に対し再起動を指令し、これを受けて仮想マシン１２０は、再起動を開始する。なお、仮想マシン１２０の再起動は、システムメモリ１６への給電が維持される省エネルギーモードの場合には、該省エネルギーモードへ移行する前に実行されてもよいし、その他、省エネルギーモードからの復帰時に再起動が行われても良い。
【００５６】
上述した第２の実施形態によれば、当該複合機１０をユーザが利用していないアイドル状態に仮想マシン１２０の再起動処理を行うことで、複合機１０の利用中に仮想マシン１２０の再起動が発生し、コピーなどの生産性やファクシミリ通信などのリアルタイム性が低下してしまう可能性を回避することができる。
【００５７】
以上説明したように、本発明の実施形態によれば、複合機などの組み込み装置上で動作する仮想マシンにおいて、アプリケーションの構成状態と、さらに時々刻々と変化するアプリケーションの利用状況とに適合させて最適な制御パラメータを自動的に設定することが可能な組み込み装置、パラメータ設定方法、プログラムおよび記録媒体を提供することができる。
【００５８】
本発明の実施形態によれば、仮想マシンにおいて、組み込み装置の構成状態および利用状況に適合した最適な制御パラメータを自動的に設定し、仮想マシンを再起動することにより、自動的に制御パラメータを反映させることができる。適切な制御パラメータを設定し、反映することで、仮想マシンが提供するガベージ・コレクション機能やＪＩＴコンパイル機能におけるスラッシングによるアプリケーションの性能への悪影響を抑制することが可能となる。さらに、アプリケーションの利用状況に応じてパラメータが算出されるため、組み込み装置の利用状況に応じたきめ細やかなパラメータのチューニングが可能となる。
【００５９】
なお、本発明の実施形態は、上述した実施形態に限定されず、他の実施形態では、例えば、ヒープメモリ領域のサイズ不足を警告するエラー（OutofMemoryError）の発生を検出し、状態監視モジュールに通知するエラー検出モジュール（図示せず）を含むことができる。さらに他の実施形態では、ＪＩＴコンパイラが使用するメモリ領域のスラッシングの発生を検出し、状態監視モジュール１２２に通知するスラッシング検出モジュール（図示せず）を含むことができる。これらの実施形態では、上記パラメータ管理コントローラ部１１２は、上記エラーおよびスラッシングの発生に応答して、それぞれヒープメモリ領域およびＪＩＴキャッシュ領域のサイズの再割当値を増大させて計算することができる。上記構成により、ヒープメモリ領域のサイズ不足を警告するエラー（OutofMemoryError）が発生してアプリケーションが停止してしまうことを避け、またスラッシングが発生し性能が劣化してしまうことを避けることができる。
【００６０】
さらに他の実施形態では、搭載メモリサイズ毎に設定可能なサイズの最大値を対応付けた情報を予めＮＶ−ＲＡＭ等に準備しておき、算出されたヒープメモリ領域のサイズの再割当値と上記最大値とを比較して、再割当値が当該複合機１０に搭載されるメモリ１６、２２に対し設定可能な最大値を超える場合に、複合機が備えるオペレーションパネル４０を介してメモリ増設を促すユーザ通知を行うことができる。搭載メモリごとに設定可能なヒープメモリ領域のサイズの最大値が規定されている場合には、設定可能なサイズより大きな値が算出されても、設定可能な最大値に設定されることになる。上述した実施形態によれば、メモリ増設を促すことで、算出された最適なサイズが設定されず、ヒープメモリ領域のサイズ不足を発生させてしまうことを好適に回避することができる。
【００６１】
さらに他の実施形態では、スワップを発生させて生産性を低下させてしまうヒープメモリ領域のサイズの基準値を予め準備しておき、算出されたヒープメモリ領域のサイズの再割当値と上記基準値とを比較して、再割当値が基準値を超える場合に、複合機が備えるオペレーションパネル４０を介して、メモリ増設を促すユーザ通知を行うことができる。スワップが発生することによってプログラムのスループットが低下してしまうため、スワップが例えば一定以上発生した場合に、またはスワップのデータ量が一定値を超えた場合に、ユーザに対してメモリの増設を促すことにより、生産性の低下を防ぐことができる。
【００６２】
本実施形態の上記機能は、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）などのオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、本実施形態のプログラムは、ハードディスク装置、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、フレキシブルディスク、ＥＥＰＲＯＭ、ＥＰＲＯＭなどの装置可読な記録媒体に格納して頒布することができ、また他装置が可能な形式でネットワークを介して伝送することができる。
【００６３】
これまで本実施形態につき説明してきたが、本発明は、上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【００６４】
１０…複合機、１２…コントローラ、１４…ＣＰＵ、１６…システムメモリ、１８…ＮＢ、２０…ＡＳＩＣ、２２…ローカルメモリ、２４…ＨＤＤ、２６…ＮＶ−ＲＡＭ、２８…ＳＢ、３０…ＮＩＣ、３２…ＳＤカード・スロット、３４…ＵＳＢインタフェース、３６…ＩＥＥＥ１３９４インタフェース、３８…セントロニクス・インタフェース、４０…オペレーションパネル、４２…ＦＣＵ、４４…エンジン部、４６…ＡＧＰ、４８…ＰＣＩバス、５０…ＰＣＩバス、１００…ソフトウェア構成、１１０…ＯＳ、１１２…パラメータ管理コントローラ部、１１４…仮想マシン起動管理部、１１６…パラメータ記憶部、１１８…省エネルギー移行制御部、１２０…仮想マシン、１２２…状態監視モジュール、１２４…プラグイン管理モジュール、１２６，１２８…プラグインアプリケーション、１３０…カウンタ制御モジュール、１３２…カウンタ記憶部、２００…カウンタ・データ、２１０…パラメータ・データ
【先行技術文献】
【特許文献】
【００６５】
【特許文献１】特開２００４−５６５０号公報
【図１】
2012027768.tif 000003
【図２】
2012027768.tif 000004
【図３】
2012027768.tif 000005
【図４】
2012027768.tif 000006
【図５】
2012027768.tif 000007
【図６】
2012027768.tif 000008
【図７】
2012027768.tif 000009
【図８】
2012027768.tif 000010