(57)【特許請求の範囲】
【請求項１】
計算機システム上で動作する複数の仮想マシンと、
前記仮想マシンを管理する仮想マシンモニタと、
前記仮想マシンモニタに設けられ、複数の前記仮想マシンのうち、ユーザー操作に関連する仮想マシンの動作履歴に基づき、ユーザー操作のタイミングを解析する動作履歴解析部と、
前記動作履歴解析部の解析に基づき、ＣＰＵの動作周波数を制御する周波数制御部とを備え、
前記動作履歴解析部は、
仮想マシンの切り替えの際、直近に連続動作していた前記仮想マシンの動作時間に基づき、ユーザー操作がおこなわれたか否かを判断し、ユーザー操作されたと判断したときには、前記周波数制御部に対し前記ＣＰＵの動作周波数を上昇させる制御をおこなうことを特徴とする計算機システム。
【請求項２】
前記動作履歴解析部は、
仮想マシンの切り替えの際、直近に連続動作していた前記仮想マシンが複数の場合には、これら複数の仮想マシンの合計の動作時間に基づき、ユーザー操作がおこなわれたか否かを判断し、ユーザー操作されたと判断したときには、前記周波数制御部に対し前記ＣＰＵの動作周波数を上昇させる制御をおこなうことを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記動作履歴解析部は、
ユーザー操作されたものではないと判断したときには、前記周波数制御部に対し前記ＣＰＵの動作周波数を下降させる制御をおこなうことを特徴とする請求項１または２に記載の計算機システム。
【請求項４】
前記動作履歴解析部は、
アイドル後から連続動作している仮想マシンを、前記直近に連続動作していた前記仮想マシンと判断することを特徴とする請求項１〜３のいずれか一つに記載の計算機システム。
【請求項５】
前記動作履歴解析部は、
ユーザー操作に関連する仮想マシンの動作履歴として、動作した仮想マシンの識別子と、動作周波数と、動作時間を動作履歴表に時間経過順に記録することを特徴とする請求項１〜４のいずれか一つに記載の計算機システム。
【請求項６】
前記動作履歴解析部は、
ユーザー操作に関連する仮想化マシン毎にユーザー操作を検出するためのユーザー操作検出時間が予めユーザー操作検出制御表に設定され、前記動作履歴表に記録された直近に連続動作していた前記仮想マシンの動作時間が前記ユーザー操作検出時間を超えた場合に、ユーザー操作されたものと判断することを特徴とする請求項５に記載の計算機システム。
【請求項７】
前記動作履歴解析部は、
前記動作履歴表に記録された直近に連続動作していた前記仮想マシンの動作時間について、動作していた動作周波数を予め定めた基準周波数に換算したときの動作時間に換算することを特徴とする請求項６に記載の計算機システム。
【請求項８】
前記周波数制御部は、
前記動作履歴解析部により、前記ＣＰＵの動作周波数を上昇させる指示があったときには、前記ＣＰＵ固有の最大の動作周波数に制御することを特徴とする請求項１〜７のいずれか一つに記載の計算機システム。
【請求項９】
計算機システム上で動作する複数の仮想マシンと、前記仮想マシンを管理する仮想マシンモニタと、を備えた計算機システムにおける電力制御方法であって、
前記仮想マシンモニタは、
複数の前記仮想マシンのうち、ユーザー操作に関連する仮想マシンの動作履歴を記録する記録工程と、
前記仮想マシンの切り替えの際、前記記録工程に記録されて直近に連続動作していた前記仮想マシンの動作時間に基づき、ユーザー操作がおこなわれたか否かを判断する判断工程と、
前記判断工程により、ユーザー操作されたと判断したときには、ＣＰＵの動作周波数を上昇させる周波数制御工程と、
を含むことを特徴とする計算機システムの電力制御方法。
【請求項１０】
コンピュータ上で動作する複数の仮想マシンのうち、ユーザー操作に関連する仮想マシンの動作履歴を記録し、
前記仮想マシンの切り替えの際、前記記録されて直近に連続動作していた前記仮想マシンの動作時間に基づき、ユーザー操作がおこなわれたか否かを判断し、
ユーザー操作されたと判断したときには、ＣＰＵの動作周波数を上昇させる、
処理をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化された計算機システムの電力を制御する計算機システム、計算機システムの電力制御方法およびプログラムに関する。
【背景技術】
【０００２】
ＣＰＵ性能の向上によって、このＣＰＵが組み込まれる組み込み機器や端末は、１台で複数のオペレーティングシステム（ＯＳ）を動かす仮想化技術が実装できるようになってきている。携帯電話機のような端末においては、複数のＯＳを１台に搭載し、画面を切り替えることによって操作ＯＳを変更する方式が導入されており、１台の端末に要求される性能が増大してきている。このため、端末の利用者の操作性能を確保しつつ、限られた電力で効率的に動作するための制御が要求されてきている。この要求に対応して、組み込み機器に搭載されるＣＰＵは、複数の動作周波数、動作電圧の切り替えが可能で、動作速度、消費電力を制御できるようになっている。
【０００３】
このような従来技術として、たとえば、第１ＯＳが動作履歴を記録し、第２ＯＳの解析記録アプリケーションが第１ＯＳの動作履歴を解析することにより、障害発生前に障害の兆候を検知し、事前に障害に対処する処理を実行し、障害による影響を抑える技術がある（たとえば、下記特許文献１参照。）。また、指定タスクのイベント実行開始を契機として情報収集ルーチンを起動させ、イベント実行の処理結果等を記録することにより、オンライン性能への影響を少なくし、後にオフラインで解析できるようにした技術がある（たとえば、下記特許文献２参照。）。また、キーボード等からの入力を第１ブロックで検知し、メモリ効果を有する第２ブロックを起動させて表示を変更した後に、第１，第２ブロックの電源供給を停止させることにより、消費電力を削減する技術がある（たとえば、下記特許文献３参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１１５７５１号公報
【特許文献２】特開平４−７６６３９号公報
【特許文献３】特開２０００−１４８３１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来の特許文献では、仮想化された計算機システムのＣＰＵの電力制御と、処理速度を両立させた制御を実行することができなかった。仮想化システムでは、複数の仮想マシン（ＶＭ）が動作し、ユーザーの操作等により、仮想マシンモニタが仮想マシンの動作を切り替え、各ＶＭへのＣＰＵ資源の割り当てやＣＰＵの動作周波数を変更する。たとえば、ユーザーが携帯端末の操作を開始することにより、操作に関連するゲストＶＭとドライバＶＭとを交互に切り替えて動作させる。これにより、システムのＣＰＵ負荷が上昇するが、ＣＰＵ負荷をしきい値等を用いて定期的に検出する構成とすると、ＣＰＵ負荷がしきい値を超えなければＣＰＵ周波数を上昇させない。このため、ユーザー操作がなされても、ＣＰＵ周波数を上げるつぎの検出タイミングまで、低いＣＰＵ周波数のまま実行する時間が長くなり、ユーザー操作に対する処理の応答に遅延を発生させてしまう。
【０００６】
仮想マシンモニタは、上記のユーザー操作以外にもバックグラウンドで動作する処理、たとえば、サービスＶＭで動作するウイルスチェック等、応答速度を重視しない処理もあり、これらについては、ＣＰＵ負荷に応じてＣＰＵ周波数を下げて端末の消費電力を削減させている。特に携帯端末はバッテリー駆動のため、消費電力の削減が求められている。一方、ユーザーによる端末の操作時には、ＣＰＵ周波数が操作の開始を素早く検出してＣＰＵ周波数を上昇させ、処理速度を優先させる必要がある。従来技術では、ＣＰＵの省電力化とユーザー操作に対する処理の応答性の向上との両立ができなかった。
【０００７】
開示の計算機システム、計算機システムの電力制御方法およびプログラムは、上述した問題点を解消するものであり、ユーザー操作に対する処理の応答性を高めつつ省電力化できることを目的とする。
【課題を解決するための手段】
【０００８】
開示技術は、計算機システム上で動作する複数の仮想マシンと、仮想マシンを管理する仮想マシンモニタと、仮想マシンモニタに設けられ、複数の仮想マシンのうち、ユーザー操作に関連する仮想マシンの動作履歴に基づき、ユーザー操作のタイミングを解析する動作履歴解析部と、動作履歴解析部の解析に基づき、ＣＰＵの動作周波数を制御する周波数制御部とを備え、動作履歴解析部は、仮想マシンの切り替えの際、直近に連続動作していた仮想マシンの動作時間に基づき、ユーザー操作がおこなわれたか否かを判断し、ユーザー操作されたと判断したときには、周波数制御部に対しＣＰＵの動作周波数を上昇させる制御をおこなう。
【発明の効果】
【０００９】
ユーザー操作に対する処理の応答性を高めつつ省電力化できるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態にかかる計算機システムの機能ブロック図である。
【図２】図２は、実施の形態にかかる計算機システムのハードウェア構成図である。
【図３】図３は、実施の形態にかかる計算機システムを携帯電話機に適用した機能ブロック図である。
【図４】図４は、仮想マシンの動作履歴であるＶＭ動作履歴表を示す図表である。
【図５】図５は、ユーザー操作検出を判断するためのユーザー操作検出制御表を示す図表である。
【図６】図６は、実施の形態にかかる計算機システムのユーザー操作検出の処理内容を示すフローチャートである。
【図７】図７は、実施の形態にかかる計算機システムのＣＰＵ周波数下降処理の処理内容を示すフローチャートである。
【図８】図８は、仮想マシンの動作とＣＰＵ周波数の変動を時系列で表したタイムチャートである。
【図９】図９は、図８の動作に対応して作成されるＶＭ動作履歴表である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、開示技術の好適な実施の形態を詳細に説明する。開示技術は、仮想化された計算機システムを管理する仮想マシンモニタにて複数の仮想マシン（ＶＭ）のＣＰＵ動作履歴を記録し、解析するＶＭ動作履歴解析部を設ける。ＶＭ動作履歴解析部は、ユーザー操作に関連するＶＭの動作を解析し、ユーザー操作がおこなわれたかどうかを検出する。ユーザー操作がおこなわれたことを検出した場合は、ＣＰＵ周波数を上昇させることにより、ユーザー操作の応答速度を短縮させる。ユーザー操作を検出しなかった場合は、負荷に応じてＣＰＵ周波数を下降させ、消費電力の削減をおこなう。ここで、ユーザー操作がおこなわれたか否かは、単にＣＰＵ負荷の変動に基づき判断するのではなく、仮想マシンのＣＰＵ動作履歴が示す直近に動作した仮想マシンの動作時間に基づいて判断するため、ユーザー操作に対する応答時間を短縮させる。
【００１２】
この仮想化された計算機システムは、たとえば、携帯電話機等のバッテリー駆動の携帯端末に適用され、ユーザー操作に対する処理の応答性を高めつつ、省電力化を図ることができるものであるが、適用される計算機システムは、携帯端末に限らない。
【００１３】
・計算機システムの概要
図１は、実施の形態にかかる計算機システムの機能ブロック図である。仮想化された計算機システム１０では、複数の仮想マシン（ＶＭ）１１が動作する。このように、仮想化された複数のＯＳを搭載した計算機システム１０では、搭載される各種のデバイスを操作するためのドライバＶＭを仮想化マシンとして実装している。
【００１４】
図１に示す各仮想マシン１１のうち、ゲストＶＭ−Ａ，ゲストＶＭ−Ｂは、ユーザーが使用するアプリケーションを動作させるための仮想マシン（たとえば、オペレーティングシステム：ＯＳ）である。ユーザーによる切り替えボタン等の操作により、異なるＯＳが切り替えられ起動する。使用形態に応じて複数起動することもできる。仮想マシン１１のうち、ゲストＶＭ−Ａ，ゲストＶＭ−Ｂには、それぞれＦｒｏｎｔｅｎｄドライバ１２が実装されている。また、仮想マシン１１のうち、ドライバＶＭ−Ｃには、Ｂａｃｋｅｎｄドライバ１３が実装されている。このドライバＶＭ−Ｃは、ゲストＶＭ−Ａ，ゲストＶＭ−Ｂに実装されているＦｒｏｎｔｅｎｄドライバ１２からのデバイス操作要求を受け付けて各種のデバイス１５を制御する。このドライバＶＭ−Ｃは、デバイス１５の種別毎に複数起動されることが多い。
【００１５】
また、仮想マシン１１のうち、サービスＶＭ−Ｄには、システムに必要な補助的なサービス処理、たとえば、ウイルスチェック等が実装される。このサービスＶＭ−Ｄは、ユーザー操作に直接関連するものではなく、実行しているユーザープログラムのバックグラウンド処理としてサービスが実行され、迅速な処理、応答が必要とされないことが多い。
【００１６】
仮想マシンモニタ（ＶＭＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）２０は、一つの計算機システム１０を複数の仮想マシン１１として利用するための制御をおこなう。この仮想マシンモニタ２０は、ＣＰＵスケジューラ２１と、ＶＭ動作履歴解析部２２と、ＣＰＵ周波数変更制御部２３とを含む。
【００１７】
ＣＰＵスケジューラ２１は、各ＶＭ１１を動作させるためのＣＰＵ３０の割り当て（スケジューリング）を制御する。また、動作する仮想マシン１１の切り替えに合わせてＶＭ動作履歴解析部２２を呼び出す。
【００１８】
ＶＭ動作履歴解析部２２は、ＣＰＵスケジューラ２１により仮想マシン１１を切り替える時点で呼び出され、動作した仮想マシン１１の動作履歴を逐次記録し、そのたびに動作履歴に基づき解析処理をおこなってユーザー操作の開始を検出する。また、ＣＰＵスケジューラ２１が記録した動作履歴の解析結果によって、ＣＰＵ３０のＣＰＵ利用率を算出し、ＣＰＵの動作周波数の変更を実施するか否かを判断する。
【００１９】
ＣＰＵ周波数変更制御部２３は、ＶＭ動作履歴解析部２２による判断結果に対応して、ＣＰＵ３０の動作周波数の変更制御をおこなう。具体的には、ＣＰＵ３０の動作周波数を上げたり、下げたりする制御をおこなう。
【００２０】
図２は、実施の形態にかかる計算機システムのハードウェア構成図である。図１に記載の計算機システム１０を携帯電話機に適用した場合における構成例を示した。ＣＰＵ３０は、フラッシュメモリ４０に格納されたＯＳ、およびアプリケーションをメモリ４１に読み込み、実行する。そして、図１に記載された仮想マシン１１、および仮想マシンモニタ２０は、ＣＰＵ３０におけるプログラム実行により、上述した各機能を得ることができる。
【００２１】
このＣＰＵ３０は、アプリケーションの実行時に、必要なデバイス１５に対してアクセスをおこなう。このデバイス１５の種類としては、ユーザーが操作入力するためのキー（ＫＥＹ）１５ａ、音出力するオーディオ（ＡＵＤＩＯ）１５ｂ、無線ＬＡＮ１５ｃ、３Ｇ規格等の基地局と通信をおこなう通信部１５ｄ、現在位置を測位するＧＰＳ１５ｅ、写真撮影をおこなうカメラ１５ｆ、各種情報を表示する表示部１５ｇ、ユーザーの操作入力用のタッチパネル１５ｈ等を含む。また、バッテリー４２は、各部の動作用の電源を供給する。上記の各部は、バス４３を介して信号をやりとりする。
【００２２】
たとえば、各種デバイスである、キー１５ａの操作入力や通信部１５ｄにおけるデータ受信等のイベント発生時には、これらキー１５ａ、通信部１５ｄは、ＣＰＵ３０に割り込み通知をおこない、ＣＰＵ３０は、割り込みに対応した処理をおこなう。
【００２３】
・ＶＭ動作履歴解析部の処理概要
ＶＭ動作履歴解析部２２は、ユーザー操作に関連するＶＭの動作を下記の手順に沿って解析し、ユーザー操作がおこなわれたかどうかを検出する。
（１）ユーザー操作に関連する仮想マシン１１（ゲストＶＭ−Ａ，ＶＭ−Ｂ，ドライバＶＭ−Ｃ）毎にユーザー操作を検出するためのユーザー操作検出時間を予め制御表に登録しておき、該当する仮想マシン１１のＶＭ動作時間がユーザー操作検出時間を超えた場合に、ユーザー操作検出であると判断する。
（２）ユーザー操作に関係する仮想マシン１１（ゲストＶＭ−Ａ，ＶＭ−Ｂ，ドライバＶＭ−Ｃ）の組み合わせによるユーザー操作検出時間についても予め制御表に登録しておき、該当する仮想マシン１１を組み合わせたＶＭ実行時間がユーザー操作検出時間を超えた場合に、ユーザー操作検出と判断する。
（３）ユーザー操作であると判断した場合には、ＣＰＵ周波数を上昇させることにより、ユーザー操作の応答速度を短縮させる。ユーザー操作ではないと判断した場合には、負荷に応じてＣＰＵ周波数を下降させ、消費電力を低減させる。
【００２４】
・携帯電話機への適用例
図３は、実施の形態にかかる計算機システムを携帯電話機に適用した機能ブロック図である。本開示技術の実施の一例として、仮想化された携帯電話システム上で複数の仮想マシン１１（仮想マシン）が動作している場合の構成について説明する。図３において、図１および図２と同じ構成には同じ符号を付してある。
【００２５】
図３に示すように、一つのＣＰＵ３０を搭載した携帯電話機上で、仮想マシンモニタ２０が動作する。搭載されているＣＰＵ３０は、動作周波数、電圧を動的に変更する等により、消費する電力を制御できるものが用いられる。デバイス１５としては、キー１５ａと、タッチパネル１５ｈが設けられている。この携帯電話機は、仮想化されたシステム上で仮想マシン１１であるゲストＶＭ−Ａ（１１ａ）がゲストＯＳを実行する。たとえば、ユーザーは、ゲストＶＭ−Ａ（１１ａ）の実行により、表示される操作画面にしたがい操作をおこなう。また、ゲストＶＭ−Ａ（１１ａ）からの操作要求に応じて、デバイス１５（キー１５ａ、タッチパネル１５ｈ）を操作するための仮想マシン１１として、およびドライバＶＭ−Ｂ（１１ｂ）と、ドライバＶＭ−Ｃ（１１ｃ）が動作する。また、外部ネットワークからのウイルスチェック等をおこなう仮想マシン１１（サービスＶＭ−Ｄ（１１ｄ））も動作する。
【００２６】
図４は、仮想マシンの動作履歴であるＶＭ動作履歴表を示す図表である。ＶＭ動作履歴解析部２２がメモリ４１等に記録するＶＭ動作履歴表５０の例を示す。ＶＭ動作履歴表５０は、図の上から下へ向けた時系列順に、仮想マシン１１の識別子（ＶＭ  ＩＤ）と、仮想マシン毎に動作した際のＣＰＵ３０の動作周波数と、仮想マシン１１の動作時間と、の項目を含む。ＶＭ動作履歴解析部２２は、ＣＰＵスケジューラ２１によって動作する仮想マシン１１が切り替えられた際に呼び出される。そして、ＶＭ動作履歴解析部２２は、直前に動作した仮想マシン１１に関する動作履歴として、ＶＭ  ＩＤと、動作周波数と、動作時間とをＶＭ動作履歴表５０の最終行に新たなエントリとして追加する。
【００２７】
図５は、ユーザー操作検出を判断するためのユーザー操作検出制御表を示す図表である。このユーザー操作検出制御表５５は、ＶＭ動作履歴解析部２２がメモリ４１等に保持するものであり、予めユーザー操作に関連する仮想マシン１１について保持する。図５に示す例では、ユーザー操作に関連する仮想マシン１１に該当するものとして、ゲストＶＭ−Ａ（１１ａ）、ドライバＶＭ−Ｂ（１１ｂ）、ドライバＶＭ−Ｃ（１１ｃ）であり、ゲストＶＭ−Ａ（１１ａ）からみた単独、および連続動作する複数の仮想マシン１１の組み合わせ毎の識別子（ＶＭ  ＩＤ）と、各識別子毎のユーザー操作検出時間、直近動作時間のエントリの例を示している。
【００２８】
ユーザー操作検出時間のエントリは、ユーザー操作開始を判断するためのしきい値として、予め携帯電話機の設計時に固定値として設定される。直近動作時間は、仮想マシン１１の切り替え時にＶＭ動作履歴解析部２２が呼び出された直前までの間、連続動作した仮想マシン１１の時間であり、仮想マシン１１の動作終了毎に上書きで記録される。ＶＭ動作履歴解析部２２は、仮想マシン１１毎の直近動作時間をユーザー操作検出時間と比較し、直近動作時間がユーザー操作検出時間を上回った場合、ユーザー操作が開始されたと判断する。
【００２９】
また、ＣＰＵ３０は、動作周波数を複数の周波数段階に切り替え可能であり、動作した仮想マシン１１毎に動作周波数が異なる。これに対応して、エントリに記録する直近動作時間は、一つの基準周波数に換算した時間に統一して格納する。図５に示す例では、ＣＰＵ３０の基準周波数を５００ＭＨｚとしている。この場合、
記録する直近動作時間＝直近の実際の動作時間×（直近の実際の動作時間における動作周波数／基準周波数）
となる。
【００３０】
たとえば、ＣＰＵ３０の動作周波数が５００ＭＨｚで動作した仮想マシン１１の直近の実際の動作時間が４ｍｓであれば、直近動作時間としてそのまま４ｍｓとして記録される。また、ＣＰＵ３０の動作周波数が基準周波数の半分である２５０ＭＨｚで動作した仮想マシン１１の直近の実際の動作時間が４ｍｓであれば、基準周波数に換算すると直近動作時間が２ｍｓとして記録される。
【００３１】
このように、ユーザーによる操作開始の判断は、仮想マシン１１の切り替えにより直近に連続動作した一つあるいは複数の仮想マシン１１の動作時間（直近動作時間）に基づきおこなっている。この時間の概念を判断することにより、ＣＰＵ３０の負荷変動に対応してユーザーによる操作開始のタイミングを適切に判断し、速やかに検出できるようになる。加えて、ＣＰＵ３０の動作周波数の変更にも対応して、ユーザーによる操作開始のタイミングを適切に判断できるようになる。
【００３２】
・ユーザー操作検出の処理の説明
図６は、実施の形態にかかる計算機システムのユーザー操作検出の処理内容を示すフローチャートである。この図６に示す処理は、ＶＭ動作履歴解析部２２がＣＰＵスケジューラ２１による仮想マシン１１の切り替え毎の呼び出し時に実行する。
【００３３】
はじめに、ＶＭ動作履歴解析部２２は、直前まで動作していた仮想マシン１１の動作履歴の情報（ＶＭ  ＩＤ、ＣＰＵ動作周波数、動作時間）をＶＭ動作履歴表５０のエントリに追加する（ステップＳ１）。つぎに、直前まで動作していた仮想マシン１１はユーザー操作に関連している仮想マシン（ＶＭ）であるか判断する（ステップＳ２）。具体的には、図５のユーザー操作検出制御表５５を参照し、このユーザー操作検出制御表５５にＶＭ  ＩＤが登録されている仮想マシン１１であれば、ユーザー操作関連ＶＭであると判断し（ステップＳ２：Ｙｅｓ）、登録されていなければ、ユーザー操作関連ＶＭでないと判断する（ステップＳ２：Ｎｏ）。
【００３４】
ユーザー操作関連ＶＭでなければ（ステップＳ２：Ｎｏ）、ＣＰＵ周波数下降制御をおこない（ステップＳ８）、処理を終了する。ユーザー操作関連ＶＭであれば（ステップＳ２：Ｙｅｓ）、この仮想マシン１１の直近動作時間を算出する（ステップＳ３）。この直近動作時間は、図４のＶＭ動作履歴表５０を参照して算出する。具体的には、アイドル時間をはさまずに、該当の仮想マシン１１が直近に連続動作した時間の合計を、基準周波数に換算して求める。そして、求めた直近動作時間をユーザー操作検出制御表５５のエントリに記録する。
【００３５】
つぎに、ステップＳ３で算出した直近動作時間を、ユーザー操作検出制御表５５に設定されている同じＶＭ  ＩＤのユーザー操作検出時間と比較する（ステップＳ４）。比較の結果、直近動作時間がユーザー操作検出時間を超えている場合は（ステップＳ４：Ｙｅｓ）、ユーザー操作開始と判断し、ＣＰＵ周波数を上昇させ（ステップＳ７）、処理を終了する。このＣＰＵ周波数上昇の制御は、ＶＭ動作履歴解析部２２がＣＰＵ周波数変更制御部２３に指示し、ＣＰＵ周波数変更制御部２３がＣＰＵ３０の周波数を上昇させる。この実施形態では、ＣＰＵ周波数変更制御部２３は、ユーザー操作されたときの応答時間を短縮するために、ＣＰＵ３０の周波数をＣＰＵ３０固有の最大の周波数に上昇させる。
【００３６】
直近動作時間がユーザー操作検出時間を超えていない場合は（ステップＳ４：Ｎｏ）、つぎに、ユーザー操作検出制御表５５に設定されている他の仮想マシン１１と組み合わせた直近動作時間を算出する（ステップＳ５）。図５に示す例では、該当するＶＭ  ＩＤがＡであれば、ＶＭ  ＩＤがＡ＋Ｂと、Ａ＋Ｃと、Ａ＋Ｂ＋Ｃのそれぞれの組み合わせの直近動作時間を算出している。そして、ステップＳ５で算出した直近動作時間を、該当する組み合わせのユーザー操作検出時間と比較する（ステップＳ６）。
【００３７】
比較の結果、直近動作時間が該当する組み合わせのユーザー操作検出時間のいずれかを超えている場合は（ステップＳ６：Ｙｅｓ）、ユーザー操作開始と判断し、ＣＰＵ周波数を上昇させ（ステップＳ７）、処理を終了する。一方、直近動作時間が該当する組み合わせのユーザー操作検出時間のいずれかを超えていない場合は（ステップＳ６：Ｎｏ）、ユーザーの操作開始ではないと判断し、ＣＰＵ周波数下降処理（ステップＳ８）をおこない、処理を終了する。
【００３８】
・ＣＰＵ周波数下降処理について
図７は、実施の形態にかかる計算機システムのＣＰＵ周波数下降制御の処理内容を示すフローチャートである。図６のステップＳ８に示す処理内容を説明する。この処理は、直近に動作した仮想マシン１１がユーザー操作開始に関連しない仮想マシンであると判断されたときに実行する。
【００３９】
はじめに、ＶＭ動作履歴解析部２２は、図４に示すＶＭ動作履歴表５０から直近のシステム（仮想マシン１１動作時）のＣＰＵ利用率を算出する（ステップＳ１１）。つぎに、直近のＣＰＵ利用率が予め設定されたしきい値を下回ったか判断する（ステップＳ１２）。直近のＣＰＵ利用率が予め設定されたしきい値を下回っていれば（ステップＳ１２：Ｙｅｓ）、ＣＰＵ３０の周波数を下降させ（ステップＳ１３）、消費電力を削減させて、処理を終了する。直近のＣＰＵ利用率が予め設定されたしきい値を下回っていなければ（ステップＳ１２：Ｎｏ）、処理を終了する。
【００４０】
ここで、しきい値を一つだけ設定したときには、予め定めた１段低い動作周波数に下降させる。この場合、図７に示した複数回の下降処理の実行毎に少しずつＣＰＵの動作周波数が下がることになる。また、異なるＣＰＵ利用率毎にしきい値を複数段階設定することもでき、この場合には、各しきい値の段階にそれぞれ対応した周波数に直接下降させることができる。
【００４１】
（実施例）
以下、上記構成による仮想マシンの動作とＣＰＵ周波数の変動の例について説明する。図８は、仮想マシンの動作とＣＰＵ周波数の変動を時系列で表したタイムチャートである。また、図９は、図８の動作に対応して作成されるＶＭ動作履歴表である。図９のＶＭ動作履歴表５０は図８の時期ｔ１における時点のＶＭ動作履歴を示している。図８に示す例では、最初はシステムの負荷が低く、低いＣＰＵ周波数（２５０ＭＨｚ）で動作し、時期ｔ０の時点でユーザーが端末の操作を開始し、その後操作に関連する仮想マシン１１（ＶＭ−Ａ，ＶＭ−Ｂ）が交互に動作し、システムのＣＰＵ負荷が上昇していく様子を示している。
【００４２】
時期ｔ１の時点で、ＣＰＵスケジューラ２１は、仮想マシン１１をＶＭ−Ｂ（１１ｂ）からＶＭ−Ａ（１１ａ）へスケジュールを切り替え、ＶＭ動作履歴解析部２２を呼び出す。ＶＭ動作履歴解析部２２は、直近に動作していた仮想マシン１１であるＶＭ−Ｂ（１１ｂ）が連続して動作した直近動作時間を求める。この際、図９のＶＭ動作履歴表５０から直近に連続動作していた仮想マシン１１は、アイドル以降の仮想マシン１１であるため、単独のＶＭ−Ｂ（１１ｂ）と、このＶＭ−Ｂ（１１ｂ）とＶＭ−Ａ（１１ａ）の組み合わせ（Ａ＋Ｂ）であることを検出している。
【００４３】
したがって、ＶＭ動作履歴解析部２２は、単独の仮想マシン１１であるＢ、および組み合わせの仮想マシン（Ａ＋Ｂ）の直近動作時間を求めて、図５のユーザー操作検出制御表５５に登録されている検出時間と比較する。
【００４４】
仮想マシンＶＭ−Ｂの直近動作時間については、図５のユーザー操作検出制御表５５から、アイドル以降で連続した動作時間が（５＋８）／２＝６．５ｍｓであり（２で割るのは５００ＭＨｚ換算のため）、ユーザー操作検出制御表５５の該当するＶＭ  ＩＤ＝Ｂに設定されているユーザー操作検出時間の９ｍｓを下回っている。この処理だけではＣＰＵ３０の周波数を上昇させる制御はおこなわない。
【００４５】
しかし、仮想マシンＶＭ（Ａ＋Ｂ）の直近動作時間についても同様に求めると、アイドル以降における仮想マシン１１の動作がＢ，Ａ，Ｂであるため、（５＋８＋８）／２＝１０．５ｍｓであり、ユーザー操作検出制御表５５の該当するＶＭ  ＩＤ＝（Ａ＋Ｂ）に設定されているユーザー操作検出時間の１０ｍｓを超えている。したがって、ＶＭ動作履歴解析部２２は、この時期ｔ１でユーザー操作開始であることを検出し、この時期ｔ１でＣＰＵ３０の周波数をただちに上昇（５００ＭＨｚ）させることができる。
【００４６】
ここで、対比のために、一定間隔Ｔ０でＣＰＵ負荷率に基づき制御する従来の技術を説明する。時期ｔ１でユーザーが操作を開始した時点では、まだ一定間隔Ｔ０の検出時点ではないため、ＣＰＵ３０の周波数制御はおこなわない。この後、つぎの時期ｔ１’までの区間におけるＣＰＵ利用率は７０％であるため、しきい値（たとえば９５％）を超えておらず、まだＣＰＵ３０の周波数を上昇させる制御はおこなわない。この後、つぎの時期ｔ２までの区間におけるＣＰＵ利用率が１００％と算出されると、はじめてしきい値を超えたと判断され、ＣＰＵ３０の周波数を上昇させる制御をおこなう。このように、従来は、ユーザー操作を開始して負荷が上昇をはじめても、一定間隔Ｔ０の区間におけるＣＰＵ利用率がしきい値に達しなければＣＰＵ３０の周波数を上昇させる必要はないと判断してしまい、ＣＰＵ３０の周波数を上昇させるタイミングが遅延している。これにより、上記実施形態であれば、従来に比して時間Ｔ１分だけ早くＣＰＵ３０の周波数を上昇させることができ、ユーザー操作の実行処理時間を短縮することができる。
【００４７】
以上説明した実施の形態によれば、複数の仮想マシンが動作する仮想化された計算機システムにおいて、ＣＰＵの省電力制御をおこないつつ、ユーザー操作については、仮想マシンの動作時間に基づき判断するため、ユーザー操作に対する応答時間を短縮することができるようになる。ここで、仮想マシンの動作時間に関係なく、単にユーザー操作されたことで直ぐにＣＰＵの周波数を上昇させる制御にすると、実際のＣＰＵ負荷が低くても頻繁にＣＰＵの周波数が上昇することとなる。しかし、開示技術のように、直近に動作した仮想マシンのうちユーザー操作に関連する仮想マシンの連続動作時間に基づきＣＰＵの周波数を上昇させることにより、ユーザー操作があったときにおける実際のＣＰＵの負荷に素早く対応させることができるようになる。
【００４８】
そして、本開示技術は、特に仮想化された携帯電話機等のバッテリーで動作する携帯機器に用いて効果的である。携帯機器ではバッテリーで供給可能な電力に限界があり、ＣＰＵの省電力制御が必須であるが、同時に利用者が携帯画面を操作する際にシステムが迅速に反応し、快適な操作速度を確保することが求められる。本開示技術によれば、仮想化携帯電話機上で各仮想マシンの動作履歴からユーザー操作の実行の開始を検出し、操作速度の確保が必要な際に迅速にＣＰＵ周波数を上昇させ、システムの応答性を確保することができるようになる。
【００４９】
なお、この実施の形態で説明した電力制御方法は、予め用意されたプログラムをパーソナル・コンピュータを含む計算機システムを構成するコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【００５０】
上述した各実施の形態に関し、さらに以下の付記を開示する。
【００５１】
（付記１）計算機システム上で動作する複数の仮想マシンと、
前記仮想マシンを管理する仮想マシンモニタと、
前記仮想マシンモニタに設けられ、複数の前記仮想マシンのうち、ユーザー操作に関連する仮想マシンの動作履歴に基づき、ユーザー操作のタイミングを解析する動作履歴解析部と、
前記動作履歴解析部の解析に基づき、ＣＰＵの動作周波数を制御する周波数制御部とを備え、
前記動作履歴解析部は、
仮想マシンの切り替えの際、直近に連続動作していた前記仮想マシンの動作時間に基づき、ユーザー操作がおこなわれたか否かを判断し、ユーザー操作されたと判断したときには、前記周波数制御部に対し前記ＣＰＵの動作周波数を上昇させる制御をおこなうことを特徴とする計算機システム。
【００５２】
（付記２）前記動作履歴解析部は、
仮想マシンの切り替えの際、直近に連続動作していた前記仮想マシンが複数の場合には、これら複数の仮想マシンの合計の動作時間に基づき、ユーザー操作がおこなわれたか否かを判断し、ユーザー操作されたと判断したときには、前記周波数制御部に対し前記ＣＰＵの動作周波数を上昇させる制御をおこなうことを特徴とする付記１に記載の計算機システム。
【００５３】
（付記３）前記動作履歴解析部は、
ユーザー操作されたものではないと判断したときには、前記周波数制御部に対し前記ＣＰＵの動作周波数を下降させることを特徴とする付記１または２に記載の計算機システム。
【００５４】
（付記４）前記動作履歴解析部は、
アイドル後から連続動作している仮想マシンを、前記直近に連続動作していた前記仮想マシンと判断することを特徴とする付記１〜３のいずれか一つに記載の計算機システム。
【００５５】
（付記５）前記動作履歴解析部は、
ユーザー操作に関連する仮想マシンの動作履歴として、動作した仮想マシンの識別子と、動作周波数と、動作時間を動作履歴表に時間経過順に記録することを特徴とする付記１〜４のいずれか一つに記載の計算機システム。
【００５６】
（付記６）前記動作履歴解析部は、
ユーザー操作に関連する仮想化マシン毎にユーザー操作を検出するためのユーザー操作検出時間が予めユーザー操作検出制御表に設定され、前記動作履歴表に記録された直近に連続動作していた前記仮想マシンの動作時間が前記ユーザー操作検出時間を超えた場合に、ユーザー操作されたものと判断することを特徴とする付記５に記載の計算機システム。
【００５７】
（付記７）前記動作履歴解析部は、
前記動作履歴表に記録された直近に連続動作していた前記仮想マシンの動作時間について、動作していた動作周波数を予め定めた基準周波数に換算したときの動作時間に換算することを特徴とする付記６に記載の計算機システム。
【００５８】
（付記８）前記周波数制御部は、
前記動作履歴解析部により、前記ＣＰＵの動作周波数を上昇させる指示があったときには、前記ＣＰＵ固有の最大の動作周波数に制御することを特徴とする付記１〜７のいずれか一つに記載の計算機システム。
【００５９】
（付記９）前記周波数制御部は、
前記動作履歴解析部により、前記ＣＰＵの動作周波数を下降させる指示があったときには、ＣＰＵ利用率に基づき前記ＣＰＵの動作周波数を下降させる制御をおこなうことを特徴とする付記１〜８のいずれか一つに記載の計算機システム。
【００６０】
（付記１０）計算機システム上で動作する複数の仮想マシンと、前記仮想マシンを管理する仮想マシンモニタと、を備えた計算機システムにおける電力制御方法であって、
前記仮想マシンモニタは、
複数の前記仮想マシンのうち、ユーザー操作に関連する仮想マシンの動作履歴を記録する記録工程と、
前記仮想マシンの切り替えの際、前記記録工程に記録されて直近に連続動作していた前記仮想マシンの動作時間に基づき、ユーザー操作がおこなわれたか否かを判断する判断工程と、
前記判断工程により、ユーザー操作されたと判断したときには、ＣＰＵの動作周波数を上昇させる周波数制御工程と、
を含むことを特徴とする計算機システムの電力制御方法。
【００６１】
（付記１１）コンピュータ上で動作する複数の仮想マシンのうち、ユーザー操作に関連する仮想マシンの動作履歴を記録し、
前記仮想マシンの切り替えの際、前記記録されて直近に連続動作していた前記仮想マシンの動作時間に基づき、ユーザー操作がおこなわれたか否かを判断し、
ユーザー操作されたと判断したときには、ＣＰＵの動作周波数を上昇させる、
処理をコンピュータに実行させることを特徴とするプログラム。
【符号の説明】
【００６２】
１０  計算機システム
１１  仮想マシン
１５  デバイス
１５ａ  キー
１５ｈ  タッチパネル
２０  仮想マシンモニタ
２１  ＣＰＵスケジューラ
２２  ＶＭ動作履歴解析部
２３  ＣＰＵ周波数変更制御部
３０  ＣＰＵ
４０  フラッシュメモリ
４１  メモリ
４２  バッテリー
５０  ＶＭ動作履歴表
５５  ユーザー操作検出制御表
【図１】
0005696603.tif 000002
【図２】
0005696603.tif 000003
【図３】
0005696603.tif 000004
【図４】
0005696603.tif 000005
【図５】
0005696603.tif 000006
【図６】
0005696603.tif 000007
【図７】
0005696603.tif 000008
【図８】
0005696603.tif 000009
【図９】
0005696603.tif 000010