(57)【要約】【課題】処理システムによる生産性の向上をはかる。【解決手段】利用者端末に関する端末情報とローカルサーバまたはリモートサーバで稼動中の仮想マシンに関する仮想マシン情報とに応じて、仮想マシンをローカルサーバとリモートサーバとのいずれで稼動するかの判定を行なう判定部１１１と、この判定部１１１による判定結果に従って、仮想マシンをローカルサーバとリモートサーバとのいずれか一方に転送するように、ローカルサーバまたはリモートサーバに対する指示を行なう指示部１１２と、を有する。【選択図】図４
2014059783.tif 000002
【特許請求の範囲】
【請求項１】
利用者端末と、前記利用者端末側の第１物理サーバと、前記利用者端末および前記第１物理サーバと相互に通信可能に接続された第２物理サーバと、を含む処理システムにおいて、前記第１物理サーバと前記第２物理サーバとのいずれか一方で稼動する仮想マシンを制御する制御装置であって、
前記利用者端末に関する端末情報と前記第１物理サーバまたは前記第２物理サーバで稼動中の前記仮想マシンに関する仮想マシン情報とに応じて、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれで稼動するかの判定を行なう判定部と、
前記判定部による判定結果に従って、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれか一方に転送するように、前記第１物理サーバまたは前記第２物理サーバに対する指示を行なう指示部と、を有する、制御装置。
【請求項２】
前記判定部は、前記端末情報および前記仮想マシン情報に基づき、前記仮想マシンによって実行される処理が対話型処理と当該対話型処理よりも高い負荷のかかる高負荷処理とのいずれであるかを判定し、前記処理が前記対話型処理である場合、前記仮想マシンを稼働するサーバを前記第１物理サーバと判定する一方、前記処理が前記高負荷処理である場合、前記仮想マシンを稼働するサーバを前記第２物理サーバと判定する、請求項１に記載の制御装置。
【請求項３】
前記利用者端末から利用者による前記仮想マシンの転送指示または転送中止指示を受けた場合、前記指示部は、前記判定結果よりも前記転送指示または前記転送中止指示を優先し、前記転送指示または前記転送中止指示に従って、前記第１物理サーバまたは前記第２物理サーバに対する前記指示を行なう、請求項２に記載の制御装置。
【請求項４】
前記判定部は、前記仮想マシン情報に含まれる前記仮想マシンでのスクリーン描画量と前記端末情報に含まれる前記利用者端末でのスクリーン描画量との差分である描画漏れ量を算出し、当該描画漏れ量が第１閾値を超えた場合、前記仮想マシンを稼働するサーバを前記第１物理サーバと判定する、請求項３に記載の制御装置。
【請求項５】
前記転送指示または前記転送中止指示に従って、前記第１閾値を調整する第１調整部をさらに有し、
前記第１調整部は、
前記描画漏れ量が前記第１閾値を超える前に、前記仮想マシンを前記第２物理サーバから前記第１物理サーバへ転送する前記転送指示を受信した場合、前記第１閾値よりも小さい値を次の第１閾値とする一方、
前記描画漏れ量が前記第１閾値を超えたことに伴い前記指示部が前記仮想マシンを前記第２物理サーバから前記第１物理サーバへ転送する指示を行なった後に、前記転送中止指示を受信した場合、前記第１閾値よりも大きい値を次の第１閾値とする、請求項４に記載の制御装置。
【請求項６】
前記判定部は、前記仮想マシン情報に含まれる前記仮想マシンでのスクリーン描画量と前記端末情報に含まれる前記利用者端末でのスクリーン描画量との差分である描画漏れ量を算出し、当該描画漏れ量が第２閾値以下であり、且つ、前記仮想マシン情報に含まれる、前記仮想マシンでの演算処理部使用率が第３閾値を超える場合、前記仮想マシンを稼働するサーバを前記第２物理サーバと判定する、請求項３〜請求項５のいずれか一項に記載の制御装置。
【請求項７】
前記転送指示または前記転送中止指示に従って、前記第２閾値を調整する第２調整部をさらに有し、
前記第２調整部は、
前記描画漏れ量が前記第２閾値以下になり且つ前記演算処理部使用率が前記第３閾値を超える前に、前記仮想マシンを前記第１物理サーバから前記第２物理サーバへ転送する前記転送指示を受信した場合、前記第２閾値よりも大きい値を次の第２閾値とする一方、
前記描画漏れ量が前記第２閾値以下になり且つ前記演算処理部使用率が前記第３閾値を超えたことに伴い前記指示部が前記仮想マシンを前記第１物理サーバから前記第２物理サーバへ転送する指示を行なった後に、前記転送中止指示を受信した場合、前記第２閾値よりも小さい値を次の第２閾値とする、請求項６に記載の制御装置。
【請求項８】
前記判定部は、
前記端末情報および前記仮想マシン情報の受信時に前記転送指示を受けた場合、今回受信した前記端末情報および前記仮想マシン情報についての正解は、前記転送指示によって指定される転送先サーバであるとして学習を行なうことによって、学習モデルの生成更新を行なう一方、
前記端末情報および前記仮想マシン情報の受信時に前記転送指示を受けていない場合、今回受信した前記端末情報および前記仮想マシン情報を前記学習モデルに与えることによって得られる予測値に基づき、前記判定を行なう、請求項３に記載の制御装置。
【請求項９】
前記判定部は、前記端末情報および前記仮想マシン情報の受信時が前回受けた転送指示の有効期限内である場合、今回受信した前記端末情報および前記仮想マシン情報についての正解は、前記前回受けた転送指示の転送先サーバであるとして学習を行なうことによって、学習モデルの生成更新を行なう、請求項８に記載の制御装置。
【請求項１０】
前記判定部は、所定回数もしくは所定期間、前記学習を行なってから、前記学習モデルに基づく前記判定を開始する、請求項８または請求項９に記載の制御装置。
【請求項１１】
前記指示部による前記指示に伴い前記仮想マシンの転送が実行された場合、前記判定部は、前記仮想マシンの転送後の所定期間、前記判定の実行を抑止する、請求項１〜請求項１０のいずれか一項に記載の制御装置。
【請求項１２】
利用者端末と、
前記利用者端末側の第１物理サーバと、
前記利用者端末および前記第１物理サーバと相互に通信可能に接続された第２物理サーバと、
前記第１物理サーバと前記第２物理サーバとのいずれか一方で稼動する仮想マシンを制御する制御装置と、
前記利用者端末に関する端末情報を収集する第１収集部と、
前記第１物理サーバまたは前記第２物理サーバで稼動中の前記仮想マシンに関する仮想マシン情報を収集する第２収集部と、を有し、
前記制御装置は、
前記第１収集部によって収集された前記端末情報と前記第２収集部によって収集された前記仮想マシン情報とに応じて、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれで稼動するかの判定を行なう判定部と、
前記判定部による判定結果に従って、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれか一方に転送するように、前記第１物理サーバまたは前記第２物理サーバに対する指示を行なう指示部と、を有する、処理システム。
【請求項１３】
利用者端末と、前記利用者端末側の第１物理サーバと、前記利用者端末および前記第１物理サーバと相互に通信可能に接続された第２物理サーバと、を含む処理システムにおいて、前記第１物理サーバと前記第２物理サーバとのいずれか一方で稼動する仮想マシンを制御するコンピュータに、
前記利用者端末に関する端末情報と前記第１物理サーバまたは前記第２物理サーバで稼動中の前記仮想マシンに関する仮想マシン情報とに応じて、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれで稼動するかの判定を行ない、
前記判定の結果に従って、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれか一方に転送するように、前記第１物理サーバまたは前記第２物理サーバに対する指示を行なう、
処理を実行させる、制御プログラム。
【請求項１４】
利用者端末と、前記利用者端末側の第１物理サーバと、前記利用者端末および前記第１物理サーバと相互に通信可能に接続された第２物理サーバと、を含む処理システムにおいて、前記第１物理サーバと前記第２物理サーバとのいずれか一方で稼動する仮想マシンをコンピュータにより制御する制御方法であって、
前記コンピュータにより、前記利用者端末に関する端末情報と前記第１物理サーバまたは前記第２物理サーバで稼動中の前記仮想マシンに関する仮想マシン情報とに応じて、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれで稼動するかの判定を行ない、
前記コンピュータにより、前記判定の結果に従って、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれか一方に転送するように、前記第１物理サーバまたは前記第２物理サーバに対する指示を行なう、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、処理システム、制御プログラム、及び制御方法に関する。
【背景技術】
【０００２】
ＣＡＤ（Computer Aided Design）などのアプリケーションソフトウェアを実行する場合、負荷の高い処理が多く発生するため、高性能なコンピュータが必要となる。そこで、近年は、並列処理によって処理性能の向上をはかるべく、多数のコンピュータを同時に利用することがよくある。
かつてはＣＡＤの利用者がコンピュータを自前で用意していたが、近年はクラウドコンピューティングサービスを導入することで、必要なときに必要な台数だけのコンピュータを利用することが可能になり、設備投資や運用のためのコストを削減することができる。
【０００３】
クラウドコンピューティングでは、図１１に示すように、利用者の自席に置いた端末コンピュータ（安価なパソコン，シンクライアントなど）１００が、ネットワーク２００経由でクラウド（データセンタ）３００内のコンピュータにアクセスする。ネットワーク２００は、例えば公衆インターネット，ＶＰＮ（Virtual Private Network）である。データセンタ３００内には、編集作業用主サーバ３０１，ＬＡＮ（Local Area Network）３０２および並列処理用サーバ群３０３がそなえられる。利用者は、端末コンピュータ１００からネットワーク２００，編集作業用主サーバ３０１およびＬＡＮ３０２を介して並列処理用サーバ群３０３にアクセスする。このとき、端末コンピュータ１００での操作性を改善するための技術（画面描画の高速化技術；データ圧縮技術；ネットワークの高速化技術など）が利用されることもある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−４８６０７号公報
【特許文献２】特開２０１０−１１７７６０号公報
【特許文献３】特開２０１１−７６６０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
クラウドコンピューティングでは、ＧＵＩ（Graphical User Interface）による対話型処理の応答が鈍くなる。
利用者の端末コンピュータ１００から、クラウド３００内で稼働するコンピュータ（サーバ３０１，３０３）までの、ネットワーク２００上での距離（ネットワーク距離）が長くなると、信号が当該距離の通信路を往復することで生じる遅延（ＲＴＴ：Round Trip Time）が大きくなる。この遅延は、端末コンピュータ１００で利用者がある操作を行なってから、画面表示が更新されるまでの応答の遅れとして体感できる。
【０００６】
データ通信速度は、光速を超えることはなく、画面描画の高速化技術を適用したとしても、遅延を短くするには限界がある。ＣＡＤにおける設計作業（特に、設計部品の配置や移動といった編集作業など）は、対話型処理の典型例であり、遅延が大きいときには、応答の悪さのために、利用者がストレスを感じ、生産性が低下する。例えば、クラウドコンピューティングサービスのデータセンタが国外にあるような場合、遅延が大きすぎ、クラウド内のコンピュータを用いた処理は、実用的ではなくなる。
【０００７】
一つの側面で、本発明は、処理システムによる生産性の向上をはかることを目的とする。
【課題を解決するための手段】
【０００８】
一つの案において、制御装置は、利用者端末と、前記利用者端末側の第１物理サーバと、前記利用者端末および前記第１物理サーバと相互に通信可能に接続された第２物理サーバと、を含む処理システムにおいて、前記第１物理サーバと前記第２物理サーバとのいずれか一方で稼動する仮想マシンを制御するもので、判定部および指示部を有する。判定部は、前記利用者端末に関する端末情報と前記第１物理サーバまたは前記第２物理サーバで稼動中の前記仮想マシンに関する仮想マシン情報とに応じて、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれで稼動するかの判定を行なう。指示部は、前記判定部による判定結果に従って、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれか一方に転送するように、前記第１物理サーバまたは前記第２物理サーバに対する指示を行なう。
【発明の効果】
【０００９】
一実施形態によれば、処理システムによる生産性が向上する。
【図面の簡単な説明】
【００１０】
【図１】本実施形態の制御装置（仮想マシン転送判定器）を含む処理システムの全体構成を示すブロック図である。
【図２】図１に示す処理システムの詳細構成を示すブロック図である。
【図３】図１および図２に示す処理システムの利用者端末における利用者スクリーンの表示例および利用者入力のための構成例を示す図である。
【図４】図１および図２に示す処理システムにおける第１実施形態としての制御装置（仮想マシン転送判定器）の機能構成を示すブロック図である。
【図５】図４に示す制御装置（仮想マシン転送判定器）の動作を説明するフローチャートである。
【図６】図４に示す制御装置（仮想マシン転送判定器）の動作を説明するフローチャートである。
【図７】図１および図２に示す処理システムにおける第２実施形態としての制御装置（仮想マシン転送判定器）の機能構成を示すブロック図である。
【図８】図７に示す制御装置（仮想マシン転送判定器）の動作を説明するフローチャートである。
【図９】本実施形態の制御装置（仮想マシン転送判定器）への入力データの具体例を示す図である。
【図１０】（Ａ）は図７に示す制御装置（仮想マシン転送判定器）で用いられる学習用データの具体例を示す図、（Ｂ）はある瞬間の計測データの例と当該計測データについて得られる判定出力の例とを示す図である。
【図１１】クラウドコンピューティングを適用された処理システムの構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して実施の形態を説明する。
〔１〕本実施形態の処理システム
まず、図１〜図３を参照しながら、本実施形態（第１および第２実施形態）の制御装置（以下、仮想マシン転送判定器という）１１０，１１０Ａを含む処理システム１の構成，機能および作用効果について説明する。なお、図１は、本実施形態の処理システム１の全体構成を示すブロック図であり、図２は、図１に示す処理システム１の詳細構成を示すブロック図である。また、図３は、図１および図２に示す処理システム１の端末コンピュータ１１における利用者スクリーン１１ａの表示例および利用者入力のための構成例を示す図である。
【００１２】
図１に示すように、仮想マシン転送判定器１１０，１１０Ａを含む処理システム１は、端末コンピュータ１１，ローカルサーバ１２，ネットワーク２０，リモートサーバ３１，ＬＡＮ３２および並列処理用サーバ群３３を含む。
端末コンピュータ（利用者端末）１１およびローカルサーバ（第１物理サーバ）１２は、例えば、利用者のオフィス１０内に設置される。つまり、端末コンピュータ１１とローカルサーバ１２とは、同じ建物内など、物理的に近距離に設置される。なお、端末コンピュータ１１とローカルサーバ１２とは、一つのハードウェアとして構成されてもよい。
【００１３】
リモートサーバ（第２物理サーバ）３１，ＬＡＮ３２および並列処理用サーバ群３３は、例えば、クラウドデータセンタ３０内に設置される。ネットワーク２０は、例えば公衆インターネット，ＶＰＮであり、ローカルサーバ１２とリモートサーバ３１との間を相互に通信可能に接続する。なお、クラウドデータセンタ３０は、利用者（オフィス１０）から遠く離れた場所（例えば海外）にあってもよい。
【００１４】
クラウドデータセンタ３０内において、リモートサーバ３１は、ＬＡＮ３２を介して並列処理用サーバ群３３に接続され、さらに後述する仮想マシンＶＭ２の稼働中には仮想マシンＶＭ２が編集作業用主サーバとして機能し、仮想マシンＶＭ２は、ＬＡＮ３２を介して、並列処理用サーバ群３３に接続される。リモートサーバ３１は、利用者が操作するアプリケーションソフトウェアを実行するコンピュータ、利用者にユーザインターフェイスを提供するコンピュータとして機能する。利用者は、端末コンピュータ１１から、ローカルサーバ１２，ネットワーク２０，リモートサーバ３１およびＬＡＮ３２を介して並列処理用サーバ群３３にアクセスする。ここで、リモートサーバ３１は、ネットワーク２０を通じて、利用者オフィス１０とクラウドデータセンタ３０との間を通信可能にするＶＰＮ接続装置（またはルータ装置またはゲートウェイ装置）としての役目と、仮想マシンＶＭ２の実行環境を提供する物理サーバとしての役目とを果たしている。なお、ＶＰＮ接続装置（ルータ装置）としての役目と、仮想マシンのための物理サーバとしての役目とは、１台のサーバで兼ねる必要はなく、２台のサーバに振り分けても構わない。また、ローカルサーバ１２についても、リモートサーバ３１と同様、２つの役目を兼ねている。並列処理用サーバ群３３は、複数の高性能サーバのグループであり、高負荷の処理を並列実行させるときに利用される。処理を並列実行させるための機能は、専用のミドルウェアやアプリケーションソフトウェアによって提供される。
【００１５】
端末コンピュータ（利用者端末）１１は、利用者によって操作されるもので、例えばパソコン，シンクライアントである。端末コンピュータ１１は、図１や図２に示すように、利用者スクリーン１１ａ，キーボード１１ｂ，マウス１１ｃ，情報収集部１１ｄおよび仮想マシン転送判定器１１０（１１０Ａ）を有している。また、端末コンピュータ１１は、図４や図７に示すごとく、処理部１１０ａおよび記憶部１１０ｂを有している。情報収集部１１ｄとしての機能は、処理部１１０ａによって実現されるほか、仮想マシン転送判定器１１０（１１０Ａ）としての機能は、処理部１１０ａおよび記憶部１１０ｂによって実現される。
【００１６】
仮想マシン転送判定器１１０（１１０Ａ）としての機能は、処理部１１０ａが仮想端末ソフトウェア（後述する制御プログラムを含む）を実行することにより実現される。仮想マシン転送判定器１１０（１１０Ａ）は、ローカルサーバ１２とリモートサーバ３１とのいずれか一方で稼働する仮想マシンを制御する。ここで、図１および図２に示すように、ローカルサーバ１２で稼働する仮想マシンには符号ＶＭ１が付され、リモートサーバ２１で稼働する仮想マシンには符号ＶＭ２が付される。図１および図２は、ローカルサーバ１２において仮想マシンＶＭ１が構築・稼働された状態を示し、仮想マシンＶＭ１は、実線で描かれている。仮想マシンＶＭ１が構築・稼働された状態では、リモートサーバ３１において仮想マシンＶＭ２は構築・稼動されていないので、図１および図２の仮想マシンＶＭ２は、仮想線（二点鎖線）で描かれている。
【００１７】
図２に示すように、ローカルサーバ１２における仮想マシンＶＭ１は、ローカルサーバ１２で起動されるハイパーバイザＨ１によって起動・構築される。同様に、リモートサーバ３１における仮想マシンＶＭ２は、リモートサーバ３１で起動されるハイパーバイザＨ２によって起動・構築される。仮想マシンＶＭ１またはＶＭ２においては、ＣＰＵ（Central Processing Unit），メモリ，ディスク，スクリーン，ネットワークＩ／Ｆ（Interface）としての機能が仮想的に実現される。また、仮想マシンＶＭ１またはＶＭ２は、ネットワークＩ／Ｆと、クラウドデータセンタ３０側のネットワーク仮想化機能３２Ａ（ＬＡＮ３２）とを介して並列処理用サーバ群３３にアクセス可能に構成されている。
【００１８】
仮想端末ソフトウェア（仮想マシン転送判定器１１０（１１０Ａ））は、リモートデスクトップ機能等に相当する技術を用いることで、ネットワーク２０およびハイパーバイザＨ１またはＨ２経由で仮想マシンＶＭ１またはＶＭ２を操作する。
また、仮想マシン転送判定器１１０（１１０Ａ）は、ネットワーク２０経由でハイパーバイザＨ１，Ｈ２に対し制御メッセージを送ることにより、ローカルサーバ１２で稼動中の仮想マシンＶＭ１をリモートサーバ３１に転送し仮想マシンＶＭ２として稼動させることが可能である。逆に、仮想マシン転送判定器１１０（１１０Ａ）は、ネットワーク２０経由でハイパーバイザＨ１，Ｈ２に対し制御メッセージを送ることにより、リモートサーバ３１で稼動中の仮想マシンＶＭ２をローカルサーバ１２に転送し仮想マシンＶＭ１として稼動させることが可能である。
【００１９】
処理システム１では、ハイパーバイザＨ１とハイパーバイザＨ２との間で仮想マシンが転送され、ローカルサーバ１２とリモートサーバ３１とのいずれか一方のみで仮想マシンが稼動可能に構成されている。このとき、仮想マシンを稼動するサーバの切替時の転送待ち時間を短縮するために、ネットワーク帯域の空きを利用して稼働中の仮想マシンのメモリとディスクの内容を停止中の仮想マシンへ転送する、同期処理を行なってもよい。特に、本実施形態では、ローカルサーバ１２で仮想マシンＶＭ１が稼働中はローカルサーバ１２とクラウド３０との間のトラフィックが減るため、ローカルサーバ１２からリモートサーバ３１へ仮想マシンを転送する同期処理を実行するのに都合がよい。
【００２０】
上述のように、サーバ仮想化技術を用いることで、ローカルサーバ１２とリモートサーバ３１とのそれぞれで、仮想マシンを稼働させることが可能である。また、仮想マシン転送機能を利用して、ある瞬間ではどちらか一方の物理サーバ１２または３１上でのみ、仮想サーバを動作させることができる。このとき、ネットワーク２０は、仮想マシンＶＭ１およびＶＭ２のうちのどちらが動作しているかを意識する必要はない。並列処理用サーバ群３３は、仮想マシンがどちらの物理サーバ上で動作しているかを、明示的に意識しない限り、区別することができない。同様に、利用者は、仮想マシンがどちらの物理サーバ上で動作しているかを、明示的に意識しない限り、区別することができない。つまり、利用者は、仮想マシンがどちらの物理サーバ上で動作しているか気にしなくてよい。
【００２１】
ところで、仮想マシンＶＭ１またはＶＭ２上では、ＣＡＤツール等のアプリケーションソフトウェアが実行される。ＣＡＤツールを実行する場合、対話的な操作による編集作業のような対話型処理と、シミュレーションのような大量の計算機リソースを必要とする高負荷処理とが実行される。対話型処理と高負荷処理とが同時に発生することはほとんど無く、対話型処理を行なうときに利用するソフトウェアは、サーバ１台だけで実行可能である。
【００２２】
そこで、処理システム１では、後述する情報収集部１２１，１２２，３１１，３１２により、稼動中の仮想マシンＶＭ１またはＶＭ２の稼働状況を含む仮想マシン情報が計測採取される。また、後述する情報収集部１１ｄにより、利用者の操作等に係る情報を含む端末情報が計測採取される。仮想マシン転送判定器１１０または１１０Ａ（図４，図７に示す判定部１１１，１１１Ａ）は、採取された情報に応じて、仮想マシンをローカルサーバ１２とリモートサーバ３１とのいずれで稼動させるかの判定を行なう。そして、仮想マシン転送判定器１１０または１１０Ａ（図４，図７に示す指示部１１２）は、上記判定の結果に従って、仮想マシンをローカルサーバ１２とリモートサーバ３１とのいずれか一方に転送するように、サーバ１２，３１におけるハイパーバイザＨ１，Ｈ２に対する指示を行なう。これにより、採取された情報に応じて、仮想マシンを２つのサーバ１２，３１のうちの一方から他方へ自動的に転送することが可能になる。
【００２３】
このとき、仮想マシン転送判定器１１０または１１０Ａ（図４，図７に示す判定部１１１，１１１Ａ）は、上記採取された情報に基づき、仮想マシンＶＭ１またはＶＭ２によって実行される処理が対話型処理と当該対話型処理よりも高い負荷のかかる高負荷処理とのいずれであるかを判定する。そして、当該処理が対話型処理である場合、仮想マシンを稼働するサーバは、ローカルサーバ１２であると判定される。一方、当該処理が高負荷処理である場合、仮想マシンを稼働するサーバは、リモートサーバ３１であると判定される。これにより、編集作業のような対話型処理がメインとなる期間は、仮想マシンは、仮想マシンＶＭ１としてローカルサーバ１２上で動作する。一方、仮想マシンがローカルサーバ１２で稼働中にシミュレーションのような大量の計算機リソースを必要とする高負荷処理が開始されると、仮想マシンは、リモートサーバ３１へ転送され、仮想マシンＶＭ２としてリモートサーバ３１上で動作する。
【００２４】
また、処理システム１では、図３を参照しながら後述するように、端末コンピュータ１１において利用者がキーボード１１ｂやマウス１１ｃを操作することにより、仮想マシンの転送指示または転送中止指示を入力することが可能になっている。仮想マシン転送判定器１１０または１１０Ａは、利用者による仮想マシンの転送指示または転送中止指示を受けた場合、前記判定の結果（判定部１１１，１１１Ａによる判定結果）よりも転送指示または転送中止指示を優先する。つまり、仮想マシン転送判定器１１０または１１０Ａは、転送指示または転送中止指示を受けると、前記判定の結果にかかわらず、転送指示または転送中止指示に応じたサーバ１２または３１で仮想マシンを稼働するように、サーバ１２，３１におけるハイパーバイザＨ１，Ｈ２に対する指示を行なう。
【００２５】
ここで、図３に示すように、端末コンピュータ１１における利用者スクリーン（ディスプレイ）１１ａには、少なくとも、描画領域１１ｅ，ステータス表示領域１１ｆおよび操作ボタン１１ｇが表示されている。
描画領域１１ｅには、仮想マシンＶＭ１またはＶＭ２のスクリーン内容（ＣＡＤツールの画面など）が描画される。
【００２６】
ステータス表示領域１１ｆには、仮想マシン転送判定器１１０または１１０Ａの動作に係るステータスが表示される。ステータス表示領域１１ｆは、例えば、ローカルサーバ１２側の仮想マシンＶＭ１とリモートサーバ３１側の仮想マシンＶＭ２とのどちらが稼動中かを表示する。ステータス表示領域１１ｆには、例えば、以下のようなステータス(s1)〜(s5)が表示される。なお、図３に示すステータス表示領域１１ｆには、下記ステータス(s1)に対応する「ローカル」が表示されている。
【００２７】
(s1)ローカルサーバ１２側の仮想マシンＶＭ１が稼働中であることを示す「ローカル」
(s2)リモートサーバ３１側の仮想マシンＶＭ２が稼働中であることを示す「リモート」
(s3)仮想マシンがローカルサーバ１２からリモートサーバ３１への転送中であることを示す「リモートへ転送中」
(s4)仮想マシンがリモートサーバ３１からローカルサーバ１２への転送中であることを示す「ローカルへ転送中」
(s5)仮想マシン転送判定器１１０または１１０Ａにおける上記判定結果に基づく仮想マシンの自動転送を禁止している状態であることを示す「自動転送禁止中」
【００２８】
操作ボタン１１ｇは、利用者が仮想マシンの転送指示または転送中止指示を入力する際に、例えばマウス１１ｃ等のポインティングデバイスを用いてクリック操作される。ここで、利用者の指示は、マウス１１ｃ等のポインティングデバイスを用いて行なっているが、マウス１１ｃに代え、キーボード１１ｂを用いて行なってもよい。
【００２９】
図３に示す操作ボタン１１ｇの表示領域内には「転送」が表示されている。「転送」を表示する操作ボタン１１ｇがクリックされると、仮想マシン転送判定器１１０または１１０Ａに対し仮想マシンの転送指示が行なわれる。転送指示を受けた仮想マシン転送判定器１１０または１１０Ａは、仮想マシンを現在稼動中のサーバ１２（またはサーバ３１）から他方のサーバ３１（またはサーバ１２）へ転送するように、サーバ１２，３１におけるハイパーバイザＨ１，Ｈ２に対する指示を行なう。
【００３０】
当該指示に伴い仮想マシンの転送が開始されると、操作ボタン１１ｇの表示領域内には「転送中止」が表示される。「転送中止」を表示する操作ボタン１１ｇがクリックされると、仮想マシン転送判定器１１０または１１０Ａに対し仮想マシンの転送中止指示が行なわれる。転送中止指示を受けた仮想マシン転送判定器１１０または１１０Ａは、現在実行中の仮想マシンの転送を中止し、仮想マシンを転送開始前の状態に戻すように、サーバ１２，３１におけるハイパーバイザＨ１，Ｈ２に対する指示を行なう。
【００３１】
なお、上述のような操作ボタン１１ｇ以外に、上述したステータス(s5)つまり「自動転送禁止中」を設定する際にクリック操作されるボタン（図示略）が、利用者スクリーン１１ａに表示されてもよい。当該ボタンをクリックすることにより、「自動転送禁止中」が設定され、仮想マシン転送判定器１１０または１１０Ａにおける上記判定結果に基づく仮想マシンの自動転送が禁止される。「自動転送禁止中」の状態では、利用者が操作ボタン１１ｇを用いて転送指示を行なわない限り、仮想マシンのサーバ間転送は行なわれない。
【００３２】
さて、仮想マシン転送判定器１１０または１１０Ａには、入力として、稼動中の仮想マシンＶＭ１またはＶＭ２の稼働状況を含む仮想マシン情報の計測データＡと、利用者の操作等に係る情報を含む端末情報の計測データＢと、上記の転送指示または転送中止指示を含む利用者入力とが与えられる（図４，図７参照）。また、仮想マシン転送判定器１１０または１１０Ａは、上記入力に基づき、出力として、仮想マシンを転送すべきか否かの制御メッセージを生成しハイパーバイザＨ１，Ｈ２へ送る（図４，図７参照）。
【００３３】
ここで、計測データＡは、情報収集部（第２収集部）１２１，１２２，３１１，３１２によって採取される、稼動中の仮想マシンＶＭ１またはＶＭ２に関する仮想マシン情報（稼動状況データ）である。情報収集部１２１，１２２，３１１，３１２としての機能は、それぞれ、仮想マシンＶ１，ハイパーバイザＨ１，仮想マシンＶ２，ハイパーバイザＨ２においてソフトウェアにより実現される。稼動状況データは、ＯＳ（Operating System）およびハイパーバイザＨ１，Ｈ２から採取することができる。採取されたデータは、ネットワーク２０経由で、仮想マシン転送判定器１１０または１１０Ａに送信される。
【００３４】
計測データＡは、ある一定期間（例えば５秒間）に観測された、稼働中の仮想マシンＶＭ１またはＶＭ２に関する情報であり、例えば、以下のようなデータ(d1)〜(d5)を含む。
(d1)スクリーン描画量。具体的には、仮想マシンＶＭ１またはＶＭ２のスクリーン（ビデオメモリ，フレームバッファ等）へ書き込んだデータの量や、描画した面積（ピクセル数）など
(d2)ＣＰＵ使用率（演算処理部使用率）
(d3)メモリ使用量
(d4)ディスクＩ／Ｏ（Input/Output）量。例えばアクセス回数
【００３５】
(d5)プロセス情報。プロセス情報とは、コンピュータ上で稼動しているプログラムに関する情報であり、プロセス情報としては、様々な情報を用いることができる。プロセス情報は、例えば、計測データを採取した瞬間に、最もＣＰＵ使用率の高いプロセスの名前などである。プロセスの名前に、通し番号を割り当てて数値化すれば、後述するサポートベクタマシン（機械学習）でプロセス情報を取り扱うことが可能になる。このとき、単に通し番号が割り当てられるのではなく、何らかの規則（例えば処理の重い順）に従って通し番号が割り当てられる。
【００３６】
計測データＢは、情報収集部（第１収集部）１１ｄによって採取される、利用者が行なった操作等に係る情報を含む端末情報である。情報収集部１１ｄとしての機能は、端末コンピュータ１１においてソフトウェアにより実現される。端末情報は、利用者が直接操作しているサーバ（またはパソコン）上で稼働しているＯＳ、および、上述した仮想端末ソフトウェアから採取することができる。採取された端末情報は、ネットワーク経由で、もしくはプロセス間通信のような仕組みによって、仮想マシン転送判定器１１０または１１０Ａに送信される。
【００３７】
計測データＢは、ある一定期間（例えば５秒間）に観測された、利用者側に関する端末情報であり、例えば、以下のようなデータ(d11)〜(d13)を含む。
(d11)マウス（ポインティングデバイス）１１ｃでドラッグした量
(d12)キーボード１１ｂのタイプ回数
【００３８】
(d13)利用者スクリーン描画量。具体的には、利用者が参照している仮想マシン画面（スクリーン１１ａ）に描画したデータの量。仮想マシンＶＭ１またはＶＭ２で生成された描画データは、ネットワーク２０経由で端末コンピュータ１１に転送され、利用者スクリーン１１ａで表示される。このとき、仮想マシンＶＭ１またはＶＭ２側で生成された多量の描画データは、ネットワーク２０経由で全て転送することができない場合がある。この場合、描画データは、間引きされてネットワーク２０，ＬＡＮ３２などを経由して端末コンピュータ１１に転送される。このため、利用者スクリーン描画量(d13)は、仮想マシンＶＭ１またはＶＭ２のスクリーン描画量(d1)よりも少なくなるのが一般的である。
【００３９】
利用者入力は、利用者がマウス１１ｃもしくはキーボード１１ｂを操作することによって入力される、利用者からの指示であり、上述した、仮想マシンの転送指示および転送中止指示である。また、利用者入力は、上述したステータス(s5)の「自動転送禁止中」の状態を設定するための自動転送禁止指示も含む。自動転送禁止指示は、上述したように、例えば利用者が所定のボタン（図示略）をクリックすることにより入力される。このように利用者入力は、利用者から与えられる指示情報であり、仮想端末ソフトウェアに用意されたＧＵＩ（Graphical User Interface）機能を用いて採取されるデータである。
【００４０】
なお、図９に、本実施形態の仮想マシン転送判定器１１０，１１０Ａへの入力データの具体例を示す。図９に示す例では、仮想マシン転送判定器１１０，１１０Ａによる判定動作は行なっていない。図９の各時刻での状況は、以下の通りである。
【００４１】
時刻0:00:00〜  利用者は、端末コンピュータ１１においてＣＡＤソフトウェアで編集作業を行なっている（スクリーン描画量が多いが、ＣＰＵおよびメモリはあまり使用されていない）。
時刻0:00:10〜  シミュレーションなど重い処理が開始される（画面描画量は少なくなるが、ＣＰＵおよびメモリの消費量が増加）。
時刻0:00:15  利用者は仮想マシンをリモートサーバ３１へ転送する指示を行ない、高性能なサーバ上で高負荷処理が継続される。
時刻1:30:00  高負荷処理が完了する。
時刻1:30:05〜  利用者が端末コンピュータ１１上で再び編集作業を開始する（スクリーン描画量が増える）。
時刻1:30:10  利用者は仮想マシンをローカルサーバ１２へ転送する指示を行ない、ＧＵＩを多用する対話的処理やスクリーン描画がスムーズに行えるようにする。
【００４２】
制御メッセージは、上述したように、仮想マシン転送判定器１１０または１１０Ａ（図４，図７に示す指示部１１２）において、計測データＡ，計測データＢおよび利用者入力に基づき生成され、サーバ１２，３１におけるハイパーバイザＨ１，Ｈ２へ送信される。制御メッセージは、例えば、以下のような内容(m1)〜(m3)を含む。
(m1)仮想マシンを現在のサーバから他方のサーバへ転送せよ
(m2)現在実行中の仮想マシンの転送を中止せよ
(m3)現状のまま、何もしない
【００４３】
以下では、図４〜図６を参照しながら、第１実施形態の仮想マシン転送判定器１１０の構成および具体的な動作について説明する。第１実施形態の仮想マシン転送判定器１１０では、計測データＡにおけるスクリーン描画量(d1)およびＣＰＵ使用率(d2)と、計測データＢにおける利用者スクリーン描画量(d13)と、利用者入力における転送指示および転送中止指示とが、入力として用いられる。
【００４４】
また、以下では、図７〜図１０を参照しながら、第２実施形態の仮想マシン転送判定器１１０Ａの構成および具体的な動作について説明する。第２実施形態の仮想マシン転送判定器１１０Ａでは、計測データＡにおけるデータ(d1)〜(d5)と、計測データＢにおけるデータ(d11)〜(d13)と、利用者入力における転送指示とが、入力として用いられる。
【００４５】
〔２〕第１実施形態の仮想マシン転送判定器（制御装置）
〔２−１〕第１実施形態の構成
以下、図４を参照しながら、図１および図２に示す処理システム１における第１実施形態としての仮想マシン転送判定器１１０の機能構成について説明する。図４は、仮想マシン転送判定器１１０の機能構成を示すブロック図である。
【００４６】
端末コンピュータ１１は、ハードウェアとして、処理部１１０ａおよび記憶部１１０ｂを有している。処理部１１０ａは、例えばＣＰＵ，コンピュータ，プロセッサであり、記憶部１１０ｂは、例えばＲＡＭ（Random Access Memory）である。記憶部１１０ｂには、後述する第１閾値Ｘ，第２閾値Ｙ，第３閾値Ｔｃや変数Ｐ，Ｓが内部変数として保持されるほか、後述する制御プログラムを含む仮想端末ソフトウェアが保持される。
【００４７】
仮想マシン転送判定器１１０は、処理部１１０ａが仮想端末ソフトウェア（制御プログラム）を実行することにより、判定部１１１，指示部１１２，第１調整部１１３および第２調整部１１４としての機能を果たす。
【００４８】
判定部１１１は、計測データＡにおけるスクリーン描画量(d1)およびＣＰＵ使用率(d2)と、計測データＢにおける利用者スクリーン描画量(d13)とに応じて、仮想マシンをローカルサーバ１２とリモートサーバ３１とのいずれで稼動させるかの判定を行なう。このとき、判定部１１１は、仮想マシンＶＭ１またはＶＭ２によって実行される処理が、対話型処理と、シミュレーションのような大量の計算機リソースを必要とする高負荷処理とのいずれであるかを判定する。そして、判定部１１１は、当該処理が対話型処理である場合、仮想マシンを稼働するサーバをローカルサーバ１２と判定する一方、当該処理が高負荷処理である場合、仮想マシンを稼働するサーバをリモートサーバ３１と判定する。
【００４９】
指示部１１２は、判定部１１１による判定結果に従って、仮想マシンをローカルサーバ１２とリモートサーバ３１とのいずれか一方に転送するように、サーバ１２，３１におけるハイパーバイザＨ１，Ｈ２に対する指示（制御メッセージの出力）を行なう。
【００５０】
このとき、指示部１１２は、仮想マシンがローカルサーバ１２で稼働されている状態で、仮想マシンを稼働するサーバをローカルサーバ１２とする判定結果を受けた場合、上記制御メッセージ(m3)つまり「現状のまま、何もしない」を出力する。同様に、指示部１１２は、仮想マシンがリモートサーバ３１で稼働されている状態で、仮想マシンを稼働するサーバをリモートサーバ３１とする判定結果を受けた場合、上記制御メッセージ(m3)つまり「現状のまま、何もしない」を出力する。
【００５１】
また、指示部１１２は、仮想マシンがローカルサーバ１２で稼働されている状態で、仮想マシンを稼働するサーバをリモートサーバ３１とする判定結果を受けた場合、上記制御メッセージ(m1)つまり「仮想マシンを現在のサーバから他方のサーバへ転送せよ」を出力する。同様に、指示部１１２は、仮想マシンがリモートサーバ３１で稼働されている状態で、仮想マシンを稼働するサーバをローカルサーバ１２とする判定結果を受けた場合、上記制御メッセージ(m1)つまり「仮想マシンを現在のサーバから他方のサーバへ転送せよ」を出力する。
【００５２】
さらに、指示部１１２は、利用者による仮想マシンの転送指示または転送中止指示を受けた場合、判定部１１１による判定結果よりも転送指示または転送中止指示を優先する。つまり、指示部１１２は、転送指示または転送中止指示を受けると、判定部１１１による判定結果にかかわらず、転送指示または転送中止指示に応じたサーバ１２または３１で仮想マシンを稼働するように、サーバ１２，３１におけるハイパーバイザＨ１，Ｈ２に対する指示を行なう。
【００５３】
ここで、判定部１１１は、仮想マシンＶＭ１またはＶＭ２でのスクリーン描画量(d1)およびＣＰＵ使用率(d2)と、端末コンピュータ１１での利用者スクリーン描画量(d13)とに基づき、以下に説明するごとく判定を行なう。
【００５４】
判定部１１１は、仮想マシンＶＭ１またはＶＭ２でのスクリーン描画量(d1)と端末コンピュータ１１での利用者スクリーン描画量(d13)との差分である描画漏れ量ＤＤを算出する。そして、判定部１１１は、描画漏れ量ＤＤが第１閾値Ｘを超えた場合、仮想マシンを稼働するサーバをローカルサーバ１２と判定する。また、判定部１１１は、描画漏れ量ＤＤが第２閾値Ｙ以下であり、且つ、仮想マシンＶＭ１またはＶＭ２でのＣＰＵ使用率Ｃ（上記項目(d2)に対応）が第３閾値Ｔｃを超える場合、仮想マシンを稼働するサーバをリモートサーバ３１と判定する。
【００５５】
上述の通り、判定部１１１では、仮想マシンＶＭ１またはＶＭ２でのスクリーン描画量(d1)と端末コンピュータ１１での利用者スクリーン描画量(d13)との差分が算出される。この差分である描画漏れ量ＤＤは、仮想マシン上で生成されたが上述の理由により間引きされ端末コンピュータ１１上で描画されなかった描画データの量に相当する。つまり、描画漏れ量ＤＤが大きいときは、画面表示がカクカクして見苦しくなっている状況であり、そのようなとき、利用者は、操作性の悪さ、反応の悪さ、イライラ感、ストレスを感じている。
【００５６】
そこで、描画漏れ量ＤＤが第１閾値Ｘを超えたとき、仮想マシンは対話型処理を実行していると判断され、仮想マシンは、リモートサーバ３１からローカルサーバ１２に転送される。これにより、対話型処理がローカルサーバ１２における仮想マシンＶＭ１で実行されるため、描画データをネットワーク２０経由で転送する必要がなくなる。つまり、仮想マシンＶＭ１から利用者端末１１までのネットワーク距離が短く、通信の遅延が非常に小さいため、描画データの間引きを行なう必要がなく、編集作業のような対話型処理や利用者スクリーン描画をスムーズに行なうことができる。
【００５７】
一方、仮想マシンＶＭ１でのＣＰＵ使用率Ｃが高くなって第３閾値Ｔｃを超え、且つ、描画漏れ量ＤＤが第２閾値Ｙ以下になったとき、仮想マシンは、シミュレーションのような大量の計算機リソースを必要とする高負荷処理をしていると判断され、仮想マシンは、ローカルサーバ１２からリモートサーバ３１へ転送される。これにより、高負荷処理が、並列処理用サーバ群３３を有するクラウドデータセンタ３０側のリモートサーバ３１における仮想マシンＶＭ２で実行され、負荷の高い処理を実行するときだけ、クラウド３０内のハイエンド・サーバが利用される。
【００５８】
また、判定部１１１が判定に際して用いる閾値Ｘ，Ｙは、以下に説明するごとく、調整部１１３，１１４により、転送指示および転送中止指示の入力タイミングに応じて調整される。
【００５９】
第１調整部１１３は、利用者入力である転送指示または転送中止指示に従って、第１閾値Ｘを調整する。第１調整部１１３は、描画漏れ量ＤＤが第１閾値Ｘを超える前に、仮想マシンをリモートサーバ３１からローカルサーバ１２へ転送する転送指示を受信した場合、第１閾値Ｘよりも小さい値を次の第１閾値Ｘとする。例えば、第１閾値Ｘに値0.95を乗算した値が、次の第１閾値Ｘとされる（図５参照）。一方、第１調整部１１３は、描画漏れ量ＤＤが第１閾値Ｘを超えたことに伴い指示部１１２が仮想マシンをリモートサーバ３１からローカルサーバ１２へ転送する指示を行なった後に転送中止指示を受信した場合、第１閾値Ｘよりも大きい値を次の第１閾値Ｘとする。例えば、第１閾値Ｘに値1.05を乗算した値が、次の第１閾値Ｘとされる（図５参照）。
【００６０】
第２調整部１１４は、利用者入力である転送指示または転送中止指示に従って、第２閾値Ｙを調整する。第２調整部１１４は、描画漏れ量ＤＤが第２閾値Ｙ以下になり且つＣＰＵ使用率Ｃが第３閾値Ｔｃを超える前に、仮想マシンをローカルサーバ１２からリモートサーバ３１へ転送する転送指示を受信した場合、第２閾値Ｙよりも大きい値を次の第２閾値Ｙとする。例えば、第２閾値Ｙに値1.05を乗算した値が、次の第２閾値Ｙとされる（図６参照）。一方、第２調整部１１４は、描画漏れ量ＤＤが第２閾値Ｙ以下になり且つＣＰＵ使用率Ｃが第３閾値Ｔｃを超えたことに伴い指示部１１２が仮想マシンをローカルサーバ１２からリモートサーバ３１へ転送する指示を行なった後に転送中止指示を受信した場合、第２閾値Ｙよりも小さい値を次の第２閾値Ｙとする。例えば、第２閾値Ｙに値0.95を乗算した値が、次の第２閾値Ｙとされる（図６参照）。
【００６１】
このような第１調整部１１３および第２調整部１１４により、閾値Ｘ，Ｙは、利用者からの指示に応じて変化する。つまり、描画漏れ量ＤＤが第１閾値Ｘをまだ超えていないときに、利用者がローカルサーバ１２への転送指示を行なったときは、第１閾値Ｘを少し小さくするよう第１閾値Ｘの調整が行なわれる。逆に、描画漏れ量ＤＤが第１閾値Ｘを超えたことに伴いローカルサーバ１２への転送を開始したあとに、利用者が転送のキャンセル（転送中止）の指示を行なったときは、第１閾値Ｘを少し大きくするよう第１閾値Ｘの調整が行なわれる。
【００６２】
第２閾値Ｙについても同様に、描画漏れ量ＤＤが第２閾値Ｙ以下になり且つＣＰＵ使用率Ｃが第３閾値Ｔｃを超える前に、利用者がリモートサーバ３１への転送指示を行なったときは、第２閾値Ｙを少し大きくするよう第２閾値Ｙの調整が行なわれる。逆に、描画漏れ量ＤＤが第２閾値Ｙ以下になり且つＣＰＵ使用率Ｃが第３閾値Ｔｃを超えたことに伴いリモートサーバ３１への転送を開始したあとに、利用者が転送のキャンセル（転送中止）の指示を行なったときは、第２閾値Ｙを少し小さくするよう第２閾値Ｙの調整が行なわれる。
【００６３】
上述したように、利用者からの転送指示や転送中止指示は、判定部１１１による第１〜第３閾値Ｘ，Ｙ，Ｔｃに基づく自動判定結果よりも、優先される。第１調整部１１３および第２調整部１１４により、閾値Ｘ，Ｙが適切な値に調整されると、利用者が転送指示や転送中止指示を行なわなくても、利用者の望むタイミングで、仮想マシンの転送が行なわれるようになる。
【００６４】
なお、指示部１１２による指示に伴い仮想マシンの転送が実行された場合、判定部１１１は、仮想マシンの転送後の所定期間の間に亘って、判定の実行を抑止する機能を有している。状況によっては、仮想マシンが、ローカルサーバ１２に転送された後、直ぐにリモートサーバ３１に転送され、また直ぐにローカルサーバ１２に転送されることを繰り返す振動（発振）が発生し、利用者に煩わしい思いをさせる可能性がある。そこで、仮想マシンの転送が実行された後、所定期間（例えば３分間）、判定部１１１は転送が必要だと判定しないようにする。つまり、仮想マシン転送判定器１１０は、所定期間、現状を維持する。このとき、判定部１１１による判定の実行を抑止する代わりに、指示部１１２による制御メッセージの出力を抑止してもよい。これにより、上述のような振動（発振）が抑止され、利用者の煩わしさは解消される。閾値Ｘ，Ｙが適切な値に調整されると、つまり閾値調整による学習が進めば、振動（発振）の発生を抑えられる可能性もある。
【００６５】
〔２−２〕第１実施形態の動作
次に、図５および図６に示すフローチャート（ステップＳ１１〜Ｓ１８，Ｓ２１〜Ｓ２８）に従って、図４に示す仮想マシン転送判定器１１０の動作について説明する。
図中および以下の説明において、Ｐは、現在、仮想マシンが配置されているサーバを示す変数である。仮想マシンがローカルサーバ１２に配置されローカルサーバ１２上で稼働中の場合、Ｐ＝“local”となり、仮想マシンがリモートサーバ３１に配置されリモートサーバ１３１上で稼働中の場合、Ｐ＝“remote”となる。また、Ｓは、利用者が入力した転送指示によって指定された転送先サーバを示す変数である。指定された転送先サーバがローカルサーバ１２である場合、Ｓ＝“local”となり、指定された転送先サーバがリモートサーバ３１である場合、Ｓ＝“remote”となる。これらの変数Ｐ，Ｓは、記憶部１１０ｂに保持される。
【００６６】
仮想マシン転送判定器１１０は、周期的（例えば５秒毎）に計測データＡ，Ｂを受信する都度（ステップＳ１１，Ｓ２１）、図５および図６に示すフローチャートに従う処理を実行する。仮想マシン転送判定器１１０は、図５および図６に示す処理を並列的に実行してもよいし、図５に示す処理を実行してから図６に示す処理を実行しても、図６に示す処理を実行してから図５に示す処理を実行してもよい。
【００６７】
図５に示す処理において、仮想マシン転送判定器１１０は、計測データＡ，Ｂを受信すると（ステップＳ１１）、変数Ｐが“remote”であるか否か、つまり、現在、仮想マシンが配置されているサーバがリモートサーバ３１であるか否かを判断する（ステップＳ１２）。変数Ｐが“local”である場合（ステップＳ１２のＮＯルート）、つまり、現在、仮想マシンが配置されているサーバがローカルサーバ１２である場合、仮想マシン転送判定器１１０は、図５に示すフローチャートに従う処理を終了する。
【００６８】
変数Ｐが“remote”である場合（ステップＳ１２のＹＥＳルート）、つまり、現在、仮想マシンが配置されているサーバがリモートサーバ３１である場合、判定部１１１は、仮想マシンＶＭ２でのスクリーン描画量(d1)と端末コンピュータ１１での利用者スクリーン描画量(d13)との差分である描画漏れ量ＤＤを算出する。そして、判定部１１１は、描画漏れ量ＤＤが第１閾値Ｘを超えているか否かを判定する（ステップＳ１３）。
【００６９】
描画漏れ量ＤＤが第１閾値Ｘを超えている場合（ステップＳ１３のＹＥＳルート）、判定部１１１は、仮想マシンを稼働するサーバをローカルサーバ１２と判定する。このとき、指示部１１２は、仮想マシンがリモートサーバ３１で稼働されている状態で、仮想マシンを稼働するサーバをローカルサーバ１２とする判定結果を受け、制御メッセージ(m1)つまり「仮想マシンを現在のサーバから他方のサーバへ転送せよ」をハイパーバイザＨ１，Ｈ２に対し出力する。これに伴い、仮想マシンは、ローカルサーバ１２からリモートサーバ３１へ移動・転送され、記憶部１１０ｂの変数Ｐが“local”に書き換えられる（ステップＳ１４）。
【００７０】
このように、指示部１１２が仮想マシンをリモートサーバ３１からローカルサーバ１２へ転送する指示を行なった後、仮想マシン転送判定器１１０は、利用者から、今回のローカルサーバ１２への転送をキャンセルする転送中止指示を受信したか否かを判断する（ステップＳ１５）。
【００７１】
転送中止指示を受信した場合（ステップＳ１５のＹＥＳルート）、指示部１１２は、仮想マシンをリモートサーバ３１に配置するようハイパーバイザＨ１，Ｈ２に対し指示する。これに伴い、仮想マシンは、元通りリモートサーバ３１に配置され、記憶部１１０ｂの変数Ｐが“remote”に書き換えられる。さらに、第１調整部１１３は、現在の第１閾値Ｘに値1.05を乗算した値を、次の第１閾値Ｘとし、記憶部１１０ｂの第１閾値Ｘを書き換える（ステップＳ１６）。なお、ステップＳ１４で転送指示を行なった後、所定期間だけ経過しても、転送中止指示を受信しない場合、仮想マシン転送判定器１１０は、利用者からのキャンセルは無かったものと判断し（ステップＳ１５のＮＯルート）、図５に示すフローチャートに従う処理を終了する。
【００７２】
描画漏れ量ＤＤが第１閾値Ｘを超えていない場合（ステップＳ１３のＮＯルート）、仮想マシン転送判定器１１０は、変数Ｓが“local”であるか否かを判断する（ステップＳ１７）。つまり、仮想マシン転送判定器１１０は、描画漏れ量ＤＤが第１閾値Ｘを超える前に、仮想マシンをリモートサーバ３１からローカルサーバ１２へ転送する転送指示を受信したか否かを判断する。変数Ｓが“local”でない場合（ステップＳ１７のＮＯルート）、つまり、ローカルサーバ１２への転送指示を受けていない場合、仮想マシン転送判定器１１０は、図５に示すフローチャートに従う処理を終了する。
【００７３】
変数Ｓが“local”である場合（ステップＳ１７のＹＥＳルート）、つまり、描画漏れ量ＤＤが第１閾値Ｘを超える前に、仮想マシンをリモートサーバ３１からローカルサーバ１２へ転送する転送指示を受信した場合、第１調整部１１３は、現在の第１閾値Ｘに値0.95を乗算した値を、次の第１閾値Ｘとし、記憶部１１０ｂの第１閾値Ｘを書き換える（ステップＳ１８）。この後、仮想マシン転送判定器１１０は、ステップＳ１４の処理へ移行する。
【００７４】
一方、図６に示す処理において、仮想マシン転送判定器１１０は、計測データＡ，Ｂを受信すると（ステップＳ２１）、変数Ｐが“local”であるか否か、つまり、現在、仮想マシンが配置されているサーバがローカルサーバ１２であるか否かを判断する（ステップＳ２２）。変数Ｐが“remote”である場合（ステップＳ２２のＮＯルート）、つまり、現在、仮想マシンが配置されているサーバがリモートサーバ３１である場合、仮想マシン転送判定器１１０は、図６に示すフローチャートに従う処理を終了する。
【００７５】
変数Ｐが“local”である場合（ステップＳ２２のＹＥＳルート）、つまり、現在、仮想マシンが配置されているサーバがローカルサーバ１２である場合、判定部１１１は、仮想マシンＶＭ１でのスクリーン描画量(d1)と端末コンピュータ１１での利用者スクリーン描画量(d13)との差分である描画漏れ量ＤＤを算出する。そして、判定部１１１は、描画漏れ量ＤＤが第２閾値Ｙ以下であり、且つ、仮想マシンＶＭ１でのＣＰＵ使用率Ｃが第３閾値Ｔｃを超えているか否かを判定する（ステップＳ２３）。
【００７６】
描画漏れ量ＤＤが第２閾値Ｙ以下であり、且つ、仮想マシンＶＭ１でのＣＰＵ使用率Ｃが第３閾値Ｔｃを超える場合（ステップＳ２３のＹＥＳルート）、判定部１１１は、仮想マシンを稼働するサーバをリモートサーバ３１と判定する。このとき、指示部１１２は、仮想マシンがローカルサーバ１２で稼働されている状態で、仮想マシンを稼働するサーバをリモートサーバ３１とする判定結果を受け、制御メッセージ(m1)つまり「仮想マシンを現在のサーバから他方のサーバへ転送せよ」をハイパーバイザＨ１，Ｈ２に対し出力する。これに伴い、仮想マシンは、リモートサーバ３１からローカルサーバ１２へ移動・転送され、記憶部１１０ｂの変数Ｐが“remote”に書き換えられる（ステップＳ２４）。
【００７７】
このように、指示部１１２が仮想マシンをローカルサーバ１２からリモートサーバ３１へ転送する指示を行なった後、仮想マシン転送判定器１１０は、利用者から、今回のリモートサーバ３１への転送をキャンセルする転送中止指示を受信したか否かを判断する（ステップＳ２５）。
【００７８】
転送中止指示を受信した場合（ステップＳ２５のＹＥＳルート）、指示部１１２は、仮想マシンをローカルサーバ１２に配置するようハイパーバイザＨ１，Ｈ２に対し指示する。これに伴い、仮想マシンは、元通りローカルサーバ１２に配置され、記憶部１１０ｂの変数Ｐが“local”に書き換えられる。さらに、第２調整部１１３は、現在の第２閾値Ｙに値0.95を乗算した値を、次の第２閾値Ｙとし、記憶部１１０ｂの第２閾値Ｙを書き換える（ステップＳ２６）。なお、ステップＳ２４で転送指示を行なった後、所定期間だけ経過しても、転送中止指示を受信しない場合、仮想マシン転送判定器１１０は、利用者からのキャンセルは無かったものと判断し（ステップＳ２５のＮＯルート）、図６に示すフローチャートに従う処理を終了する。
【００７９】
描画漏れ量ＤＤが第２閾値Ｙ以下で且つ仮想マシンＶＭ１でのＣＰＵ使用率Ｃが第３閾値Ｔｃを超えた状態になっていない場合（ステップＳ２３のＮＯルート）、仮想マシン転送判定器１１０は、変数Ｓが“remote”であるか否かを判断する（ステップＳ２７）。つまり、仮想マシン転送判定器１１０は、描画漏れ量ＤＤが第２閾値Ｙ以下で且つ仮想マシンＶＭ１でのＣＰＵ使用率Ｃが第３閾値Ｔｃを超える前に、仮想マシンをローカルサーバ１２からリモートサーバ３１へ転送する転送指示を受信したか否かを判断する。変数Ｓが“remote”でない場合（ステップＳ２７のＮＯルート）、つまり、リモートサーバ３１への転送指示を受けていない場合、仮想マシン転送判定器１１０は、図６に示すフローチャートに従う処理を終了する。
【００８０】
変数Ｓが“remote”である場合（ステップＳ２７のＹＥＳルート）、つまり、描画漏れ量ＤＤが第２閾値Ｙ以下で且つ仮想マシンＶＭ１でのＣＰＵ使用率Ｃが第３閾値Ｔｃを超える前に、仮想マシンをローカルサーバ１２からリモートサーバ３１へ転送する転送指示を受信した場合、第２調整部１１３は、現在の第２閾値Ｙに値1.05を乗算した値を、次の第２閾値Ｙとし、記憶部１１０ｂの第２閾値Ｙを書き換える（ステップＳ２８）。この後、仮想マシン転送判定器１１０は、ステップＳ２４の処理へ移行する。
【００８１】
〔２−３〕第１実施形態の効果
上述した第１実施形態の仮想マシン転送判定器１１０を含む処理システム１によれば、描画漏れ量ＤＤが第１閾値Ｘを超えたとき、仮想マシンは対話型処理を実行していると判断され、仮想マシンは、リモートサーバ３１からローカルサーバ１２に転送される。これにより、対話型処理がローカルサーバ１２における仮想マシンＶＭ１で実行されるため、描画データをネットワーク２０経由で転送する必要がなくなる。つまり、仮想マシンＶＭ１から利用者端末１１までのネットワーク距離が短く、通信の遅延が非常に小さいため、描画データの間引きを行なう必要がなく、編集作業のような対話型処理や利用者スクリーン描画をスムーズに行なうことができる。したがって、処理システム１による生産性が大幅に向上する。また、対話型処理は、比較的、負荷の低い処理のため、ローカルサーバ１２には、それほど高い性能は要求されず、安価なハードウェアを利用することができる。
【００８２】
一方、仮想マシンＶＭ１でのＣＰＵ使用率Ｃが高くなって第３閾値Ｔｃを超え、且つ、描画漏れ量ＤＤが第２閾値Ｙ以下になったとき、仮想マシンは、シミュレーションのような大量の計算機リソースを必要とする高負荷処理していると判断され、仮想マシンは、ローカルサーバ１２からリモートサーバ３１へ転送される。これにより、高負荷処理が、並列処理用サーバ群３３を有するクラウドデータセンタ３０側のリモートサーバ３１における仮想マシンＶＭ２で実行され、負荷の高い処理を実行するときだけ、クラウド３０内のハイエンド・サーバが利用される。したがって、クラウドデータセンタ３０を用いた処理時間を短縮することができ、クラウドデータセンタ３０を用いることによるコストを削減しながら、処理システム１による生産性を大幅に向上することができる。
【００８３】
これによって、対話型処理の応答性をよくすることと、高負荷処理の高速化との両方が実現される。また、利用者の操作状況に応じて仮想マシンが自動転送されるので、利用者にとって、作業工程に応じてローカルサーバ１２とリモートサーバ３１とを使い分けるための新たな操作を学習するといった煩わしさが無くなる。
さらに、第１調整部１１３および第２調整部１１４により閾値Ｘ，Ｙが適切な値に調整されるので、利用者が転送指示や転送中止指示を行なわなくても、利用者の望むタイミングで、仮想マシンを稼動するサーバ（ローカルサーバ１２またはリモートサーバ３１）の切換が行なわれる。
【００８４】
指示部１１２による指示に伴い仮想マシンの転送が実行された場合、仮想マシンの転送後の所定期間の間に亘って、判定の実行が抑止される。これにより、仮想マシン転送がサーバ１２，３１の間で繰り返されるような振動（発振）が抑止され、利用者の煩わしさが解消される。また、閾値Ｘ，Ｙが適切な値に調整されると、振動（発振）の発生を確実に抑えられる。
【００８５】
商用ＣＡＤソフトウェアは、ライセンス費用が高額な場合があるが、本実施形態の処理システム１において仮想マシンは１台だけであるので、ライセンス本数を増やす必要は無い（それが実際に可能かどうかは、ＣＡＤソフトウェア毎に定められるライセンス契約による）。
なお、本実施形態では、上述したように、サーバ仮想化技術を利用して、仮想マシンを稼動するサーバが、ローカルサーバ１２とリモートサーバ３１との間で切り換えられている。このようにサーバを切り換える手法に代え、既存のＣＡＤソフトウェアを改造することで当該ＣＡＤソフトウェアによる処理を対話型処理部分と高負荷処理部分とに分け、対話型処理部分（フロントエンド）を利用者側の端末コンピュータ１１上で実行し、高負荷処理部分（バックエンド）をクラウド３０内で実行する、という手法を採ることも考えられる。しかし、ソフトウェアの改造は容易ではなく、上述した手法を常に実現できるとは限らない。例えばソフトウェアが開発を終了した旧バージョンのものである場合、当該ソフトウェアの改造を行なえず、上述した手法を実現することはできない。これに対し、本実施形態の処理システム１では、ＣＡＤソフトウェアを改造する（フロントエンドとバックエンドとに分ける）手間が不要であり、従来のＣＡＤソフトウェアをそのまま利用することができる。
【００８６】
〔３〕第２実施形態の仮想マシン転送判定器（制御装置）
〔３−１〕第２実施形態の構成
次に、図７を参照しながら、図１および図２に示す処理システム１における第２実施形態としての仮想マシン転送判定器１１０Ａの機能構成について説明する。図７は、仮想マシン転送判定器１１０Ａの機能構成を示すブロック図である。図中、既述の符号と同一の符号は、同一またはほぼ同一の部分を示しているので、その詳細な説明は省略する。
【００８７】
第２実施形態の仮想マシン転送判定器１１０Ａにおける記憶部１１０ｂには、後述する学習用データ（例えば図１０（Ａ）参照）や、学習モデル（サポートベクタマシン）に係る内部変数などが保持されるほか、後述する制御プログラムを含む仮想端末ソフトウェアが保持される。
仮想マシン転送判定器１１０Ａは、処理部１１０ａが仮想端末ソフトウェア（制御プログラム）を実行することにより、判定部１１１Ａおよび指示部１１２としての機能を果たす。
【００８８】
仮想マシン転送判定器１１０Ａも、第１実施形態と同様、周期的（例えば５秒毎）に計測データＡ，Ｂを受信する。仮想マシン転送判定器１１０Ａが受信する計測データＡ，Ｂは、図１０（Ａ）に示すように、データ(d1)〜(d5)と、データ(d11)〜(d13)と、利用者入力としての転送指示であり、学習用データとして用いられる。図１０（Ａ）に、仮想マシン転送判定器１１０Ａで用いられる学習用データの具体例を示す。図１０（Ａ）において「正解」の列に値１または−１が記入されている行が、学習用データとして用いられる。ここで、「正解」の値１は、ローカルマシン１２で仮想マシンを稼動すること、つまり、利用者入力による転送指示がローカルマシン１２への転送を指示することを意味する。また、「正解」の値−１は、リモートマシン３１で仮想マシンを稼動すること、つまり、利用者入力による転送指示がリモートマシン３１への転送を指示することを意味する。
【００８９】
判定部１１１Ａは、計測データＡ，Ｂの受信時に利用者入力による転送指示を受けた場合、または、計測データＡ，Ｂの受信時が前回受けた転送指示の有効期限内である場合、当該転送指示または当該前記受けた転送指示を教師信号として、サポートベクタマシンを用いた機械学習を行なう。つまり、利用者からの転送指示があったとき、当該転送指示が教師信号として採用される。また、前回、転送指示が行なわれてから所定期間（有効期限内）は、当該前回の指示指示が教師信号として採用される。そして、判定部１１１Ａは、今回受信した計測データＡ，Ｂについての正解を、当該転送指示または当該前記受けた転送指示として、学習を行なうことによって、学習モデルの生成更新を行なう。より具体的に、判定部１１１Ａは、転送指示に対応する値（１または−１；教師信号，正解）と、今回受信した計測データＡ，Ｂ（データ(d1)〜(d5)およびデータ(d11)〜(d13)）を学習モデルに与えた際に得られる判定出力値（１または−１）とが一致するように、学習モデルに係る内部変数の更新を行なう。
【００９０】
一方、判定部１１１Ａは、計測データＡ，Ｂの受信時に転送指示を受けていない場合、且つ、計測データＡ，Ｂの受信時が前回受けた転送指示の有効期限外である場合、学習モデルを用いて、仮想マシンを稼動すべきサーバの判定を行なう。つまり、判定部１１１Ａは、今回受信した計測データＡ，Ｂを学習モデルに与えることにより予測値（判定出力値１または−１）を得て、得られた予測値に基づき、仮想マシンを稼動すべきサーバ（ローカルサーバ１２またはリモートサーバ３１）の判定を行なう。ここで、図１０（Ｂ）に、ある瞬間の計測データＡ，Ｂの例と、当該計測データＡ，Ｂについて学習モデルによって得られる判定出力の例とを示す。図１０（Ｂ）に示す計測データＡ，Ｂでは、ＣＰＵ使用率が99、メモリ使用量が1500、ディスクＩ／Ｏ量が90、プロセス情報がinfoXX、スクリーン描画量30、物理メモリ使用量2500、マウス操作量が1、キーボード操作量が1、利用者スクリーン描画量が29である。このような計測データＡ，Ｂを、図１０（Ａ）に示す学習用データに基づき生成更新され学習の進んだ学習モデルに与えると、学習モデルの判定出力値として−１が出力され、仮想マシンを稼動すべきサーバはリモートサーバ３１であると判定される。
【００９１】
まだ学習が行なわれていない場合や、学習量（学習用データの数）が少ない場合、判定部１１１Ａは、所定回数もしくは所定期間、学習用データによる学習を行なった後、学習モデルに基づく判定を開始する。判定部１１１Ａによる判定を開始するまで、指示部１１２は、判定部１１１Ａによる判定結果に従った指示を行なわず、利用者入力による転送指示または転送中止指示に従った指示のみを行なう。学習用データがある程度蓄積されたら（例えば５個以上蓄積されたら）、判定部１１１Ａは、機械学習モデル（サポートベクタマシン）で推定した値（予測値）を判定結果として出力する。これにより、指示部１１２は、ある程度の精度を保証された予測値に基づく判定結果に従って、仮想マシンをローカルサーバ１２とリモートサーバ３１とのいずれか一方に転送するように、サーバ１２，３１におけるハイパーバイザＨ１，Ｈ２に対する指示（制御メッセージの出力）を行なう。
【００９２】
上述したように、第２実施形態においても、利用者からの転送指示や転送中止指示は、判定部１１１Ａによる学習モデルに基づく自動判定結果よりも、優先される。そして、判定部１１１Ａの学習機能により、利用者からの転送指示に従って学習モデルが適切に生成更新されると、利用者が転送指示や転送中止指示を行なわなくても、利用者の望むタイミングで、仮想マシンの転送が行なわれるようになる。
【００９３】
なお、指示部１１２による指示に伴い仮想マシンの転送が実行された場合、判定部１１１Ａは、第１実施形態と同様、仮想マシンの転送後の所定期間の間に亘って、判定の実行を抑止する機能を有している。これにより、第１実施形態と同様、上述した振動（発振）が抑止され、利用者の煩わしさが解消される。適切な学習モデルが生成更新されると、つまり学習が進めば、振動（発振）の発生を抑えられる可能性もある。
【００９４】
〔３−２〕第２実施形態の動作
次に、図８に示すフローチャート（ステップＳ３１〜Ｓ４０）に従って、図７に示す仮想マシン転送判定器１１０Ａの動作を説明する。
図中および以下の説明において、第１実施形態と同様、Ｐは、現在、仮想マシンが配置されているサーバを示す変数であり、Ｓは、利用者が入力した転送指示によって指定された転送先サーバを示す変数である。Ｓｏは、利用者が前回入力した転送指示によって指定された転送先サーバを示す変数であり、Ｐｎは、次に仮想マシンを配置すべきサーバを示す変数である。上記変数としては、第１実施形態と同様、“local”または“remote”が用いられる。Ｔは、現在の時刻であり、Ｔｏは、前回、利用者が転送指示を入力した時刻であり、Ｔｕは、利用者入力による転送指示を有効と見なす期限（有効期限，所定期間）である。なお、変数Ｐ，Ｐｎ，Ｓ，Ｓｏ，前回指示入力時刻Ｔｏおよび有効期限Ｔｕは、記憶部１１０ｂに保持される。また、現在の時刻Ｔは、処理部１１０ａに内蔵されるタイマ（図示略）もしくは時計（図示略）によって計時される。
【００９５】
まず、仮想マシン転送判定器１１０Ａは、前回の転送指示による転送先サーバを示す変数Ｓｏを“local”（ローカルサーバ１２）とし、且つ、現在、仮想マシンが配置されているサーバを示す変数Ｐを“local”（ローカルサーバ１２）とする初期化を行なう（ステップＳ３１）。初期化後、仮想マシン転送判定器１１０Ａは、周期的（例えば５秒毎）に計測データＡ，Ｂを受信する都度（ステップＳ３２）、以下のステップＳ３３〜Ｓ４０の処理を実行する。
【００９６】
仮想マシン転送判定器１１０Ａは、計測データＡ，Ｂを受信すると（ステップＳ３２）、今回の計測データＡ，Ｂの受信タイミングで利用者から転送指示（変数Ｓ）を受けているか否かを判断する（ステップＳ３３）。転送指示（変数Ｓ）を受けている場合（ステップＳ３３のＹＥＳルート）、判定部１１１Ａは、次に仮想マシンを配置すべきサーバを示す変数Ｐｎを、今回の転送指示で指定される転送先サーバを示す変数Ｓとする。また、判定部１１１Ａは、利用者が前回指定した転送先サーバを示す変数Ｓｏを、今回の転送指示で指定される転送先サーバを示す変数Ｓとするとともに、前回、利用者が転送指示を入力した時刻Ｔｏを、現在の時刻Ｔとする（ステップＳ３４）。
【００９７】
そして、判定部１１１Ａは、今回受信した計測データＡ，Ｂについての正解を、次に仮想マシンを配置すべきサーバを示す変数Ｐｎとして、サポートベクタマシンを用いた機械学習を行なうことによって、学習モデルの生成更新を行なう（ステップＳ３５）。
この後、指示部１１２は、現在、仮想マシンが配置されているサーバ（変数Ｐ）と、次に仮想マシンを配置すべきサーバ（変数Ｐｎ）とが一致するか否かを判定する（ステップＳ３６）。変数Ｐと変数Ｐｎとが一致する場合（ステップＳ３６のＹＥＳルート）、指示部１１２は、現状を維持する、つまり、制御メッセージ(m3)つまり「現状のまま、何もしない」をハイパーバイザＨ１，Ｈ２（サーバ１２，３１）に対し出力する。この後、仮想マシン転送判定器１１０Ａは、ステップＳ３２の処理に戻る。
【００９８】
変数Ｐと変数Ｐｎとが一致しない場合（ステップＳ３６のＮＯルート）、指示部１１２は、仮想マシンを、次に仮想マシンを配置すべきサーバ（変数Ｐｎ）へ転送することを指示する制御メッセージ(m1)を出力する。これに伴い、仮想マシンは、変数Ｐに対応するサーバから他方のサーバ（変数Ｐｎ）へ移動・転送され、記憶部１１０ｂの変数Ｐが変数Ｐｎに書き換えられる（ステップＳ３７）。この後、仮想マシン転送判定器１１０Ａは、ステップＳ３２の処理に戻る。
【００９９】
一方、仮想マシン転送判定器１１０Ａは、転送指示（変数Ｓ）を受けていない場合（ステップＳ３３のＮＯルート）、今回の計測データＡ，Ｂの受信タイミングが前回受けた転送指示の有効期限内であるか否かを判定する。つまり、判定部１１１Ａは、現在時刻Ｔから前回の転送指示入力時刻Ｔｏを減算した時間Ｔ−Ｔｏが有効期限Ｔｕ未満であるか否かを判定する（ステップＳ３８）。時間Ｔ−Ｔｏが有効期限Ｔｕ内である場合（ステップＳ３８のＹＥＳルート）、判定部１１１Ａは、次に仮想マシンを配置すべきサーバを示す変数Ｐｎを、利用者が前回指定した転送先サーバを示す変数Ｓｏとし（ステップＳ３９）、ステップＳ３５の処理へ移行する。
【０１００】
時間Ｔ−Ｔｏが有効期限Ｔｕ外である場合（ステップＳ３８のＮＯルート）、判定部１１１Ａは、学習モデルを用いて、仮想マシンを稼動すべきサーバの判定を行なう。つまり、判定部１１１Ａは、今回受信した計測データＡ，Ｂを学習モデルに与えることにより予測値（判定出力値１または−１）を得て、得られた予測値に基づき、仮想マシンを稼動すべきサーバ（ローカルサーバ１２またはリモートサーバ３１）の判定を行なう。そして、判定部１１１Ａは、次に仮想マシンを配置すべきサーバを示す変数Ｐｎを、予測値とし（ステップＳ４０）、ステップＳ３６の処理へ移行する。
【０１０１】
〔３−３〕第２実施形態の効果
上述した第２実施形態の仮想マシン転送判定器１１０Ａを含む処理システム１によれば、第１実施形態と同様の作用効果を得ることができる。
特に、第２実施形態では、学習モデルに基づく判定により、対話型処理はローカルサーバ１２における仮想マシンＶＭ１で実行されるため、描画データをネットワーク２０経由で転送する必要がなくなり、対話型処理や利用者スクリーン描画をスムーズに行なうことができる。したがって、処理システム１による生産性が大幅に向上する。
【０１０２】
同様に、学習モデルに基づく判定により、高負荷処理は、並列処理用サーバ群３３を有するクラウドデータセンタ３０側のリモートサーバ３１における仮想マシンＶＭ２で実行され、負荷の高い処理を実行するときだけ、クラウド３０内のハイエンド・サーバが利用される。したがって、クラウドデータセンタ３０を用いた処理時間を短縮することができ、クラウドデータセンタ３０を用いることによるコストを削減しながら、処理システム１による生産性を大幅に向上することができる。
【０１０３】
これによって、対話型処理の応答性をよくすることと、高負荷処理の高速化との両方が実現される。また、利用者の操作状況に応じて仮想マシンが自動転送されるので、利用者にとって、作業工程に応じてローカルサーバ１２とリモートサーバ３１とを使い分けるための新たな操作を学習するといった煩わしさが無くなる。
さらに、第２実施形態では、計測データＡ，Ｂ（上記データ(d1)〜(d5)および(d11)〜(d13)）と利用者入力による転送指示とに基づく機械学習が行なわれ、利用者の望むタイミングで、仮想マシンを稼動するサーバ（ローカルサーバ１２またはリモートサーバ３１）の切換が行なわれる。
【０１０４】
第２実施形態では、まだ学習が行なわれていない場合や、学習量（学習用データの数）が少ない場合、学習モデルに基づく判定は行なわず、しばらく時間が経過して、所定回数もしくは所定期間、学習用データによる学習が行なわれた後、学習モデルに基づく判定が開始される。これにより、指示部１１２は、ある程度の精度を保証された予測値に基づく判定結果に従って、サーバ１２，３１におけるハイパーバイザＨ１，Ｈ２に対する指示（制御メッセージの出力）を行なうことが可能になる。なお、学習モデル内部情報は、ディスク装置などに永続的に保存しておくことが可能であり、毎日、最初に使用するときは初期状態に戻ってしまい学習しなおしが必要になる、といったことはない。処理システム１を初めて稼動させる際に、導入作業者が調整作業として学習を行なわせておけば、一般の利用者にとっては、初めて利用するときから、学習済みの状態で、処理システム１を利用することができる。
【０１０５】
〔４〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【０１０６】
上述した実施形態では、仮想マシンを稼動するサーバをローカルサーバ１２とリモートサーバ３１との間で切り換えるために、仮想化技術が利用されているが、本発明は、仮想化技術に限定されるものでない。仮想化技術に代え、例えば、フォールトトレラントの一種であるＨＡ（High Availability）クラスタと呼ばれる技術を用いてよい。当該技術では、システムが冗長化され稼動系と待機系とが用意され、もし稼働系が機能停止したときは、待機系に切り換えて、処理を継続させる。このような稼働系と待機系との切り換え技術を用いて、仮想マシンを稼動するサーバをローカルサーバ１２とリモートサーバ３１との間で切り換えるのと同様の効果が得られるため、結果として、上述した実施形態と同様の作用効果を得ることができる。
【０１０７】
上述した判定部１１１，１１１Ａ，指示部１１２，第１調整部１１３および第２調整部１１４としての機能の全部もしくは一部は、コンピュータ（ＣＰＵ，プロセッサ，処理部等）が所定のアプリケーションプログラム（制御プログラム）を実行することによって実現される。
そのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷなど），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷなど），ブルーレイディスク等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
【０１０８】
ここで、コンピュータとは、ハードウェアとＯＳ（オペレーティングシステム）とを含む概念であり、ＯＳの制御の下で動作するハードウェアを意味している。また、ＯＳが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記制御プログラムは、上述のようなコンピュータに、上述した判定部１１１，１１１Ａ，指示部１１２，第１調整部１１３および第２調整部１１４としての機能の全部もしくは一部を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくＯＳによって実現されてもよい。
【０１０９】
〔５〕付記
以上の第１および第２実施形態を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
利用者端末と、前記利用者端末側の第１物理サーバと、前記利用者端末および前記第１物理サーバと相互に通信可能に接続された第２物理サーバと、を含む処理システムにおいて、前記第１物理サーバと前記第２物理サーバとのいずれか一方で稼動する仮想マシンを制御する制御装置であって、
前記利用者端末に関する端末情報と前記第１物理サーバまたは前記第２物理サーバで稼動中の前記仮想マシンに関する仮想マシン情報とに応じて、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれで稼動するかの判定を行なう判定部と、
前記判定部による判定結果に従って、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれか一方に転送するように、前記第１物理サーバまたは前記第２物理サーバに対する指示を行なう指示部と、を有する、制御装置。
【０１１０】
（付記２）
前記判定部は、前記端末情報および前記仮想マシン情報に基づき、前記仮想マシンによって実行される処理が対話型処理と当該対話型処理よりも高い負荷のかかる高負荷処理とのいずれであるかを判定し、前記処理が前記対話型処理である場合、前記仮想マシンを稼働するサーバを前記第１物理サーバと判定する一方、前記処理が前記高負荷処理である場合、前記仮想マシンを稼働するサーバを前記第２物理サーバと判定する、付記１に記載の制御装置。
【０１１１】
（付記３）
前記利用者端末から利用者による前記仮想マシンの転送指示または転送中止指示を受けた場合、前記指示部は、前記判定結果よりも前記転送指示または前記転送中止指示を優先し、前記転送指示または前記転送中止指示に従って、前記第１物理サーバまたは前記第２物理サーバに対する前記指示を行なう、付記２に記載の制御装置。
【０１１２】
（付記４）
前記判定部は、前記仮想マシン情報に含まれる前記仮想マシンでのスクリーン描画量と前記端末情報に含まれる前記利用者端末でのスクリーン描画量との差分である描画漏れ量を算出し、当該描画漏れ量が第１閾値を超えた場合、前記仮想マシンを稼働するサーバを前記第１物理サーバと判定する、付記３に記載の制御装置。
【０１１３】
（付記５）
前記転送指示または前記転送中止指示に従って、前記第１閾値を調整する第１調整部をさらに有し、
前記第１調整部は、
前記描画漏れ量が前記第１閾値を超える前に、前記仮想マシンを前記第２物理サーバから前記第１物理サーバへ転送する前記転送指示を受信した場合、前記第１閾値よりも小さい値を次の第１閾値とする一方、
前記描画漏れ量が前記第１閾値を超えたことに伴い前記指示部が前記仮想マシンを前記第２物理サーバから前記第１物理サーバへ転送する指示を行なった後に、前記転送中止指示を受信した場合、前記第１閾値よりも大きい値を次の第１閾値とする、付記４に記載の制御装置。
【０１１４】
（付記６）
前記判定部は、前記仮想マシン情報に含まれる前記仮想マシンでのスクリーン描画量と前記端末情報に含まれる前記利用者端末でのスクリーン描画量との差分である描画漏れ量を算出し、当該描画漏れ量が第２閾値以下であり、且つ、前記仮想マシン情報に含まれる、前記仮想マシンでの演算処理部使用率が第３閾値を超える場合、前記仮想マシンを稼働するサーバを前記第２物理サーバと判定する、付記３〜付記５のいずれか一項に記載の制御装置。
【０１１５】
（付記７）
前記転送指示または前記転送中止指示に従って、前記第２閾値を調整する第２調整部をさらに有し、
前記第２調整部は、
前記描画漏れ量が前記第２閾値以下になり且つ前記演算処理部使用率が前記第３閾値を超える前に、前記仮想マシンを前記第１物理サーバから前記第２物理サーバへ転送する前記転送指示を受信した場合、前記第２閾値よりも大きい値を次の第２閾値とする一方、
前記描画漏れ量が前記第２閾値以下になり且つ前記演算処理部使用率が前記第３閾値を超えたことに伴い前記指示部が前記仮想マシンを前記第１物理サーバから前記第２物理サーバへ転送する指示を行なった後に、前記転送中止指示を受信した場合、前記第２閾値よりも小さい値を次の第２閾値とする、付記６に記載の制御装置。
【０１１６】
（付記８）
前記判定部は、
前記端末情報および前記仮想マシン情報の受信時に前記転送指示を受けた場合、今回受信した前記端末情報および前記仮想マシン情報についての正解は、前記転送指示によって指定される転送先サーバであるとして学習を行なうことによって、学習モデルの生成更新を行なう一方、
前記端末情報および前記仮想マシン情報の受信時に前記転送指示を受けていない場合、今回受信した前記端末情報および前記仮想マシン情報を前記学習モデルに与えることによって得られる予測値に基づき、前記判定を行なう、付記３に記載の制御装置。
【０１１７】
（付記９）
前記判定部は、前記端末情報および前記仮想マシン情報の受信時が前回受けた転送指示の有効期限内である場合、今回受信した前記端末情報および前記仮想マシン情報についての正解は、前記前回受けた転送指示の転送先サーバであるとして学習を行なうことによって、学習モデルの生成更新を行なう、付記８に記載の制御装置。
【０１１８】
（付記１０）
前記判定部は、所定回数もしくは所定期間、前記学習を行なってから、前記学習モデルに基づく前記判定を開始する、付記８または付記９に記載の制御装置。
【０１１９】
（付記１１）
前記指示部による前記指示に伴い前記仮想マシンの転送が実行された場合、前記判定部は、前記仮想マシンの転送後の所定期間、前記判定の実行を抑止する、付記１〜付記１０のいずれか一項に記載の制御装置。
【０１２０】
（付記１２）
利用者端末と、
前記利用者端末側の第１物理サーバと、
前記利用者端末および前記第１物理サーバと相互に通信可能に接続された第２物理サーバと、
前記第１物理サーバと前記第２物理サーバとのいずれか一方で稼動する仮想マシンを制御する制御装置と、
前記利用者端末に関する端末情報を収集する第１収集部と、
前記第１物理サーバまたは前記第２物理サーバで稼動中の前記仮想マシンに関する仮想マシン情報を収集する第２収集部と、を有し、
前記制御装置は、
前記第１収集部によって収集された前記端末情報と前記第２収集部によって収集された前記仮想マシン情報とに応じて、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれで稼動するかの判定を行なう判定部と、
前記判定部による判定結果に従って、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれか一方に転送するように、前記第１物理サーバまたは前記第２物理サーバに対する指示を行なう指示部と、を有する、処理システム。
【０１２１】
（付記１３）
利用者端末と、前記利用者端末側の第１物理サーバと、前記利用者端末および前記第１物理サーバと相互に通信可能に接続された第２物理サーバと、を含む処理システムにおいて、前記第１物理サーバと前記第２物理サーバとのいずれか一方で稼動する仮想マシンを制御するコンピュータに、
前記利用者端末に関する端末情報と前記第１物理サーバまたは前記第２物理サーバで稼動中の前記仮想マシンに関する仮想マシン情報とに応じて、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれで稼動するかの判定を行ない、
前記判定の結果に従って、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれか一方に転送するように、前記第１物理サーバまたは前記第２物理サーバに対する指示を行なう、
処理を実行させる、制御プログラム。
【０１２２】
（付記１４）
利用者端末と、前記利用者端末側の第１物理サーバと、前記利用者端末および前記第１物理サーバと相互に通信可能に接続された第２物理サーバと、を含む処理システムにおいて、前記第１物理サーバと前記第２物理サーバとのいずれか一方で稼動する仮想マシンをコンピュータにより制御する制御方法であって、
前記コンピュータにより、前記利用者端末に関する端末情報と前記第１物理サーバまたは前記第２物理サーバで稼動中の前記仮想マシンに関する仮想マシン情報とに応じて、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれで稼動するかの判定を行ない、
前記コンピュータにより、前記判定の結果に従って、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれか一方に転送するように、前記第１物理サーバまたは前記第２物理サーバに対する指示を行なう、制御方法。
【０１２３】
（付記１５）
利用者端末と、前記利用者端末側の第１物理サーバと、前記利用者端末および前記第１物理サーバと相互に通信可能に接続された第２物理サーバと、を含む処理システムにおいて、前記第１物理サーバと前記第２物理サーバとのいずれか一方で稼動する仮想マシンを制御するコンピュータに、
前記利用者端末に関する端末情報と前記第１物理サーバまたは前記第２物理サーバで稼動中の前記仮想マシンに関する仮想マシン情報とに応じて、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれで稼動するかの判定を行ない、
前記判定の結果に従って、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれか一方に転送するように、前記第１物理サーバまたは前記第２物理サーバに対する指示を行なう、
処理を実行させる、制御プログラムを記録したコンピュータ読取可能な記録媒体。
【０１２４】
（付記１６）
利用者端末と、前記利用者端末側の第１物理サーバと、前記利用者端末および前記第１物理サーバと相互に通信可能に接続された第２物理サーバと、を含む処理システムにおいて、前記第１物理サーバと前記第２物理サーバとのいずれか一方で稼動する仮想マシンを制御する制御装置であって、
プロセッサを有し、
前記プロセッサは、
前記利用者端末に関する端末情報と前記第１物理サーバまたは前記第２物理サーバで稼動中の前記仮想マシンに関する仮想マシン情報とに応じて、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれで稼動するかの判定を行ない、
前記判定の結果に従って、前記仮想マシンを前記第１物理サーバと前記第２物理サーバとのいずれか一方に転送するように、前記第１物理サーバまたは前記第２物理サーバに対する指示を行なう、制御装置。
【符号の説明】
【０１２５】
１    処理システム
１０    利用者のオフィス
１１    端末コンピュータ（利用者端末）
１１ａ    利用者スクリーン（ディスプレイ）
１１ｂ    キーボード
１１ｃ    マウス（ポインティングデバイス）
１１ｄ    情報収集部（第１収集部）
１１ｅ    描画領域
１１ｆ    ステータス表示領域
１１ｇ    操作ボタン
１２    ローカルサーバ（第１物理サーバ）
２０    ネットワーク
３０    クラウドデータセンタ
３１    リモートサーバ（第２物理サーバ）
３２    ＬＡＮ
３２Ａ    ネットワーク仮想化機能
３３    並列処理用サーバ群
１１０，１１０Ａ    仮想マシン転送判定器（制御装置）
１１０ａ    処理部（ＣＰＵ，コンピュータ，プロセッサ）
１１０ｂ    記憶部（ＲＡＭ）
１１１，１１１Ａ    判定部
１１２    指示部
１１３    第１調整部
１１４    第２調整部
１２１，１２２，３１１，３１２    情報収集部（第２収集部）
ＶＭ１，ＶＭ２    仮想マシン
Ｈ１，Ｈ２    ハイパーバイザ
【図１】
2014059783.tif 000003
【図２】
2014059783.tif 000004
【図３】
2014059783.tif 000005
【図４】
2014059783.tif 000006
【図５】
2014059783.tif 000007
【図６】
2014059783.tif 000008
【図７】
2014059783.tif 000009
【図８】
2014059783.tif 000010
【図９】
2014059783.tif 000011
【図１０】
2014059783.tif 000012
【図１１】
2014059783.tif 000013