(57)【要約】  情報処理装置（１００）において、第１取得部（２００）および第２取得部（２３０）といった取得部は、リアルタイムアプリケーションと複数の汎用アプリケーションとが実行される試運転フェーズにおいて、汎用ＯＳ情報を取得する。汎用ＯＳ情報は、試運転フェーズで実行される複数の汎用アプリケーションのそれぞれによるハードウェアの使用についての情報である。管理部（２２０）は、汎用アプリケーションごとに、取得部により取得された汎用ＯＳ情報に基づいて、ハードウェアの使用を制限するための条件が満たされているかどうかを判定する。管理部（２２０）は、条件が満たされていると判定した場合、リアルタイムアプリケーションと複数の汎用アプリケーションとが実行される実運用フェーズにおいて、該当する汎用アプリケーションによるハードウェアの使用を制限する。
2019215795.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアと、
リアルタイムオペレーティングシステムを介して前記ハードウェアを使用して動作するアプリケーションプログラムであるリアルタイムアプリケーションと、それぞれ非リアルタイムオペレーティングシステムを介して前記ハードウェアを使用して動作するアプリケーションプログラムである複数の汎用アプリケーションとが実行される試運転フェーズにおいて、前記複数の汎用アプリケーションのそれぞれによる前記ハードウェアの使用についての情報である汎用ＯＳ情報を取得する取得部と、
汎用アプリケーションごとに、前記取得部により取得された汎用ＯＳ情報に基づいて、前記ハードウェアの使用を制限するための条件が満たされているかどうかを判定し、前記条件が満たされていると判定した場合、前記リアルタイムアプリケーションと前記複数の汎用アプリケーションとが実行される実運用フェーズにおいて、該当する汎用アプリケーションによる前記ハードウェアの使用を制限する管理部と
を備える情報処理装置。
【請求項２】
前記ハードウェアを複数種類備え、
前記取得部は、前記ハードウェアの種類ごとに、前記汎用ＯＳ情報を取得し、
前記管理部は、汎用アプリケーションおよび前記ハードウェアの種類の組み合わせごとに、前記汎用ＯＳ情報に基づいて、前記条件が満たされているかどうかを判定し、前記条件が満たされていると判定した場合、前記実運用フェーズにおいて、該当する汎用アプリケーションによる、該当する種類の前記ハードウェアの使用を制限する請求項１に記載の情報処理装置。
【請求項３】
前記ハードウェアには、プロセッサが含まれ、
前記取得部は、前記汎用ＯＳ情報として、前記プロセッサの使用率を示す情報を取得し、
前記管理部は、汎用アプリケーションごとに、前記汎用ＯＳ情報に示されている前記プロセッサの使用率がしきい値以上であれば、前記プロセッサについて前記条件が満たされていると判定する請求項１または２に記載の情報処理装置。
【請求項４】
前記管理部は、前記条件が満たされていると判定した場合、前記実運用フェーズにおいて、該当する汎用アプリケーションが実行される際に、前記プロセッサの周波数を低くする請求項３に記載の情報処理装置。
【請求項５】
前記取得部は、前記汎用ＯＳ情報として、前記ハードウェアの使用期間を示す情報を取得し、
前記管理部は、汎用アプリケーションごとに、前記汎用ＯＳ情報に示されている前記ハードウェアの使用期間が前記リアルタイムオペレーティングシステムの割り込み周期に重なっていれば、前記条件が満たされていると判定する請求項１または２に記載の情報処理装置。
【請求項６】
前記管理部は、前記条件が満たされていると判定した場合、前記汎用ＯＳ情報に示されている前記ハードウェアの使用期間と前記リアルタイムオペレーティングシステムの割り込み周期との重なりの度合いに応じて、該当する汎用アプリケーションによる前記ハードウェアの使用を制限する方法を変える請求項５に記載の情報処理装置。
【請求項７】
前記ハードウェアには、メモリが含まれ、
前記取得部は、前記汎用ＯＳ情報として、前記メモリへのＤＭＡ転送の実施期間を示す情報を取得し、
前記管理部は、汎用アプリケーションごとに、前記汎用ＯＳ情報に示されている前記メモリへのＤＭＡ転送の実施期間が前記リアルタイムオペレーティングシステムの割り込み周期に重なっていれば、前記条件が満たされていると判定する請求項１または２に記載の情報処理装置。
【請求項８】
前記管理部は、前記条件が満たされていると判定した場合、前記汎用ＯＳ情報に示されている前記メモリへのＤＭＡ転送の実施期間と前記リアルタイムオペレーティングシステムの割り込み周期との重なりの度合いがしきい値以上であれば、該当する汎用アプリケーションによる前記メモリへのＤＭＡ転送の送信サイズを小さくし、そうでなければ、該当する汎用アプリケーションによる前記メモリへのＤＭＡ転送をＰＩＯ転送に変える請求項７に記載の情報処理装置。
【請求項９】
前記ハードウェアには、ディスクが含まれ、
前記取得部は、前記汎用ＯＳ情報として、前記ディスクへのアクセスの実施期間を示す情報を取得し、
前記管理部は、汎用アプリケーションごとに、前記汎用ＯＳ情報に示されている前記ディスクへのアクセスの実施期間が前記リアルタイムオペレーティングシステムの割り込み周期に重なっていれば、前記条件が満たされていると判定する請求項１または２に記載の情報処理装置。
【請求項１０】
前記管理部は、前記条件が満たされていると判定した場合、該当する汎用アプリケーションによる前記ディスクへのアクセスのブロックサイズを小さくする請求項９に記載の情報処理装置。
【請求項１１】
前記試運転フェーズは、複数回繰り返され、
前記管理部は、前記試運転フェーズが１回終了する度に、汎用アプリケーションごとに、終了したフェーズにおいて前記汎用ＯＳ情報として前記取得部により取得された情報に基づいて、前記条件が満たされているかどうかを判定し、前記条件が満たされていると判定した場合、該当する汎用アプリケーションによる前記ハードウェアの使用を制限するためのパラメータを調整し、前記試運転フェーズがすべて終了した後、前記実運用フェーズにおいて、前記パラメータを用いて、該当する汎用アプリケーションによる前記ハードウェアの使用を制限する請求項１から１０のいずれか１項に記載の情報処理装置。
【請求項１２】
取得部が、リアルタイムオペレーティングシステムを介してハードウェアを使用して動作するアプリケーションプログラムであるリアルタイムアプリケーションと、それぞれ非リアルタイムオペレーティングシステムを介して前記ハードウェアを使用して動作するアプリケーションプログラムである複数の汎用アプリケーションとが実行される試運転フェーズにおいて、前記複数の汎用アプリケーションのそれぞれによる前記ハードウェアの使用についての情報である汎用ＯＳ情報を取得し、
管理部が、汎用アプリケーションごとに、前記取得部により取得された汎用ＯＳ情報に基づいて、前記ハードウェアの使用を制限するための条件が満たされているかどうかを判定し、前記条件が満たされていると判定した場合、前記リアルタイムアプリケーションと前記複数の汎用アプリケーションとが実行される実運用フェーズにおいて、該当する汎用アプリケーションによる前記ハードウェアの使用を制限するチューニング方法。
【請求項１３】
ハードウェアを備えるコンピュータに、
リアルタイムオペレーティングシステムを介して前記ハードウェアを使用して動作するアプリケーションプログラムであるリアルタイムアプリケーションと、それぞれ非リアルタイムオペレーティングシステムを介して前記ハードウェアを使用して動作するアプリケーションプログラムである複数の汎用アプリケーションとが実行される試運転フェーズにおいて、前記複数の汎用アプリケーションのそれぞれによる前記ハードウェアの使用についての情報である汎用ＯＳ情報を取得する取得手順と、
汎用アプリケーションごとに、前記取得手順により取得された汎用ＯＳ情報に基づいて、前記ハードウェアの使用を制限するための条件が満たされているかどうかを判定し、前記条件が満たされていると判定した場合、前記リアルタイムアプリケーションと前記複数の汎用アプリケーションとが実行される実運用フェーズにおいて、該当する汎用アプリケーションによる前記ハードウェアの使用を制限する管理手順と
を実行させるチューニングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、チューニング方法およびチューニングプログラムに関するものである。
【背景技術】
【０００２】
近年では、ＣＰＵの高性能化に伴う仮想化技術の発展により、１台の情報処理システムに複数のＯＳを搭載することが可能である。そのような複数のＯＳが搭載された情報処理システムで、各ＯＳの動作を管理するソフトウェアをハイパーバイザと呼ぶ。動作するＯＳをゲストＯＳと呼ぶ。ハイパーバイザを用いて、単一ハードウェアプラットフォーム上で複数のＯＳを動作させる技術は、組み込みシステムでも用いられている。このようなシステムでは、リアルタイム性の高い処理を行うリアルタイムＯＳと、情報処理を行うＷｉｎｄｏｗｓ（登録商標）等の汎用ＯＳとを同時実行する環境が用いられる。しかし、これらのＯＳは同じハードウェアを使用している。そのため、汎用ＯＳの処理内容によっては、バスが長時間専有されてしまう場合がある。その結果、リアルタイムＯＳのリアルタイム応答性能に対するオーバヘッドが発生する可能性がある。「ＣＰＵ」は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略語である。「ＯＳ」は、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍの略語である。【０００３】
特許文献１には、優先度の低い仮想サーバのＤＭＡ流量があらかじめ設定したしきい値より多い場合に、割り当てるＣＰＵ時間を減らすことで、優先度の高い仮想サーバがＩ／Ｏへのアクセスを行うことを可能とする技術が記載されている。「ＤＭＡ」は、Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓの略語である。「Ｉ／Ｏ」は、Ｉｎｐｕｔ／Ｏｕｔｐｕｔの略語である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１７６４８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の技術においては、優先度の低い仮想サーバへ割り当てるＣＰＵ時間を減らすことで、優先度の低い仮想サーバの、他の仮想サーバの処理に影響しない処理も停止してしまう。【０００６】
本発明は、リアルタイムＯＳ以外のＯＳの、リアルタイムＯＳの処理に影響しない処理を止めることなく、リアルタイムＯＳが優先的にハードウェアへのアクセスを行うことを可能とすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様に係る情報処理装置は、
ハードウェアと、
リアルタイムオペレーティングシステムを介して前記ハードウェアを使用して動作するアプリケーションプログラムであるリアルタイムアプリケーションと、それぞれ非リアルタイムオペレーティングシステムを介して前記ハードウェアを使用して動作するアプリケーションプログラムである複数の汎用アプリケーションとが実行される試運転フェーズにおいて、前記複数の汎用アプリケーションのそれぞれによる前記ハードウェアの使用についての情報である汎用ＯＳ情報を取得する取得部と、
汎用アプリケーションごとに、前記取得部により取得された汎用ＯＳ情報に基づいて、前記ハードウェアの使用を制限するための条件が満たされているかどうかを判定し、前記条件が満たされていると判定した場合、前記リアルタイムアプリケーションと前記複数の汎用アプリケーションとが実行される実運用フェーズにおいて、該当する汎用アプリケーションによる前記ハードウェアの使用を制限する管理部と
を備える。
【発明の効果】
【０００８】
本発明では、リアルタイムＯＳ以外のＯＳ上で動作するアプリケーションのうち、試運転フェーズで得られた情報に基づいて一定の条件を満たしていると判定されたアプリケーションに対し、実運用フェーズでハードウェアの使用が制限される。条件を満たしていないと判定されたアプリケーションに対して実運用フェーズでハードウェアの使用を制限しないことで、リアルタイムＯＳ以外のＯＳの、リアルタイムＯＳの処理に影響しない処理を止めることなく、リアルタイムＯＳに優先的にハードウェアへのアクセスを行わせることができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る情報処理装置のソフトウェア構成を示すブロック図。
【図２】実施の形態１に係る情報処理装置のハードウェア構成を示すブロック図。
【図３】実施の形態１に係る情報処理装置の機能構成を示すブロック図。
【図４】実施の形態１に係る情報処理装置のＨＶメモリ領域内のテーブル群を示すブロック図。
【図５】実施の形態１に係る情報処理装置のＲＴＯＳ情報テーブル例を示す図。
【図６】実施の形態１に係る情報処理装置の汎用ＯＳ情報テーブル例を示す図。
【図７】実施の形態１に係る情報処理装置のしきい値テーブル例を示す図。
【図８】実施の形態１に係る情報処理装置のチューニングテーブル例を示す図。
【図９】実施の形態１に係る情報処理装置の動作を示すフローチャート。
【図１０】実施の形態１に係る情報処理装置の動作を示すフローチャート。
【図１１】実施の形態１に係る情報処理装置の動作を示すフローチャート。
【図１２】実施の形態１に係る情報処理装置の動作を示すフローチャート。
【図１３】実施の形態１に係る情報処理装置の動作を示すフローチャート。
【図１４】実施の形態２に係る情報処理装置の動作を示すフローチャート。
【図１５】実施の形態２に係る情報処理装置の動作を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について、図を用いて説明する。各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。なお、本発明は、以下に説明する実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。例えば、以下に説明する実施の形態のうち、２つ以上の実施の形態が組み合わせられて実施されても構わない。あるいは、以下に説明する実施の形態のうち、１つの実施の形態または２つ以上の実施の形態の組み合わせが部分的に実施されても構わない。
【００１１】
実施の形態１．
本実施の形態について、図１から図１３を用いて説明する。
【００１２】
＊＊＊構成の説明＊＊＊
図１から図３を参照して、本実施の形態に係る情報処理装置１００の構成を説明する。
【００１３】
情報処理装置１００は、複数のＯＳを動作させるコンピュータである。
【００１４】
図１に示すように、情報処理装置１００では、リアルタイムアプリケーション１０１Ａ、複数の汎用アプリケーション１０１Ｂ、リアルタイムＯＳ１０２Ａ、汎用ＯＳ１０２Ｂおよびハイパーバイザ１０３といったソフトウェアが動作する。リアルタイムアプリケーション１０１Ａは、リアルタイムＯＳ１０２Ａを介してハードウェアを使用して動作するアプリケーションプログラムである。複数の汎用アプリケーション１０１Ｂは、それぞれ汎用ＯＳ１０２Ｂを介してハードウェアを使用して動作するアプリケーションプログラムである。汎用ＯＳ１０２Ｂは、非リアルタイムＯＳである。ハイパーバイザ１０３は、本実施の形態に係るチューニングプログラムに相当する。
【００１５】
図２に示すように、情報処理装置１００は、プロセッサ１０４、メモリ１０８、Ｉ／Ｏデバイス１０９、グラフィックスデバイス１１１およびＤＭＡコントローラ１２０といった複数種類のハードウェアを備える。プロセッサ１０４は、バス１１０を介して、メモリ１０８、Ｉ／Ｏデバイス１０９、グラフィックスデバイス１１１およびＤＭＡコントローラ１２０といった他のハードウェアと接続され、これら他のハードウェアを制御する。これらのバス１１０を介して接続されているハードウェアは、プロセッサ１０４による管理下で相互にデータの送受信等を行うことができる。
【００１６】
図３に示すように、情報処理装置１００は、機能要素として、第１取得部２００と、第１制御部２１０と、管理部２２０と、第２取得部２３０と、第２制御部２４０とを備える。第１取得部２００は、割り込み検出部２０１と、周期取得部２０２とを備える。第１制御部２１０は、利用率取得部２１１と、周波数取得部２１２と、周波数変更部２１３とを備える。管理部２２０は、データ読み出し部２２１と、データ比較部２２２と、データ更新部２２３と、テーブル作成部２２４と、パラメータ値算出部２２５とを備える。第２取得部２３０は、要求検出部２３１と、終了検出部２３２とを備える。第２制御部２４０は、命令検出部２４１と、サイズ取得部２４２と、サイズ変更部２４３と、時刻取得部２４４と、頻度取得部２４５とを備える。
【００１７】
第１取得部２００、第１制御部２１０、管理部２２０、第２取得部２３０および第２制御部２４０の機能は、ソフトウェアにより実現される。具体的には、第１取得部２００、第１制御部２１０、管理部２２０、第２取得部２３０および第２制御部２４０の機能は、ハイパーバイザ１０３により実現される。ハイパーバイザ１０３は、第１取得部２００、第１制御部２１０、管理部２２０、第２取得部２３０および第２制御部２４０により行われる手順をそれぞれ第１取得手順、第１制御手順、管理手順、第２取得手順および第２制御手順としてコンピュータに実行させるプログラムである。ハイパーバイザ１０３は、コンピュータ読取可能な媒体に記録されて提供されてもよいし、記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
【００１８】
プロセッサ１０４は、リアルタイムアプリケーション１０１Ａ、複数の汎用アプリケーション１０１Ｂ、リアルタイムＯＳ１０２Ａ、汎用ＯＳ１０２Ｂおよびハイパーバイザ１０３といったソフトウェアを実行する装置である。プロセッサ１０４は、具体的には、マルチコアＣＰＵである。
【００１９】
プロセッサ１０４は、第１コア１０４Ａと、第２コア１０４Ｂとを備える。
【００２０】
第１コア１０４Ａは、ハイパーバイザ１０３、リアルタイムＯＳ１０２Ａおよびリアルタイムアプリケーション１０１Ａを動作させる。第２コア１０４Ｂは、汎用ＯＳ１０２Ｂおよび汎用アプリケーション１０１Ｂを動作させる。
【００２１】
プロセッサ１０４は、ハードウェアとして、周波数変更機構１０５と、割り込みコントローラ１０６と、クロックジェネレータ１０７とをさらに備える。
【００２２】
周波数変更機構１０５は、クロックジェネレータ１０７を制御することによって、汎用アプリケーション１０１Ｂの使用する第２コア１０４Ｂの動作周波数を変更する機構である。割り込みコントローラ１０６は、Ｉ／Ｏデバイス１０９からの割り込みを検出して、リアルタイムＯＳ１０２Ａおよび汎用ＯＳ１０２ＢといったゲストＯＳへの割り込み信号を発生させる装置である。クロックジェネレータ１０７は、動作周波数に対応するクロック信号を生成する装置である。
【００２３】
メモリ１０８は、リアルタイムアプリケーション１０１Ａ、複数の汎用アプリケーション１０１Ｂ、リアルタイムＯＳ１０２Ａ、汎用ＯＳ１０２Ｂおよびハイパーバイザ１０３といったソフトウェアを記憶する装置である。メモリ１０８は、例えば、ＲＡＭ、フラッシュメモリまたはこれらの組み合わせである。「ＲＡＭ」は、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略語である。
【００２４】
メモリ１０８は、ハイパーバイザ１０３がデータ管理に要するＨＶメモリ領域１０８Ｃと、その他のメモリ領域１０８Ａとを備える。
【００２５】
Ｉ／Ｏデバイス１０９は、入力機器またはディスプレイである。入力機器は、リアルタイムアプリケーション１０１Ａ、複数の汎用アプリケーション１０１Ｂ、リアルタイムＯＳ１０２Ａ、汎用ＯＳ１０２Ｂおよびハイパーバイザ１０３といったソフトウェアへのデータの入力のためにユーザにより操作される機器である。入力機器は、例えば、マウス、キーボード、タッチパネル、または、これらのうちいくつか、もしくは、すべての組み合わせである。ディスプレイは、リアルタイムアプリケーション１０１Ａ、複数の汎用アプリケーション１０１Ｂ、リアルタイムＯＳ１０２Ａ、汎用ＯＳ１０２Ｂおよびハイパーバイザ１０３といったソフトウェアから出力されるデータを画面に表示する機器である。ディスプレイは、例えば、ＬＣＤである。「ＬＣＤ」は、Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙの略語である。
【００２６】
グラフィックスデバイス１１１は、ディスプレイに画像を出力する装置である。グラフィックスデバイス１１１は、例えば、グラフィックスカードである。
【００２７】
ＤＭＡコントローラ１２０は、ＤＭＡ処理を実行する装置である。
【００２８】
リアルタイムアプリケーション１０１Ａ、複数の汎用アプリケーション１０１Ｂ、リアルタイムＯＳ１０２Ａ、汎用ＯＳ１０２Ｂおよびハイパーバイザ１０３といったソフトウェアは、メモリ１０８からプロセッサ１０４に読み込まれ、プロセッサ１０４によって実行される。
【００２９】
リアルタイムアプリケーション１０１Ａ、複数の汎用アプリケーション１０１Ｂ、リアルタイムＯＳ１０２Ａ、汎用ＯＳ１０２Ｂおよびハイパーバイザ１０３といったソフトウェアは、補助記憶装置に記憶されていてもよい。補助記憶装置は、例えば、ＨＤＤ、フラッシュメモリまたはこれらの組み合わせである。「ＨＤＤ」は、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略語である。ソフトウェアは、補助記憶装置に記憶されている場合、メモリ１０８にロードされ、プロセッサ１０４によって実行される。
【００３０】
情報処理装置１００は、プロセッサ１０４を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、ソフトウェアの実行を分担する。それぞれのプロセッサは、具体的には、シングルコアＣＰＵまたはマルチコアＣＰＵである。
【００３１】
リアルタイムアプリケーション１０１Ａ、複数の汎用アプリケーション１０１Ｂ、リアルタイムＯＳ１０２Ａ、汎用ＯＳ１０２Ｂおよびハイパーバイザ１０３といったソフトウェアにより利用、処理または出力されるデータ、情報、信号値および変数値は、メモリ１０８、補助記憶装置、または、プロセッサ１０４内のレジスタまたはキャッシュメモリに記憶される。
【００３２】
図４を参照して、ハイパーバイザ１０３の使用するＨＶメモリ領域１０８Ｃに格納されるテーブル群について説明する。
【００３３】
ＨＶメモリ領域１０８Ｃには、汎用ＯＳ１０２Ｂの実行するアプリケーションの実行方法に対して、制限をかけるために必要な４つのテーブルが格納される。具体的には、ＲＴＯＳ情報テーブル３００と、汎用ＯＳ情報テーブル３０１と、しきい値テーブル３０２と、チューニングテーブル３０３とが格納される。「ＲＴＯＳ」は、Ｒｅａｌ−Ｔｉｍｅ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍの略語である。
【００３４】
ＲＴＯＳ情報テーブル３００、汎用ＯＳ情報テーブル３０１およびしきい値テーブル３０２は、システムの開発者であるユーザが作成するテーブルである。チューニングテーブル３０３は、ハイパーバイザ１０３が作成するテーブルである。
【００３５】
ＲＴＯＳ情報テーブル３００は、リアルタイムＯＳ１０２Ａの割り込み周期の情報を収集する対象のアプリケーション名を指定するテーブルである。データ更新部２２３により収集されたデータがＲＴＯＳ情報テーブル３００に保存される。
【００３６】
汎用ＯＳ情報テーブル３０１は、汎用ＯＳ１０２Ｂから取得したい情報を指定するテーブルである。対象のアプリケーション名を指定することで、データ更新部２２３により収集されたデータが汎用ＯＳ情報テーブル３０１に保存される。
【００３７】
しきい値テーブル３０２は、汎用ＯＳ１０２Ｂの処理を制限する際に、その処理が制限対象であるか否か、制限対象であった場合にどのように制限するかを判断するためのしきい値を記録するテーブルである。ある処理が制限対象であるか否かは、その処理が実施条件を満たすか否かによって判断される。しきい値テーブル３０２は、具体的には、汎用ＯＳ１０２Ｂの処理に制限をかける際の制限を実行する方法と、制限の実施条件とを指定するテーブルである。
【００３８】
チューニングテーブル３０３は、ハイパーバイザ１０３が、制限対象の処理に対して、どのようにチューニングを行うかを算出した結果を記録するテーブルである。チューニングテーブル３０３には、しきい値テーブル３０２に設定された制限の値が記録される。
【００３９】
図５に、ＲＴＯＳ情報テーブル３００の一例を示す。この例では、リアルタイムＯＳ１０２Ａ上で使用されるリアルタイムアプリケーション１０１Ａ「ＡＢＣ．ｅｘｅ」が指定されている。そして、指定されたリアルタイムアプリケーション１０１Ａについて収集された割り込みの周期の情報が保存されている。
【００４０】
図６に、汎用ＯＳ情報テーブル３０１の一例を示す。汎用ＯＳ情報テーブル３０１では、ユーザが任意の項目を指定することが可能である。ただし、収集する項目に対する負荷状態を判断するために、各処理の実行時間が必ず含まれている。この例では、汎用ＯＳ１０２Ｂ上で使用される汎用アプリケーション１０１Ｂ「ＸＸＸＸ．ｅｘｅ」が指定されている。指定された汎用アプリケーション１０１Ｂには、ＤＭＡ処理が含まれている。そして、指定された汎用アプリケーション１０１Ｂについて収集されたＤＭＡ処理開始時刻、ＤＭＡ処理終了時刻、ＤＭＡ処理回数およびＤＭＡ転送サイズの情報が保存されている。ＤＭＡ以外の負荷に関連して収集されたＣＰＵ利用率等の情報も保存されている。
【００４１】
図７に、しきい値テーブル３０２の一例を示す。しきい値テーブル３０２では、汎用ＯＳ１０２Ｂの処理に対して、実行方法に制限が必要であるかを判断するための実施条件と、その制限をかけるためのチューニング方法とが指定される。この例では、ＣＰＵ利用率がしきい値「７０％」を超えた場合に、どのようにＣＰＵ利用率を制限するかが指定されている。ＤＭＡ転送時間がリアルタイムＯＳ１０２Ａの割り込み周期を超えた場合に、超過時間の比率がしきい値「２０％」を超えるかどうかによって、どのようにＤＭＡ転送処理の実行を制限するかがさらに指定されている。制限項目および制限値はユーザが任意で決めることができる。
【００４２】
図８に、チューニングテーブル３０３の一例を示す。チューニングテーブル３０３では、ハイパーバイザ１０３の算出した、汎用ＯＳ１０２Ｂの処理に制限をかけるために使用するパラメータ値が記録される。この例では、汎用ＯＳ１０２Ｂ上で使用される汎用アプリケーション１０１Ｂ「ＸＸＸＸ．ｅｘｅ」について、制限をかけるためのチューニング方法と、算出されたパラメータ値「αＨｚ」とが記録されている。
【００４３】
＊＊＊動作の説明＊＊＊
図９から図１３を参照して、本実施の形態に係る情報処理装置１００の動作を説明する。情報処理装置１００の動作は、本実施の形態に係るチューニング方法に相当する。
【００４４】
チューニングの実施手順としては、大きく分けて４つのフェーズがある。具体的には、図９に示す、ユーザによる試運転の準備フェーズと、図１０に示す、ハイパーバイザ１０３のシステム試運転フェーズと、図１１および図１２に示す、ハイパーバイザ１０３の分析およびチューニングフェーズと、図１３に示す実運用フェーズとがある。
【００４５】
図９を参照して、ユーザによる試運転の準備フェーズを説明する。
【００４６】
ステップＳ１１にて、ユーザにより作成されたＲＴＯＳ情報テーブル３００、汎用ＯＳ情報テーブル３０１およびしきい値テーブル３０２が入力される。
【００４７】
ステップＳ１２にて、ステップＳ１１で入力された３つのテーブルが、ハイパーバイザ１０３の使用するＨＶメモリ領域１０８Ｃに格納される。
【００４８】
図１０を参照して、ハイパーバイザ１０３のシステム試運転フェーズを説明する。
【００４９】
ユーザが、情報処理装置１００の電源を入れ、ハイパーバイザ１０３のシステム試運転フェーズを開始したとする。
【００５０】
ステップＳ２１にて、管理部２２０のデータ読み出し部２２１は、ＲＴＯＳ情報テーブル３００および汎用ＯＳ情報テーブル３０１をＨＶメモリ領域１０８Ｃから読み出す。
【００５１】
ステップＳ２２にて、管理部２２０は、実運用フェーズで実行されるすべてのアプリケーションを実行し、環境を実運用状態と同じ環境にする。実行されるアプリケーションには、例えば、メモリ１０８にデータをコピーするアプリケーション、センサ情報を取得するアプリケーション、および、データを解析するアプリケーションが含まれる。これらのアプリケーションは、実際のシステム稼働時のＩ／Ｏの使用状況に関する情報を取得することを目的として実行される。目的が達成できるのであれば、全アプリケーションを実行する代わりに、一部のアプリケーションのみを実行してもよい。
【００５２】
ステップＳ２３にて、第１取得部２００、第１制御部２１０、第２取得部２３０および第２制御部２４０は、ＲＴＯＳ情報テーブル３００と汎用ＯＳ情報テーブル３０１とに記録されている項目に対して、試運転時の各種データを収集する。具体的には、並列的に以下の４つの処理が行われる。
【００５３】
第１処理として、第１取得部２００は、現在動作中のリアルタイムアプリケーション１０１Ａのアプリケーション名を取得するとともに、リアルタイムＯＳ１０２Ａの割り込み周期の値を取得する。
【００５４】
より具体的には、第１取得部２００の割り込み検出部２０１は、リアルタイムＯＳ１０２Ａに周期的な割り込みが発行されていることを検出する。第１取得部２００の周期取得部２０２は、割り込み検出部２０１が周期的な割り込みがあることを検出した場合に、その周期の値を取得する。
【００５５】
第２処理として、第１制御部２１０は、現在動作中の汎用アプリケーション１０１Ｂのアプリケーション名を取得するとともに、汎用ＯＳ１０２Ｂを動作させている第２コア１０４Ｂの利用率であるＣＰＵ利用率の値を取得する。
【００５６】
より具体的には、第１制御部２１０の利用率取得部２１１は、稼働中の汎用ＯＳ１０２Ｂの使用する第２コア１０４ＢのＣＰＵ利用率の値を取得する。
【００５７】
第３処理として、第２取得部２３０は、現在動作中の汎用アプリケーション１０１Ｂのアプリケーション名を取得するとともに、その汎用アプリケーション１０１Ｂの実行時間の値を取得する。
【００５８】
より具体的には、第２取得部２３０の要求検出部２３１は、稼働中の汎用ＯＳ１０２Ｂに対して、汎用アプリケーション１０１Ｂの実行が開始したことを検出し、その汎用アプリケーション１０１Ｂの実行開始時刻をメモリ１０８に記録する。第２取得部２３０の終了検出部２３２は、その汎用アプリケーション１０１Ｂの実行が終了したことを検出し、その汎用アプリケーション１０１Ｂの実行終了時刻をメモリ１０８に記録する。終了検出部２３２は、実行開始時刻と実行終了時刻との差である実行時間を算出する。
【００５９】
第４処理として、第２制御部２４０は、現在動作中の汎用アプリケーション１０１Ｂのアプリケーション名を取得するとともに、汎用ＯＳ１０２Ｂの実施するＤＭＡ転送の、１回の転送データサイズ、転送処理開始時刻、転送処理終了時刻および転送要求数の値を取得する。
【００６０】
より具体的には、第２制御部２４０の命令検出部２４１は、稼働中の汎用ＯＳ１０２Ｂが、ＤＭＡ命令を要求していることを検出し、サイズ取得部２４２を起動する。第２制御部２４０のサイズ取得部２４２は、要求されているＤＭＡのデータサイズの値と現在の１回の転送サイズの値とを取得する。第２制御部２４０の時刻取得部２４４は、ＤＭＡの処理開始時刻および処理終了時刻の値を取得する。第２制御部２４０の頻度取得部２４５は、単位時間当たりにＤＭＡ転送が要求された頻度である処理回数の値を取得する。
【００６１】
第１処理から第４処理における各値の取得には、プロセッサ１０４のレジスタ情報、ＤＭＡコントローラ１２０のレジスタ情報、対応している場合はハイパーバイザコールまたはＯＳのシステムコールが用いられる。
【００６２】
ステップＳ２４にて、管理部２２０のデータ更新部２２３は、ステップＳ２３で収集されたデータを、ＲＴＯＳ情報テーブル３００および汎用ＯＳ情報テーブル３０１に保存する。
【００６３】
具体的には、データ更新部２２３は、第１取得部２００から、アプリケーション名と割り込み周期の値とを受け取る。データ更新部２２３は、ＲＴＯＳ情報テーブル３００に、受け取ったアプリケーション名と割り込み周期の値とを保存する。データ更新部２２３は、第１制御部２１０から、アプリケーション名とＣＰＵ利用率の値とを受け取る。データ更新部２２３は、第２取得部２３０から、アプリケーション名と実行時間の値とを受け取る。データ更新部２２３は、第２制御部２４０から、アプリケーション名とＤＭＡ転送の、１回の転送データサイズ、転送処理開始時刻、転送処理終了時刻および転送要求数の値とを受け取る。データ更新部２２３は、汎用ＯＳ情報テーブル３０１に、受け取ったアプリケーション名とＣＰＵ利用率の値と実行時間の値とＤＭＡ転送の、１回の転送データサイズ、転送処理開始時刻、転送処理終了時刻および転送要求数の値とを保存する。
【００６４】
より具体的には、データ更新部２２３は、周期取得部２０２により取得された周期の値を、対応するリアルタイムアプリケーション１０１Ａの名前とともにＲＴＯＳ情報テーブル３００に書き込む。データ更新部２２３は、利用率取得部２１１により取得されたＣＰＵ利用率の値を、対応する汎用アプリケーション１０１Ｂの名前とともに汎用ＯＳ情報テーブル３０１に書き込む。データ更新部２２３は、終了検出部２３２により算出された実行時間の値を、対応する汎用アプリケーション１０１Ｂの名前とともに汎用ＯＳ情報テーブル３０１にさらに書き込む。データ更新部２２３は、サイズ取得部２４２により取得された転送サイズの値と、時刻取得部２４４により取得された処理開始時刻および処理終了時刻の値と、頻度取得部２４５により取得された処理回数の値とを、対応する汎用アプリケーション１０１Ｂの名前とともに汎用ＯＳ情報テーブル３０１にさらに書き込む。
【００６５】
ステップＳ２５にて、ＲＴＯＳ情報テーブル３００および汎用ＯＳ情報テーブル３０１のすべての項目について評価が終了していない場合、ステップＳ２３以降の処理が繰り返される。終了している場合、ハイパーバイザ１０３のシステム試運転フェーズが終了する。
【００６６】
図１１および図１２を参照して、ハイパーバイザ１０３の分析およびチューニングフェーズを説明する。
【００６７】
ステップＳ３１にて、管理部２２０のデータ読み出し部２２１は、しきい値テーブル３０２と、ハイパーバイザ１０３のシステム試運転フェーズで更新されたＲＴＯＳ情報テーブル３００および汎用ＯＳ情報テーブル３０１とを読み出す。
【００６８】
ステップＳ３２にて、管理部２２０のデータ比較部２２２は、ＲＴＯＳ情報テーブル３００と汎用ＯＳ情報テーブル３０１とを比較して、汎用ＯＳ１０２Ｂのすべての処理に対して、リアルタイムＯＳ１０２Ａの定周期割り込みが発生する時間に、汎用ＯＳ１０２Ｂの処理が重なっているか否かを判定する。重なっている処理は、チューニングが必要な処理、すなわち、チューニング対象であると判断される。例えば、リアルタイムＯＳ１０２Ａで割り込みが発行されるときに、ある汎用アプリケーション１０１Ｂがメモリコピーを行っている最中であれば、その汎用アプリケーション１０１Ｂはチューニング対象と判断される。チューニング対象が検出された場合、ステップＳ３３の処理が行われる。チューニング対象がない場合は、ステップＳ３９の処理が行われる。
【００６９】
ステップＳ３３にて、データ比較部２２２は、チューニング対象に対して、どの項目がしきい値を超えているかを、しきい値テーブル３０２と汎用ＯＳ情報テーブル３０１とを比較して判断する。データ比較部２２２は、しきい値を超えている項目について、しきい値テーブル３０２に書かれているチューニング方法を識別する。
【００７０】
ステップＳ３４にて、１回目のチューニングの場合は、ステップＳ３５の処理が行われる。２回目以降のチューニングの場合は、ステップＳ３６の処理が行われる。
【００７１】
ステップＳ３５にて、管理部２２０のテーブル作成部２２４は、ＨＶメモリ領域１０８Ｃにチューニングテーブル３０３を作成する。その後、ステップＳ３６の処理が行われる。
【００７２】
ステップＳ３６にて、管理部２２０のパラメータ値算出部２２５は、ＲＴＯＳ情報テーブル３００および汎用ＯＳ情報テーブル３０１の情報に基づき、チューニングテーブル３０３に設定するパラメータ値を算出する。パラメータ値の算出は、汎用ＯＳ１０２Ｂの処理のパラメータ値をどのように変更した場合に、その処理がリアルタイムＯＳ１０２Ａの割り込み周期に重ならなくなるかをもとに行われる。
【００７３】
ステップＳ３７にて、管理部２２０のデータ更新部２２３は、ステップＳ３６で算出されたパラメータ値を、チューニングテーブル３０３に反映する。
【００７４】
ステップＳ３８にて、データ比較部２２２は、すべてのチューニング対象に対して、しきい値テーブル３０２の実施条件を満たす項目の有無の確認を終えているか、残件があるかを判定する。まだ確認を終えていないチューニング対象が残っている場合には、ステップＳ３３以降の処理が繰り返される。すべてのチューニング対象に対して確認を終えている場合には、ステップＳ３９の処理が行われる。
【００７５】
ステップＳ３９にて、チューニングテーブル３０３に項目があれば、ステップＳ４０の処理が行われる。チューニングテーブル３０３に項目がなければ、ハイパーバイザ１０３の分析およびチューニングフェーズが終了する。
【００７６】
ステップＳ４０にて、第１制御部２１０および第２制御部２４０は、チューニングテーブル３０３の各項目に反映されているパラメータ値に対応する現在値を取得する。管理部２２０のデータ更新部２２３は、第１制御部２１０および第２制御部２４０により取得された値を初期値として、ＨＶメモリ領域１０８Ｃに保存する。初期値の保存後、ハイパーバイザ１０３の分析およびチューニングフェーズが終了する。
【００７７】
しきい値テーブル３０２で指定されている実施条件に対して、ＣＰＵ利用率が超過している例を説明する。制限方法としては、汎用アプリケーション１０１Ｂの使用する第２コア１０４ＢのＣＰＵ周波数を低減する方法が用いられるとする。
【００７８】
ステップＳ３３にて、データ比較部２２２は、ＣＰＵ利用率がしきい値テーブル３０２の値を超過していることを検出する。その後、ステップＳ３６にて、パラメータ値算出部２２５は、ＲＴＯＳ情報テーブル３００および汎用ＯＳ情報テーブル３０１の情報に基づき、第２コア１０４Ｂの処理がリアルタイムアプリケーション１０１Ａに影響しないように、ＣＰＵ周波数をいくつに設定するかを決定する。すなわち、パラメータ値算出部２２５は、変更後のＣＰＵ周波数を算出する。ステップＳ３７にて、データ更新部２２３は、パラメータ値算出部２２５の算出の結果をチューニングテーブル３０３に反映する。
【００７９】
ＣＰＵ周波数の変更がチューニングテーブル３０３に設定されているため、ステップＳ４０にて、第１制御部２１０の周波数取得部２１２は、現在のＣＰＵ周波数の値を取得する。データ更新部２２３は、周波数取得部２１２により取得された値を、変更前のＣＰＵ周波数の値、すなわち、初期値として、ＨＶメモリ領域１０８Ｃに保存する。
【００８０】
このように、ＣＰＵ周波数の実施条件が満たされていた場合は、ＣＰＵ周波数のチューニングの設定が行われる。他の動作状態のチューニングの設定も同様に行うことができる。すなわち、本実施の形態では、データ更新部２２３によって更新された汎用ＯＳ情報テーブル３０１のデータに、ユーザが作成するしきい値テーブル３０２の「実施条件」を満たす項目があった場合、しきい値テーブル３０２で指定される制限「チューニング方法」が、汎用ＯＳ１０２Ｂの該当するアプリケーションに適用される。その制限について、まとめたものがチューニングテーブル３０３となる。
【００８１】
図６の例では、「ＸＸＸＸ．ｅｘｅ」についてデータ更新部２２３によって更新された結果がテーブル情報として保持されている。この例では、「ＸＸＸＸ．ｅｘｅ」は、０ｘ１０から０ｘ２０の時間の間、ＤＭＡ転送を３回実施している。ＣＰＵ利用率は８０％、ディスクアクセスの時間は１ｍｓである。チューニングフェーズにて、この結果と、しきい値テーブル３０２の実施条件とが比較される。具体的には、ＣＰＵ利用率が実施条件の７０％を超過しているかどうかが判断される。ハイパーバイザ１０３は、ＣＰＵ利用率が７０％以下になるように、「ＸＸＸＸ．ｅｘｅ」のアプリケーション実行に制限をかける。また、ＤＭＡ転送が行われる０ｘ１０から０ｘ２０の時間の間にリアルタイムＯＳ１０２Ａの割り込みが発生するかどうかが判断される。発生する場合、その時間がリアルタイムＯＳ１０２Ａの割り込み周期以上かつ＋２０％以下であれば、ＤＭＡ転送が割り込み発生時に被らないように、ＤＭＡ転送の１回の転送サイズを小さくするというチューニングが設定される。ＤＭＡ転送の時間がリアルタイムＯＳ１０２Ａの割り込み周期以上かつ＋２０％以上であれば、ＤＭＡ転送をすべてＰＩＯに変換するというチューニングが設定される。これらのアプリケーション実施に対する制限をまとめたものがチューニングテーブル３０３である。「ＰＩＯ」は、Ｐｒｏｇｒａｍｍｅｄ  Ｉ／Ｏの略語である。
【００８２】
図１３を参照して、実運用フェーズを説明する。
【００８３】
ステップＳ４１にて、管理部２２０のデータ読み出し部２２１は、チューニングテーブル３３０を読み出す。
【００８４】
ステップＳ４２にて、管理部２２０のデータ比較部２２２は、汎用アプリケーション１０１Ｂからの処理の実行要求を検出し、その処理に対応する項目が、チューニングテーブル３０３に登録されているかを確認する。登録されている場合、ステップＳ４６の処理が行われる。登録されていない場合には、ステップＳ４３の処理が行われる。
【００８５】
ステップＳ４３にて、第１制御部２１０および第２制御部２４０は、チューニングテーブル３０３の各項目に反映されているパラメータ値に対応する現在値を取得する。データ比較部２２２は、第１制御部２１０および第２制御部２４０により取得された値を、ステップＳ４０で保存された初期値と比較して、初期値からの変更があるか確認する。変更がある場合には、ステップＳ４４の処理が行われる。変更がない場合には、ステップＳ４５の処理が行われる。
【００８６】
１つの例として、パラメータ値がＣＰＵ周波数の値であれば、第１制御部２１０の周波数取得部２１２が、現在のＣＰＵ周波数の値を取得する。データ比較部２２２は、周波数取得部２１２により取得されたＣＰＵ周波数の値を、ステップＳ４０で保存された初期値と比較して、ＣＰＵ周波数が変更されているか確認する。
【００８７】
別の例として、パラメータ値がＤＭＡ転送の１回の転送サイズの値であれば、第２制御部２４０のサイズ取得部２４２が、現在のＤＭＡ転送の１回の転送サイズの値を取得する。データ比較部２２２は、サイズ取得部２４２により取得された転送サイズの値を、ステップＳ４０で保存された初期値と比較して、転送サイズが変更されているか確認する。
【００８８】
ステップＳ４４にて、第１制御部２１０または第２制御部２４０は、初期値からの変更を元に戻す。その後、ステップＳ４５の処理が行われる。
【００８９】
１つの例として、ＣＰＵ周波数が変更されていた場合は、第１制御部２１０の周波数変更部２１３が、クロックジェネレータ１０７を使用することで、汎用アプリケーション１０１Ｂで使用されるＣＰＵ周波数を、ステップＳ４０で保存された変更前のＣＰＵ周波数に戻す。
【００９０】
別の例として、ＤＭＡ転送の１回の転送サイズが変更されていた場合は、第２制御部２４０のサイズ変更部２４３が、ＤＭＡコントローラ１２０を使用することで、汎用アプリケーション１０１Ｂで使用される、ＤＭＡ転送の１回の転送サイズを、ステップＳ４０で保存された変更前の転送サイズに戻す。
【００９１】
ステップＳ４５にて、汎用アプリケーション１０１Ｂからの要求通りに処理が実行される。
【００９２】
ステップＳ４６にて、データ比較部２２２は、汎用アプリケーション１０１Ｂからの処理の実行要求に対して、その処理を、チューニングテーブル３０３で指定された方法で、制限をかけて行うように命令を変換する。その後、変換後の方法で処理が実行される。
【００９３】
１つの例として、ＣＰＵ周波数が変更される場合は、周波数変更部２１３が、クロックジェネレータ１０７を使用することで、汎用アプリケーション１０１Ｂで使用されるＣＰＵ周波数を、チューニングテーブル３０３で指定されたＣＰＵ周波数に変更する。
【００９４】
別の例として、ＤＭＡ転送の１回の転送サイズが変更される場合は、サイズ変更部２４３が、ＤＭＡコントローラ１２０を使用することで、汎用アプリケーション１０１Ｂで使用される、ＤＭＡ転送の１回の転送サイズを、チューニングテーブル３０３で指定された転送サイズに変更する。
【００９５】
その後、すべてのアプリケーションが終了するまでステップＳ４２からステップＳ４６の手順が繰り返し実行される。
【００９６】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、第１取得部２００および第２取得部２３０といった取得部は、リアルタイムアプリケーション１０１Ａと複数の汎用アプリケーション１０１Ｂとが実行される試運転フェーズにおいて、汎用ＯＳ情報を取得する。汎用ＯＳ情報は、試運転フェーズで実行される複数の汎用アプリケーション１０１Ｂのそれぞれによるハードウェアの使用についての情報であり、汎用ＯＳ情報テーブル３０１に登録される。各汎用アプリケーション１０１Ｂは、汎用ＯＳ情報テーブル３０１では、「アプリケーションの名前」によって識別される。管理部２２０は、汎用アプリケーション１０１Ｂごとに、取得部により取得された汎用ＯＳ情報に基づいて、ハードウェアの使用を制限するための条件が満たされているかどうかを判定する。この条件は、「実施条件」として、しきい値テーブル３０２に定義されている。管理部２２０は、条件が満たされていると判定した場合、リアルタイムアプリケーション１０１Ａと複数の汎用アプリケーション１０１Ｂとが実行される実運用フェーズにおいて、該当する汎用アプリケーション１０１Ｂによるハードウェアの使用を制限する。この制限の方法は、「チューニング方法」として、しきい値テーブル３０２に定義されている。
【００９７】
このように、本実施の形態では、複数の汎用アプリケーション１０１Ｂのうち、試運転フェーズで得られた情報に基づいて一定の条件を満たしていると判定された汎用アプリケーション１０１Ｂに対し、実運用フェーズでハードウェアの使用が制限される。条件を満たしていないと判定された汎用アプリケーション１０１Ｂに対して実運用フェーズでハードウェアの使用を制限しないことで、汎用ＯＳ１０２Ｂの、リアルタイムＯＳ１０２Ａの処理に影響しない処理を止めることなく、リアルタイムＯＳ１０２Ａに優先的にハードウェアへのアクセスを行わせることができる。
【００９８】
本実施の形態では、取得部は、ハードウェアの種類ごとに、汎用ＯＳ情報を取得する。管理部２２０は、汎用アプリケーション１０１Ｂおよびハードウェアの種類の組み合わせごとに、汎用ＯＳ情報に基づいて、条件が満たされているかどうかを判定する。ハードウェアの種類は、「カテゴリ」として、しきい値テーブル３０２に定義されている。管理部２２０は、条件が満たされていると判定した場合、実運用フェーズにおいて、該当する汎用アプリケーション１０１Ｂによる、該当する種類のハードウェアの使用を制限する。
【００９９】
ハードウェアの種類として、プロセッサ１０４がある場合、取得部は、汎用ＯＳ情報として、プロセッサ１０４の使用率を示す情報を取得する。プロセッサ１０４の使用率は、汎用ＯＳ情報テーブル３０１では、「ＣＰＵ利用率」として記録される。管理部２２０は、汎用アプリケーション１０１Ｂごとに、汎用ＯＳ情報に示されているプロセッサ１０４の使用率がしきい値以上であれば、プロセッサ１０４について条件が満たされていると判定する。プロセッサ１０４の使用を制限する方法としては、任意の方法が用いられてよいが、本実施の形態では、管理部２２０は、条件が満たされていると判定した場合、実運用フェーズにおいて、該当する汎用アプリケーション１０１Ｂが実行される際に、プロセッサ１０４の周波数を低くする。
【０１００】
ハードウェアの種類として、メモリ１０８がある場合、取得部は、汎用ＯＳ情報として、メモリ１０８へのＤＭＡ転送の実施期間を示す情報を取得する。メモリ１０８へのＤＭＡ転送の実施期間は、汎用ＯＳ情報テーブル３０１では、「ＤＭＡ処理開始時刻」および「ＤＭＡ処理終了時刻」の組み合わせとして記録される。管理部２２０は、汎用アプリケーション１０１Ｂごとに、汎用ＯＳ情報に示されているメモリ１０８へのＤＭＡ転送の実施期間がリアルタイムＯＳ１０２Ａの割り込み周期に重なっていれば、条件が満たされていると判定する。リアルタイムＯＳ１０２Ａの割り込み周期は、あらかじめ検出され、ＲＴＯＳ情報テーブル３００に記録されている。メモリ１０８へのＤＭＡ転送を制限する方法としては、任意の方法が用いられてよいが、本実施の形態では、管理部２２０は、条件が満たされていると判定した場合、汎用ＯＳ情報に示されているメモリ１０８へのＤＭＡ転送の実施期間とリアルタイムＯＳ１０２Ａの割り込み周期との重なりの度合いに応じて、方法を変える。具体的には、管理部２２０は、汎用ＯＳ情報に示されているメモリ１０８へのＤＭＡ転送の実施期間とリアルタイムＯＳ１０２Ａの割り込み周期との重なりの度合いがしきい値以上であれば、該当する汎用アプリケーション１０１Ｂによるメモリ１０８へのＤＭＡ転送の送信サイズを小さくする。管理部２２０は、汎用ＯＳ情報に示されているメモリ１０８へのＤＭＡ転送の実施期間とリアルタイムＯＳ１０２Ａの割り込み周期との重なりの度合いがしきい値未満であれば、該当する汎用アプリケーション１０１Ｂによるメモリ１０８へのＤＭＡ転送をＰＩＯ転送に変える。
【０１０１】
ハードウェアの種類として、前述した補助記憶装置に相当するディスクがある場合、取得部は、汎用ＯＳ情報として、ディスクへのアクセスの実施期間を示す情報を取得する。ディスクへのアクセスの実施期間は、汎用ＯＳ情報テーブル３０１では、「ディスクアクセス時間」として記録される。管理部２２０は、汎用アプリケーション１０１Ｂごとに、汎用ＯＳ情報に示されているディスクへのアクセスの実施期間がリアルタイムＯＳ１０２Ａの割り込み周期に重なっていれば、条件が満たされていると判定する。リアルタイムＯＳ１０２Ａの割り込み周期は、あらかじめ検出され、ＲＴＯＳ情報テーブル３００に記録されている。ディスクへのアクセスを制限する方法としては、任意の方法が用いられてよいが、本実施の形態では、管理部２２０は、条件が満たされていると判定した場合、該当する汎用アプリケーション１０１Ｂによるディスクへのアクセスのブロックサイズを小さくする。
【０１０２】
このように、本実施の形態では、複数の汎用アプリケーション１０１Ｂのうち、試運転フェーズで得られた情報に基づいて一定の条件を満たしていると判定された汎用アプリケーション１０１Ｂに対し、実運用フェーズで条件に対応する種類のハードウェアの使用が制限される。条件に対応するハードウェアの種類がメモリ１０８であれば、汎用アプリケーション１０１Ｂを実行する方法を変更することにより、汎用アプリケーション１０１Ｂからのメモリ１０８へのアクセス頻度を減らすことが可能となる。その結果、汎用アプリケーション１０１Ｂによるバス１１０の占有率が低くなり、汎用アプリケーション１０１Ｂの動作も継続する環境下で、バス１１０を介してリアルタイムアプリケーション１０１Ａの待ち時間が解消され、リアルタイム応答性能遅延を防止可能となる。
【０１０３】
ＣＰＵ周波数、ＤＭＡの利用率およびディスクアクセス以外のハードウェアの使用についても、同様の方法でデバイスアクセスの処理時間および処理サイズをもとに、チューニングを行ってもよい。
【０１０４】
取得部は、汎用ＯＳ情報として、メモリ１０８へのＤＭＡ転送の実施期間とは別の、メモリ１０８の使用期間を示す情報を取得してもよいし、メモリ１０８以外の種類のハードウェアの使用期間を示す情報を取得してもよい。その場合、管理部２２０は、汎用アプリケーション１０１Ｂごとに、汎用ＯＳ情報に示されているハードウェアの使用期間がリアルタイムＯＳ１０２Ａの割り込み周期に重なっていれば、条件が満たされていると判定する。管理部２２０は、条件が満たされていると判定した場合、汎用ＯＳ情報に示されているハードウェアの使用期間とリアルタイムＯＳ１０２Ａの割り込み周期との重なりの度合いに応じて、該当する汎用アプリケーション１０１Ｂによるハードウェアの使用を制限する方法を変えてもよい。
【０１０５】
本実施の形態では、特許文献１に記載の技術と異なり、ＤＭＡ以外の処理負荷により優先度の低いＯＳがバス１１０の帯域を専有することで発生し得る、優先度の高いＯＳの割り込み応答性能の低下にも対応することができる。
【０１０６】
本実施の形態では、リアルタイムＯＳ１０２Ａ以外のＯＳの処理負荷が高い場合に、優先度の低い汎用ＯＳ１０２Ｂの処理を止めることなく、ハイパーバイザ１０３が処理の実行方法を変換することで、リアルタイムＯＳ１０２Ａの処理精度への影響を軽減可能である。
【０１０７】
本実施の形態によれば、バス１１０をリアルタイムＯＳ１０２Ａと汎用ＯＳ１０２Ｂとで共有する場合に、リアルタイムＯＳ１０２Ａに割り当てられたデバイスが割り込みを発行した際のリアルタイム応答性能の低下を防止することが可能となる。
【０１０８】
＊＊＊他の構成＊＊＊
本実施の形態では、第１取得部２００、第１制御部２１０、管理部２２０、第２取得部２３０および第２制御部２４０の機能がソフトウェアにより実現されるが、変形例として、第１取得部２００、第１制御部２１０、管理部２２０、第２取得部２３０および第２制御部２４０の機能がソフトウェアとハードウェアとの組み合わせにより実現されてもよい。すなわち、第１取得部２００、第１制御部２１０、管理部２２０、第２取得部２３０および第２制御部２４０の機能の一部が専用のハードウェアにより実現され、残りがソフトウェアにより実現されてもよい。
【０１０９】
専用のハードウェアは、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＦＰＧＡ、ＡＳＩＣ、または、これらのうちいくつか、もしくは、すべての組み合わせである。「ＩＣ」は、Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。「ＧＡ」は、Ｇａｔｅ  Ａｒｒａｙの略語である。「ＦＰＧＡ」は、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略語である。「ＡＳＩＣ」は、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。
【０１１０】
プロセッサ１０４および専用のハードウェアは、いずれも処理回路である。すなわち、第１取得部２００、第１制御部２１０、管理部２２０、第２取得部２３０および第２制御部２４０の機能がソフトウェアにより実現されるか、ソフトウェアとハードウェアとの組み合わせにより実現されるかに関わらず、第１取得部２００、第１制御部２１０、管理部２２０、第２取得部２３０および第２制御部２４０の動作は、処理回路により行われる。
【０１１１】
ＯＳの数は、３つ以上であってもよい。それぞれのＯＳは、リアルタイムＯＳ１０２Ａと汎用ＯＳ１０２Ｂとのいずれであってもよいし、その他の種類のＯＳであってもよい。例えば、同じ種類のＯＳがあったとして、それぞれを管理用のＯＳと、非管理用のＯＳとして区別してもよい。
【０１１２】
プロセッサ１０４のコアの数は、３つ以上であってもよい。
【０１１３】
ハイパーバイザ１０３は、第２コア１０４Ｂによって実行されてもよい。
【０１１４】
情報処理装置１００は、ＯＳを実行するコアとは別に、ハイパーバイザ１０３を実行するコアを備えてもよい。つまり、ハイパーバイザ１０３は、ＯＳを実行するコアとは別のコアによって実行されてもよい。
【０１１５】
ユーザの作成するＲＴＯＳ情報テーブル３００および汎用ＯＳ情報テーブル３０１は、１つに統合されてもよいし、ＤＭＡ、メモリアクセスおよびディスクアクセスといったイベントのトリガごとに別々に作成されてもよい。
【０１１６】
ハイパーバイザ１０３は、汎用アプリケーション１０１Ｂのみでなく、リアルタイムアプリケーション１０１Ａの処理状態監視を行ったり、リアルタイムアプリケーション１０１Ａに対するしきい値情報を持ったりすることで、汎用ＯＳ１０２Ｂの処理を制限してもよい。例えば、ハイパーバイザ１０３は、リアルタイムＯＳ１０２Ａの単位時間当たりのメモリキャッシュミス率またはキャッシュヒット率の情報を取得し、キャッシュミス率が規定のしきい値を超過している場合に、汎用アプリケーション１０１Ｂに対し、キャッシュの割り当てを制限してもよい。
【０１１７】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を、図１４および図１５を用いて説明する。
【０１１８】
実施の形態１では、ハイパーバイザ１０３のシステム試運転フェーズと、ハイパーバイザ１０３の分析およびチューニングフェーズとがそれぞれ１回のみ実施される。本実施の形態では、チューニングテーブル３０３の設定値を用いて再度試運転が行われ、パラメータが調整される。複数回繰り返しこの試運転が行われても構わない。その場合、試運転の回数を指定する方法は、任意の方法でよく、試運転開始時に、ユーザが引数で回数を設定してもよいし、ハイパーバイザ１０３の読み出すことのできる、いずれかのテーブル情報に回数が追記されて管理されてもよい。
【０１１９】
＊＊＊構成の説明＊＊＊
本実施の形態に係る情報処理装置１００の構成については、図１から図３に示した実施の形態１のものと同じであるため、説明を省略する。
【０１２０】
＊＊＊動作の説明＊＊＊
図１４および図１５を参照して、本実施の形態に係る情報処理装置１００の動作を説明する。情報処理装置１００の動作は、本実施の形態に係るチューニング方法に相当する。
【０１２１】
ユーザによる試運転の準備フェーズと、ハイパーバイザ１０３の１回目のシステム試運転フェーズと、ハイパーバイザ１０３の１回目の分析およびチューニングフェーズと、実運用フェーズとについては、図９から図１３に示した実施の形態１のものと同じであるため、説明を省略する。
【０１２２】
図１４および図１５を参照して、２回目以降のシステム試運転フェーズと分析およびチューニングフェーズとを説明する。
【０１２３】
ステップＳ５１からステップＳ５６の処理については、ステップＳ４１からステップＳ４６の処理と同じであるため、説明を省略する。
【０１２４】
ステップＳ５５の処理が行われた後は、ステップＳ５７の処理が行われる。
【０１２５】
ステップＳ５６の処理が行われた後も、ステップＳ５７の処理が行われる。
【０１２６】
ステップＳ５７およびステップＳ５８の処理については、ステップＳ２３およびステップＳ２４の処理と同じであるため、説明を省略する。
【０１２７】
ステップＳ５８の処理が行われた後は、ステップＳ５９の処理が行われる。
【０１２８】
ステップＳ５９の処理については、ステップＳ３１の処理と同じであるため、説明を省略する。
【０１２９】
ステップＳ５９の処理が行われた後は、ステップＳ６０の処理が行われる。
【０１３０】
ステップＳ６０にて、管理部２２０のデータ比較部２２２は、ＲＴＯＳ情報テーブル３００と汎用ＯＳ情報テーブル３０１とを比較して、汎用ＯＳ１０２Ｂのすべての処理に対して、リアルタイムＯＳ１０２Ａの定周期割り込みが発生する時間に、汎用ＯＳ１０２Ｂの処理が重なっているか否かを判定する。重なっている処理は、チューニングが必要な処理、すなわち、チューニング対象であると判断される。チューニング対象が検出された場合、ステップＳ６１の処理が行われる。チューニング対象がない場合は、ステップＳ６５の処理が行われる。
【０１３１】
ステップＳ６１にて、データ比較部２２２は、チューニング対象に対して、どの項目がしきい値を超えているかを、しきい値テーブル３０２と汎用ＯＳ情報テーブル３０１とを比較して判断する。データ比較部２２２は、しきい値を超えている項目について、しきい値テーブル３０２に書かれているチューニング方法を識別する。
【０１３２】
ステップＳ６２にて、管理部２２０のパラメータ値算出部２２５は、ＲＴＯＳ情報テーブル３００および汎用ＯＳ情報テーブル３０１の情報に基づき、チューニングテーブル３０３に設定するパラメータ値を算出する。パラメータ値の算出は、汎用ＯＳ１０２Ｂの処理のパラメータ値をどのように変更した場合に、その処理がリアルタイムＯＳ１０２Ａの割り込み周期に重ならなくなるかをもとに行われる。
【０１３３】
ステップＳ６３にて、管理部２２０のデータ更新部２２３は、チューニングテーブル３０３に反映されているパラメータ値を、ステップＳ６２で算出されたパラメータ値に更新する。
【０１３４】
ステップＳ６４にて、データ比較部２２２は、すべてのチューニング対象に対して、しきい値テーブル３０２の実施条件を満たす項目の有無の確認を終えているか、残件があるかを判定する。まだ確認を終えていないチューニング対象が残っている場合には、ステップＳ６１以降の処理が繰り返される。すべてのチューニング対象に対して確認を終えている場合には、ステップＳ６５の処理が行われる。
【０１３５】
ステップＳ６５にて、チューニング回数がカウントされる。チューニング回数のカウンタ値は、ＨＶメモリ領域１０８Ｃに格納される。
【０１３６】
ステップＳ６６にて、データ比較部２２２は、ＨＶメモリ領域１０８Ｃに格納されているチューニング回数のカウンタ値を参照することで、チューニング回数がユーザの指定した回数に達しているかを確認する。達している場合は、２回目以降のシステム試運転フェーズと分析およびチューニングフェーズとが終了する。達していない場合は、ステップＳ５１以降の処理が繰り返される。
【０１３７】
２回目以降のシステム試運転フェーズと分析およびチューニングフェーズとが終了した場合、実運用フェーズが実施される。
【０１３８】
２回目以降のシステム試運転フェーズと分析およびチューニングフェーズとの具体例を説明する。
【０１３９】
この例では、１回目のシステム試運転フェーズと分析およびチューニングフェーズとにおいて、図８の例のように、ＣＰＵ周波数をαＨｚに変更するというチューニングの設定がすでに行われているとする。
【０１４０】
ステップＳ５２にて、管理部２２０のデータ比較部２２２は、汎用アプリケーション１０１Ｂからの処理の実行要求を検出し、その処理に対応する項目が、チューニングテーブル３０３に登録されていることを検出する。
【０１４１】
ステップＳ５４にて、第１制御部２１０の周波数変更部２１３は、クロックジェネレータ１０７を使用することで、汎用アプリケーション１０１Ｂで使用されるＣＰＵ周波数を、ステップＳ４０で保存された変更前のＣＰＵ周波数に戻す。
【０１４２】
ステップＳ５６にて、データ比較部２２２は、汎用アプリケーション１０１Ｂからの処理の実行要求に対して、その処理を、チューニングテーブル３０３で指定された方法で、制限をかけて行うようにＣＰＵ周波数をαＨｚに変換する。その後、処理が実行される。
【０１４３】
ステップＳ５７にて、第１取得部２００、第１制御部２１０、第２取得部２３０および第２制御部２４０は、ＲＴＯＳ情報テーブル３００と汎用ＯＳ情報テーブル３０１とに記録されている項目に対して、試運転時の各種データを収集する。
【０１４４】
ステップＳ５８にて、管理部２２０のデータ更新部２２３は、ステップＳ５７で収集されたデータを、ＲＴＯＳ情報テーブル３００および汎用ＯＳ情報テーブル３０１に保存する。
【０１４５】
ステップＳ５９にて、管理部２２０のデータ読み出し部２２１は、しきい値テーブル３０２と、ステップＳ５８で更新されたＲＴＯＳ情報テーブル３００および汎用ＯＳ情報テーブル３０１とを読み出す。
【０１４６】
ステップＳ６０にて、データ比較部２２２は、ＲＴＯＳ情報テーブル３００と汎用ＯＳ情報テーブル３０１とを比較して、汎用ＯＳ１０２Ｂのすべての処理に対して、リアルタイムＯＳ１０２Ａの定周期割り込みが発生する時間に、汎用ＯＳ１０２Ｂの処理が重なっているか否かを判定する。ＣＰＵ周波数をαＨｚにしたにも関わらず、チューニング対象が検出された場合、ステップＳ６１からステップＳ６３の処理が行われる。
【０１４７】
ステップＳ６２にて、パラメータ値算出部２２５は、ＲＴＯＳ情報テーブル３００および汎用ＯＳ情報テーブル３０１の情報に基づき、チューニングテーブル３０３に設定するパラメータ値を算出する。
【０１４８】
ステップＳ６３にて、データ更新部２２３は、チューニングテーブル３０３に反映されているパラメータ値を、ステップＳ６２で算出されたパラメータ値に更新する。
【０１４９】
ステップＳ６４にて、すべてのチューニング対象に対して確認を終えている場合には、ステップＳ６５の処理が行われる。
【０１５０】
ステップＳ６５にて、チューニング回数のカウンタ値が１インクリメントされる。
【０１５１】
ステップＳ６６にて、チューニング回数のカウンタ値がユーザの指定した回数の値に一致していれば、システム試運転フェーズと分析およびチューニングフェーズとが終了する。一致していなければ、ステップＳ５１以降の処理が繰り返される。
【０１５２】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、試運転フェーズは、複数回繰り返される。管理部２２０は、試運転フェーズが１回終了する度に、汎用アプリケーション１０１Ｂごとに、終了したフェーズにおいて汎用ＯＳ情報として取得部により取得された情報に基づいて、条件が満たされているかどうかを判定する。管理部２２０は、条件が満たされていると判定した場合、該当する汎用アプリケーション１０１Ｂによるハードウェアの使用を制限するためのパラメータを調整する。管理部２２０は、試運転フェーズがすべて終了した後、実運用フェーズにおいて、そのパラメータを用いて、該当する汎用アプリケーション１０１Ｂによるハードウェアの使用を制限する。
【０１５３】
本実施の形態では、複数回、状態収集と分析とを行い、チューニングテーブル３０３を更新することで、リアルタイム応答性能の低下をより精度高く防止し、また、リアルタイム応答性能の低下を防止する際に汎用アプリケーション１０１Ｂの処理性能も、より適切なパラメータを使用する処理として実現することが可能となる。最適な動作周波数値を算出することにより、汎用アプリケーション１０１Ｂの動作も継続することが可能となる。その結果、汎用アプリケーション１０１Ｂによるバス１１０の占有率が低くなり、バス１１０を介してリアルタイムアプリケーション１０１Ａの待ち時間が解消され、リアルタイム応答性能遅延が防止可能となる。
【符号の説明】
【０１５４】
１００  情報処理装置、１０１Ａ  リアルタイムアプリケーション、１０１Ｂ  汎用アプリケーション、１０２Ａ  リアルタイムＯＳ、１０２Ｂ  汎用ＯＳ、１０３  ハイパーバイザ、１０４  プロセッサ、１０４Ａ  第１コア、１０４Ｂ  第２コア、１０５  周波数変更機構、１０６  割り込みコントローラ、１０７  クロックジェネレータ、１０８  メモリ、１０８Ａ  メモリ領域、１０８Ｃ  ＨＶメモリ領域、１０９  Ｉ／Ｏデバイス、１１０  バス、１１１  グラフィックスデバイス、１２０  ＤＭＡコントローラ、２００  第１取得部、２０１  割り込み検出部、２０２  周期取得部、２１０  第１制御部、２１１  利用率取得部、２１２  周波数取得部、２１３  周波数変更部、２２０  管理部、２２１  データ読み出し部、２２２  データ比較部、２２３  データ更新部、２２４  テーブル作成部、２２５  パラメータ値算出部、２３０  第２取得部、２３１  要求検出部、２３２  終了検出部、２４０  第２制御部、２４１  命令検出部、２４２  サイズ取得部、２４３  サイズ変更部、２４４  時刻取得部、２４５  頻度取得部、３００  ＲＴＯＳ情報テーブル、３０１  汎用ＯＳ情報テーブル、３０２  しきい値テーブル、３０３  チューニングテーブル。
【図１】
2019215795.tif 000003
【図２】
2019215795.tif 000004
【図３】
2019215795.tif 000005
【図４】
2019215795.tif 000006
【図５】
2019215795.tif 000007
【図６】
2019215795.tif 000008
【図７】
2019215795.tif 000009
【図８】
2019215795.tif 000010
【図９】
2019215795.tif 000011
【図１０】
2019215795.tif 000012
【図１１】
2019215795.tif 000013
【図１２】
2019215795.tif 000014
【図１３】
2019215795.tif 000015
【図１４】
2019215795.tif 000016
【図１５】
2019215795.tif 000017
【国際調査報告】
2019215795.tif 000018
2019215795.tif 000019