(57)【要約】【課題】通信アプリケーションについて、ユーザが体感するレスポンスの低下を抑制する。【解決手段】単位時間当たりに生成された所定のクライアント端末宛ての送信データのデータ量である生成レートに係る情報を取得する第１の取得部と、単位時間当たりに送信処理がなされる所定のクライアント端末への送信データのデータ量である送信レートに係る情報を取得する第２の取得部と、所定のクライアント端末から、所定のクライアント端末が単位時間当たりに受信したデータの受信量である受信レートに係る情報を受信する受信部と、所定のクライアント端末宛ての送信データが生成された場合に、受信レート、送信レート、及び、生成レートに基づいて、所定のクライアント端末宛ての送信データを送信するか否かを制御する制御部と、を備える情報処理装置である。【選択図】図２
2018022998.tif 000002
【特許請求の範囲】
【請求項１】
単位時間当たりに生成された所定のクライアント端末宛ての送信データのデータ量である生成レートに係る情報を取得する第１の取得部と、
単位時間当たりに送信処理がなされる前記所定のクライアント端末宛ての送信データのデータ量である送信レートに係る情報を取得する第２の取得部と、
前記所定のクライアント端末から、前記所定のクライアント端末が単位時間当たりに受信したデータの受信量である受信レートに係る情報を受信する受信部と、
前記所定のクライアント端末宛ての送信データが生成された場合に、前記受信レート、前記送信レート、及び、前記生成レートに基づいて、前記所定のクライアント端末宛ての前記送信データを送信するか否かを制御する制御部と、
を備える情報処理装置。
【請求項２】
前記制御部は、前記送信レートを前記受信レートで割った値と、前記生成レートを前記受信レートで割った値と、を乗じた値が閾値未満である場合に、前記所定のクライアント端末宛ての前記送信データを送信することを判定する、
請求項１に記載の情報処理装置。
【請求項３】
前記制御部は、前記送信レートを前記受信レートで割った値が第２の閾値未満である場合に、前記所定のクライアント端末宛ての送信データを送信することを判定する、
請求項１又は２に記載の情報処理装置。
【請求項４】
前記制御部は、前記所定のクライアント端末宛ての前記送信データを送信しないことを判定した場合に、前記送信データについて前記送信処理を行わせない、
請求項１から３のいずれか一項に記載の情報処理装置。
【請求項５】
前記制御部は、前記所定のクライアント端末宛ての前記送信データを送信しないことを判定した場合に、前記送信データを廃棄する、
請求項１から３のいずれか一項に記載の情報処理装置。
【請求項６】
前記クライアント端末宛ての送信データを生成する生成部と、
前記送信データについて送信処理を行う送信処理部と、
をさらに備える請求項１から５のいずれか一項に記載の情報処理装置。
【請求項７】
前記生成部は、前記所定のクライアント端末から画面の操作内容を受信し、前記所定のクライアント端末からの画面の操作内容に応じて更新された画面の画像データを生成し、前記所定のクライアント端末に送信済みの最新の画像データと前記生成した画像データとの差分データを前記送信データとして生成する、
請求項６に記載の情報処理装置。
【請求項８】
前記生成部は、前記生成した画像データについて生成した送信データについて前記送信処理が実行された場合には、前記生成した画像データを前記送信済みの最新の画像データとして保存し、前記生成した画像データについて生成した送信データを送信しないことが判定された場合には、前記生成した画像データを保存しない、
請求項７に記載の情報処理装置。
【請求項９】
前記送信データは、所定のアプリケーションによって生成される、
請求項１から５のいずれか一項に記載の情報処理装置。
【請求項１０】
前記所定のアプリケーションは、前記所定のクライアント端末から画面の操作内容を受
信し、前記所定のクライアント端末からの画面の操作内容に応じて更新された画面の画像データを生成し、前記所定のクライアント端末に送信済みの最新の画像データと前記生成した画像データとの差分データを前記送信データとして生成する、
請求項９に記載の情報処理装置。
【請求項１１】
サーバから自装置宛てのデータを受信する受信部と、
単位時間当たりの前記サーバから受信されたデータの受信量である受信レートに係る情報を取得する取得部と、
前記受信レートに係る情報を前記サーバに通知する通知部と、
を備えるクライアント端末であって、
前記サーバは、
単位時間当たりに生成された前記クライアント端末宛ての送信データのデータ量である生成レートに係る情報を取得する第１の取得部と、
単位時間当たりに送信処理がなされる前記クライアント端末宛ての送信データのデータ量である送信レートに係る情報を取得する第２の取得部と、
前記クライアント端末から、前記受信レートに係る情報を受信する受信部と、
前記所定のクライアント端末宛ての送信データが生成された場合に、前記所定のクライアント端末の受信レート、前記送信レート、及び、前記生成レートに基づいて、前記所定のクライアント端末宛ての前記送信データを送信するか否かを制御する制御部と、を備える、
クライアント端末。
【請求項１２】
前記取得部は、受信されたパケットに連続して付与されているパケット番号を監視し、所定のパケット番号数で区切られる１区間に含まれる受信パケットの合計サイズと、当該１区間の時間長とを、前記受信レートに係る情報として、取得する、
請求項１１に記載のクライアント端末。
【請求項１３】
単位時間当たりに生成された所定のクライアント端末宛ての送信データのデータ量である生成レートに係る情報を取得し、
単位時間当たりに送信処理がなされる前記所定のクライアント端末宛ての送信データのデータ量である送信レートに係る情報を取得し、
前記所定のクライアント端末から、前記所定のクライアント端末が単位時間当たりに受信したデータの受信量である受信レートに係る情報を受信し、
前記所定のクライアント端末宛ての送信データが生成された場合に、前記受信レート、前記送信レート、及び、前記生成レートに基づいて、前記所定のクライアント端末宛ての前記送信データを送信するか否かを制御する、
情報処理方法。
【請求項１４】
コンピュータに、
単位時間当たりに生成された所定のクライアント端末宛ての送信データのデータ量である生成レートを計測させ、
単位時間当たりに送信処理がなされる前記所定のクライアント端末宛ての送信データのデータ量である送信レートを計測させ、
前記所定のクライアント端末から、前記所定のクライアント端末が単位時間当たりに受信したデータの受信量である受信レートに係る情報を受信させ、
前記所定のクライアント端末宛ての送信データが生成された場合に、前記受信レート、前記送信レート、及び、前記生成レートに基づいて、前記所定のクライアント端末宛ての前記送信データを送信するか否かを制御させる、
ための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、クライアント端末、情報処理方法、及び、情報処理プログラムに関する。
【背景技術】
【０００２】
インターネットなどのＷＡＮ（Wide Area Network）では、空き帯域が変動している。
ＷＡＮを利用するアプリケーションの中には、ある程度の許容限度での応答性が望まれるアプリケーションがある。このような応答性が望まれるアプリケーションには、例えば、仮想デスクトップのアプリケーションがある。
【０００３】
仮想デスクトップは、クライアント端末のデスクトップ環境をサーバ上で稼働させる技術である。仮想デスクトップでは、クライアント端末とサーバとに、それぞれに応じたアプリケーションが実装される。仮想デスクトップでは、クライアント端末からサーバに対して、画面の操作内容が送信される。サーバからクライアント端末には、画面の操作内容に応じて更新された画面の差分データが送信される。画面の操作内容は様々であり、予め固定されていないため、サーバからクライアント端末へ送信される画面の更新データ量は、送信の度に変動する。その一方、画面を操作するユーザは、更新データ量によらず、ある程度の許容限度での応答性を期待する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１４７０３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ネットワークの空き帯域が少ないときに、例えば、仮想デスクトップのサーバがクライアント端末に更新データを送信すると、ネットワークが混雑して、更新データがクライアント端末までに届くのに時間がより多くかかる。この場合には、仮想デスクトップのクライアント端末の画面では画面遷移が滑らかでなくなったり、画面遷移が止まってしまったりして、ユーザにレスポンスの低下を感じさせてしまうことがある。
【０００６】
本発明は、通信アプリケーションについて、ユーザが体感するレスポンスの低下を抑制可能な情報処理装置、クライアント端末、情報処理方法、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の態様の一つは、第１の取得部と、第２の取得部と、受信部と、制御部とを備える情報処理装置である。第１の取得部は、単位時間当たりに生成された所定のクライアント端末宛ての送信データのデータ量である生成レートに係る情報を取得する。第２の取得部は、単位時間当たりに送信処理がなされる所定のクライアント端末宛ての送信データのデータ量である送信レートに係る情報を取得する。受信部は、所定のクライアント端末から、所定のクライアント端末が単位時間当たりに受信したデータの受信量である受信レートに係る情報を受信する。制御部は、所定のクライアント端末宛ての送信データが生成された場合に、受信レート、送信レート、及び、生成レートに基づいて、所定のクライアント端末宛ての送信データを送信するか否かを制御する。
【発明の効果】
【０００８】
開示の情報処理装置、クライアント端末、情報処理方法、及び情報処理プログラムによれば、通信アプリケーションについて、ユーザが体感するレスポンスの低下を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１実施形態に係る情報処理システムのシステム構成の一例を示す図である。
【図２】図２は、第１実施形態に係るサーバの仮想デスクトップの１セッションに係る更新データの送信タイミングの制御方法の一例を示す図である。
【図３】図３は、クライアント端末のハードウェア構成の一例を示す図である。
【図４】図４は、クライアント端末の機能構成の一例を示す図である。
【図５】図５は、受信計測結果記録テーブルの一例である。
【図６】図６は、クライアント端末の受信帯域計測部の処理のフローチャートの一例である。
【図７】図７は、サーバのハードウェア構成の一例を示す図である。
【図８】図８は、サーバの機能構成の一例を示す図である。
【図９】図９は、画像更新テーブルの一例である。
【図１０】図１０は、送信計測結果記録テーブルの一例である。
【図１１】図１１は、サーバの受信帯域反映部の処理のフローチャートの一例である。
【図１２】図１２は、サーバの更新画像取得部の処理のフローチャートの一例である。
【図１３】図１３は、サーバの画像更新レート計測部の処理のフローチャートの一例である。
【図１４】図１４は、サーバの送信レート計測部の処理のフローチャートの一例である。
【図１５】図１５は、サーバの制御部の処理のフローチャートの一例である。
【図１６】図１６は、図１５のＯＰ４５の送信判定処理のフローチャートの一例である。
【図１７】図１７は、第１実施形態に係るサーバとクライアント端末との仮想デスクトップのシミュレーション結果の画像更新レートを受信レートで割った値、送信レートを受信レートで割った値の時系列推移を示すグラフの一例である。
【図１８】図１８は、通常の仮想デスクトップの通信と、第１実施形態に係るサーバとクライアント端末との仮想デスクトップの通信と、シミュレーション結果の遅延を比較したグラフである。
【図１９】図１９は、ＵＮＡＰ（Universal Network Acceleration Protocol）のデータグラムのフォーマットを示す図である。
【図２０】図２０は、変形例に係るクライアント端末の受信計測結果記録テーブルの一例である。
【図２１】図２１は、変形例に係るクライアント端末の受信帯域計測部の処理のフローチャートの一例である。
【図２２】図２２は、変形例に係るサーバの送信計測結果記録テーブルの一例である。
【図２３】図２３は、変形例に係るサーバの送信レート計測部のフローチャートの一例である。
【発明を実施するための形態】
【００１０】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１１】
＜第１実施形態＞
図１は、第１実施形態に係る情報処理システムのシステム構成の一例を示す図である。情報処理システム１００は、仮想デスクトップのサーバ１とクライアント端末２とを含む。サーバ１とクライアント端末２とは、ＷＡＮを介して接続されている。サーバ１とクライアント端末２とは、それぞれ、仮想デスクトップのサーバ又はクライアントのアプリケーションを実行している。サーバ１とクライアント端末２との間には、仮想デスクトップのセッションが確立されている。
【００１２】
クライアント端末２は、ユーザによる画面の操作内容をサーバ２に送信する。サーバ１は、クライアント端末２からの画面の操作内容に応じて遷移した画面の画像データを生成し、クライアント端末２に送信済みの画面のうち最新の画面の画像データとの差分データを更新データとしてクライアント端末２に送信する。したがって、サーバ１が生成するクライアント端末２宛ての送信データのサイズは、送信の度に変動し、単位時間当たりのサーバ１のデータの生成量も変動する。
【００１３】
一方、サーバ１とクライアント端末２とが接続するＷＡＮは、複数のユーザによって共有されているので、空き帯域が変動する。空き帯域が変動することと、仮想デスクトップのサーバ１が生成する送信データ量が送信の度に変動することから、空き帯域が少ない場合にサーバ１がクライアント端末２にサイズの大きな更新データを送信すると、ネットワークが輻輳する可能性がある。ネットワークが輻輳すると遅延が発生するため、クライアント端末２において、操作レスポンスが低下する可能性がある。
【００１４】
仮想デスクトップの操作レスポンスが劣化すると、例えば、画面上のカーソルの動きが滑らかでなくなったりして、仮想デスクトップに対するユーザの体感品質を低下させることになる。
【００１５】
第１実施形態では、空き帯域と仮想デスクトップのサーバ１が生成する送信データ量とを考慮して、サーバ１は、空き帯域の少ない場合には更新データの送信を控え、帯域の空いているときに更新データを送信するようにして、送信タイミングを制御する。
【００１６】
図２は、第１実施形態に係るサーバ１の仮想デスクトップの１セッションに係る更新データの送信タイミングの制御方法の一例を示す図である。サーバ１は、クライアント端末２の受信レートと、サーバ１の送信レートと画像更新レートとを用いて、仮想デスクトップのクライアント端末２へのデータの送信タイミングを制御する。
【００１７】
画像更新レートとは、仮想デスクトップの更新データの生成速度である。第１実施形態では、画像更新レートは、未送信の更新データのサイズを未送信となってからの経過時間で割った値で定義される。送信レートとは、単位時間当たりにサーバ１が送信処理を行ったクライアント端末２宛ての送信データのサイズである。送信処理は、例えば、アプリケーション層では、仮想デスクトップのアプリケーションが下位の層とのデータの受け渡し用のバッファにデータを格納することである。また、送信処理は、アプリケーション層よりも下位の層では、アプリケーション層とのデータの受け渡し用のバッファに格納されたデータをパケットに変換し、当該パケットをネットワークに出力するまでの一連の処理の一部又は全部である。画像更新レート及び送信レートは、サーバ１によって計測される。画像更新レートは、「生成レート」の一例である。更新データは、「送信データ」の一例である。
【００１８】
受信レートとは、単位時間当たりにクライアント端末２がサーバ１から受信する仮想デスクトップのデータのサイズである。受信レートは、クライアント端末２によって計測さ
れ、サーバ１に通知される。
【００１９】
仮想デスクトップ側から見た、すなわち、アプリケーション層レベルでみた場合の送信タイミングの制御の指針は、第１実施形態では、画像更新レートを受信レートで割った値が増大する場合には、仮想デスクトップの更新データの送信をスキップすることである。画像更新レートを受信レートで割った値が増大する場合には、クライアント端末２の仮想デスクトップのデータを受信する速度に比べてサーバ１の仮想デスクトップの更新データの生成速度の方が早いことが示され、ネットワークの混雑を招くおそれがある。そこで、第１実施形態では、画像更新レートを受信レートで割った値が増大する場合には、仮想デスクトップの更新データの送信を保留し、遅延の発生又は増大を抑制する。
【００２０】
通信側から見た、すなわち、ネットワーク層レベルで見た送信タイミングの制御の指針は、第１実施形態では、送信レートを受信レートで割った値が増大する場合には、仮想デスクトップの更新データの送信をスキップすることである。ＷＡＮに十分に空き帯域がある場合には、理論的には、送信レート＝受信レートとなる。しかしながら、ＷＡＮに空き帯域が少ない場合には、送信レート＞受信レートとなる。そのため、送信レートを受信レートで割った値が増大する場合には、サーバ１が仮想デスクトップの更新データの送信を保留することで、遅延の増大を抑制する。
【００２１】
例えば、送信レートを受信レートで割った値が１に近く、空き帯域が十分にあることが示される場合には、画像更新レートを受信レートで割った値が大きいとしても、仮想デスクトップの更新データは送信されても問題ない。また、例えば、送信レートを受信レートで割った値が大きく、空き帯域が少ないことが示される場合には、画像更新レートを受信レートで割った値が小さい値であっても、仮想デスクトップの更新データが送信されると、遅延が増大するおそれがある。
【００２２】
すなわち、送信レートを受信レートで割った値と、画像更新レートを受信レートで割った値とは、トレードオフに似た関係にある。
【００２３】
そのため、第１実施形態では、アプリケーション層とネットワーク層との双方の送信タイミングの制御の指針を考慮し、仮想デスクトップの更新データの送信の可否を判別する判別関数を、ｘ＊ｙ＝βと定義する。ｘは、画像更新レート÷受信レートの値である。ｙは送信レート÷受信レートの値である。定数βは、０以上の正の値である。定数βは、例えば、１．８、５、１０等の実測に基づいた値に、適宜、設定される。
【００２４】
図２では、判別関数を示すグラフが示されている。ｘ＊ｙの値が定数β未満である領域を送信可能領域、ｘ＊ｙの値が定数β以上である領域を送信スキップ領域とする。ｘとｙとの値が送信可能領域にある場合には、仮想デスクトップの更新データを送信することが判定される。ｘとｙとの値が送信スキップ領域にある場合には、仮想デスクトップの更新データを送信しないことが判定される。
【００２５】
仮想デスクトップの更新データを送信しないことが判定された場合には、第１実施形態では、当該更新データは廃棄される。例えば、廃棄された更新データが、時刻Ｔ１に生成された画面の画像データと、時刻Ｔ２（Ｔ１＜Ｔ２）に生成された画面の画像データとの差分データであるとする。この場合、廃棄された更新データの次に生成される更新データは、時刻Ｔ１に生成された画面の画像データと時刻Ｔ３（Ｔ２＜Ｔ３）に生成された画面の画像データとの差分データとなる。
【００２６】
例えば、ｘとｙとの値が送信スキップ領域にあり、更新データの送信がスキップされると、単位時間当たりに送信処理が行われるデータのサイズが小さくなるので、送信レート
が低下する。送信レートが低下すると、送信レートを受信レートで割った値（＝ｙ）が低下する。したがって、更新データの送信がスキップ又は連続してスキップされると、送信レートを受信レートで割った値が次第に小さくなるので、ｘとｙとの値が送信可能領域に入るようになり、遅延の少ない状態で仮想デスクトップの更新データがクライアント端末２に送信されるようになる。
【００２７】
例えば、時刻Ｔ１の画面の画像データと時刻Ｔ２の画面の画像データとの差分データである更新データの送信がスキップされ、その後、時刻Ｔ１の画面の画像データと時刻Ｔ３の画面の画像データとの差分データである更新データが送信されたことを仮定する。この場合、クライアント端末２の画面は、時刻Ｔ１の画面から時刻Ｔ３の画面へと遷移することとなる。クライアント端末２では時刻Ｔ２の画面は表示されないものの、時刻Ｔ１の画面の画像データと時刻Ｔ３の画面の画像データとの差分データが、遅延の少ない状態でクライアント端末２に送信されてくる。そのため、ネットワークの輻輳による遅延によって、カーソルの動きが滑らかでないなどの、レスポンスの低下をユーザに感じさせることは抑制される。
【００２８】
＜クライアント端末の装置構成＞
図３は、クライアント端末２のハードウェア構成の一例を示す図である。クライアント端末２は、例えば、ＰＣ（Personal Computer）等の汎用のコンピュータ、スマートフォ
ン及びタブレット端末等の無線情報処理端末、等である。図３のクライアント端末２のハードウェア構成は、ＰＣが想定されている。
【００２９】
クライアント端末２は、ハードウェア構成要素として、ＣＰＵ（Central Processing Unit）２０１、主記憶装置２０２、入力装置２０３、出力装置２０４、補助記憶装置２０
５、ネットワークインタフェース２０７を備え、これらはバス２０９によって電気的に接続されている。
【００３０】
入力装置２０３は、例えば、キーボード、キーパッド、マウス等のポインティングデバイスである。クライアント端末２がスマートフォンである場合には、入力装置２０３は、タッチパネルや各種ボタンである。入力装置２０３から入力されたデータは、ＣＰＵ  ２０１に出力される。
【００３１】
補助記憶装置２０５は、様々なプログラムや、各プログラムの実行に際してＣＰＵ  ２０１が使用するデータを格納する。補助記憶装置２０５は、例えば、ＥＰＲＯＭ（Erasable Programmable ROM）、フラッシュメモリ、又はハードディスクドライブ（Hard Disk Drive）等の不揮発性のメモリである。補助記憶装置２０５は、例えば、オペレーティングシステム（ＯＳ）、仮想デスクトップクライアントプログラム２０５Ｐ、その他様々なアプリケーションプログラムを保持する。仮想デスクトップクライアントプログラム２０５Ｐは、クライアント端末２を仮想デスクトップのクライアントとして動作させるためのプログラムである。
【００３２】
主記憶装置２０２は、ＣＰＵ  ２０１に、補助記憶装置２０５に格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファ、一時メモリとして用いられたりする。主記憶装置２０２は、例えば、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）のような半導体メモリを含む。
【００３３】
ＣＰＵ  ２０１は、補助記憶装置２０５に保持されたＯＳや様々なアプリケーションプログラムを主記憶装置２０２にロードして実行することによって、様々な処理を実行する。ＣＰＵ  ２０１は、１つに限られず、複数備えられてもよい。
【００３４】
ネットワークインタフェース２０７は、ネットワークとの情報の入出力を行うインタフェースである。ネットワークインタフェース２０７は、アクセスネットワークと接続しており、クライアント端末２は、アクセスネットワークを通じてＷＡＮに接続する。ネットワークインタフェース２０７は、有線のネットワークと接続するインタフェース、無線のネットワークと接続するインタフェースを含む。ネットワークインタフェース２０７は、例えば、ＮＩＣ（Network Interface Card）、無線ＬＡＮ（Local Area Network）カード等である。ネットワークインタフェース１７で受信されたデータ等は、ＣＰＵ  ２０１に出力される。
【００３５】
出力装置２０４は、ＣＰＵ  ２０１の処理の結果を出力する。出力装置２０４は、ディスプレイ、プリンタ、スピーカ等の音声出力装置を含む。
【００３６】
なお、図３に示されるクライアント端末２のハードウェア構成は、一例であり、上記に限られず、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。例えば、クライアント端末２は、可搬記録媒体駆動装置を備え、可搬記録媒体に記録されたプログラムを実行してもよい。可搬記録媒体は、例えば、ＳＤカード、ｍｉｎｉＳＤカード、ｍｉｃｒｏＳＤカード、ＵＳＢ（Universal Serial Bus）フラッシュメモリ、ＣＤ（Compact Disc）、ＤＶＤ(Digital Versatile Disc)、Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ、又はフラッシュメモリカードのような記録媒体である。
【００３７】
図４は、クライアント端末２の機能構成の一例を示す図である。クライアント端末２は、機能構成要素として、データ受信部２１、受信帯域計測部２２、受信帯域送信部２３、画像解凍部２４、画像表示部２５を備える。これらの機能構成要素は、クライアント端末２２のＣＰＵ  ２０１が補助記憶装置２０５に格納されている仮想デスクトップクライアントプログラム２０５Ｐを実行することによって達成される機能構成である。
【００３８】
データ受信部２１は、サーバ１からクライアント端末２に送信された仮想デスクトップの更新データを受信する。データ受信部２１は、受信した更新データを受信帯域計測部２２に出力する。データ受信部２１は、「クライアント端末」の「受信部」の一例である。
【００３９】
受信帯域計測部２２は、データ受信部２１から、仮想デスクトップの更新データの入力を受ける。受信帯域計測部２２は、所定周期で仮想デスクトップの受信データ量を計測しており、計測結果を、後述の受信計測記録テーブルに記録する。受信帯域計測部２２は、更新データと計測結果情報の送信指示とを受信帯域送信部２３に出力する。受信帯域計測部２２の計測周期は、例えば、２０ミリ秒である。ただし、受信帯域計測部２２の計測周期は２０ミリ秒に限定されない。受信帯域計測部２２は、「クライアント端末」の「取得部」の一例である。
【００４０】
受信帯域送信部２３は、受信帯域計測部２２から更新データの入力を受け、当該更新データを画像解凍部２４に出力する。また、受信帯域送信部２３は、受信帯域計測部２２から受信レート情報の送信指示の入力を受け、受信計測記録テーブルに記録されている受信レート情報を読み出し、サーバ１に送信する。受信レート情報の詳細については、後述される。受信帯域送信部２３は、「クライアント端末」の「送信部」の一例である。
【００４１】
画像解凍部２４は、受信帯域送信部２３から、サーバ１から送信された仮想デスクトップの更新データの入力を受ける。第１実施形態では、更新データは所定の画像圧縮アルゴリズムによって圧縮されているため、画像解凍部２４は、更新データを解凍する。画像解凍部２４は、解凍した更新データを画像表示部２５に出力する。
【００４２】
画像表示部２５は、画像解凍部２４から解凍された更新データの入力を受ける。画像表
示部２５は、解凍された更新データと現在表示中の画面の画像データとから画面の画像データを生成する。更新データは、画面の画像データの差分データであるからである。画像表示部２５は、生成した画面の画像データを、例えば、フレームバッファに書込み、出力装置２０４の一つであるディスプレイに表示させる。
【００４３】
なお、クライアント端末２の機能構成は、図４に示されるものに限定されない。第１実施形態では、図４に示される機能構成は、クライアント端末２のＣＰＵ  ２０１が仮想デスクトップクライアントプログラム２０５Ｐを実行することによって達成されるものとして説明されたが、これに限定されない。例えば、データ受信部２１、画像解凍部２４、画像表示部２５は、仮想デスクトップクライアントプログラム２０５Ｐによって達成され、受信帯域計測部２２、受信帯域送信部２３は、仮想デスクトップクライアントプログラム２０５Ｐとは異なるプログラムによって達成されてもよい。
【００４４】
図５は、受信計測結果記録テーブルの一例である。受信計測結果記録テーブルは、仮想デスクトップのデータの受信に関する計測結果を記録するテーブルである。受信計測結果記録テーブルは、例えば、クライアント端末２の主記憶装置２０２に格納されている。
【００４５】
受信計測結果記録テーブルの１エントリは、受信帯域計測部２２の１計測周期の計測結果に相当する。受信計測結果記録テーブルのエントリは、受信帯域計測部２２によって登録される。
【００４６】
受信計測結果記録テーブルの１エントリには、受信時刻、受信サイズ、受信時間の項目が含まれる。「受信時刻」は、計測周期の開始時刻である。「受信サイズ」は、当該計測周期中にクライアント端末２が受信した仮想デスクトップのデータのサイズである。「受信時間」は、当該計測周期の終了時刻から開始時刻を引いた値である。第１実施形態では、計測周期は２０ミリ秒と固定値が想定されているので、「受信時間」に格納される値はほぼ２０ミリ秒となる。
【００４７】
受信帯域送信部２３は、計測結果情報の送信指示の入力を受けると、受信計測結果記録テーブルを参照し、最新のエントリを受信レート情報として読み出し、サーバ１に送信する。受信レート情報は、「受信レートに係る情報」の一例である。
【００４８】
図６は、クライアント端末２の受信帯域計測部２２の処理のフローチャートの一例である。図６に示される処理は、クライアント端末２において仮想デスクトップクライアントプログラム２０５Ｐの起動を契機に開始される。図６に示される処理の主体は、仮想デスクトップクライアントプログラム２０５Ｐを実行するクライアント端末２のＣＰＵ  ２０１であるが、便宜上、機能構成要素である受信帯域計測部２２を主体として説明される。
【００４９】
ＯＰ１では、受信帯域計測部２２は、計測周期を２０ミリ秒、受信サイズを０に設定する。
【００５０】
ＯＰ２では、受信帯域計測部２２は、データ受信部１１からの仮想デスクトップのデータの入力を待機する。仮想デスクトップのデータがデータ受信部２１から入力されると（ＯＰ２：ＹＥＳ）、処理がＯＰ３に進む。仮想デスクトップのデータがデータ受信部２１から入力されない場合には（ＯＰ２：ＮＯ）、処理がＯＰ５に進む。
【００５１】
ＯＰ３では、受信帯域計測部２２は、受信サイズが０である場合に、受信開始時刻を現在時刻に設定する。受信サイズが０でない場合には、ＯＰ３の処理は省略される。
【００５２】
ＯＰ４では、受信帯域計測部２２は、受信サイズを更新する。受信サイズは、現在の受
信サイズの値に、受信したデータのサイズが加算されて更新される。
【００５３】
ＯＰ５では、受信帯域計測部２２は、現在時刻から受信開始時刻を引いた値が、計測周期以上であるか否かを判定する。現在時刻から受信開始時刻を引いた値が計測周期以上である場合には（ＯＰ５：ＹＥＳ）、処理がＯＰ６に進む。現在時刻から受信開始時刻を引いた値が計測周期未満である場合には（ＯＰ５：ＮＯ）、処理がＯＰ２に進み、ＯＰ２からＯＰ５の処理が繰り返し実行される。
【００５４】
ＯＰ６では、受信帯域計測部２２は、受信計測結果記録テーブルに計測結果を記録する。受信計測結果記録テーブルのエントリの「受信時刻」には、受信開始時刻が記録される。受信計測結果記録テーブルのエントリの「受信サイズ」には、現在の受信サイズが記録される。受信計測結果記録テーブルのエントリの「受信時間」には、現在時刻から受信開始時刻を引いた値が記録される。
【００５５】
ＯＰ７では、受信帯域計測部２２は、受信帯域送信部２３に、受信レート情報の送信指示を出力する。受信帯域送信部２３は、受信レート情報の送信指示を受けて、ＯＰ６において記録された受信計測結果記録テーブルの最新のエントリを受信レート情報としてサーバ１に送信する。
【００５６】
ＯＰ８では、受信帯域計測部２２は、受信サイズを０にリセットする。次に処理がＯＰ２に進み、ＯＰ２から処理が実行される。
【００５７】
なお、第１実施形態では、受信帯域送信部２３は、受信帯域計測部２２からの受信レート情報の送信指示の入力を受けて受信レート情報の送信を行うが、これに限定されない。例えば、受信帯域送信部２３は、受信帯域計測部２２からの送信指示に従うのではなく、受信帯域計測部２２の計測周期と同じ周期で、受信計測結果記録テーブルを参照し、最新のエントリから受信レート情報を取得して送信するようにしてもよい。
【００５８】
＜サーバの装置構成＞
図７は、サーバ１のハードウェア構成の一例を示す図である。サーバ１は、専用又は汎用のコンピュータである。サーバ１は、ハードウェア構成要素として、ＣＰＵ  １０１、主記憶装置１０２、入力装置１０３、出力装置１０４、補助記憶装置１０５、ネットワークインタフェース１０７を備え、これらはバス１０９によって電気的に接続されている。ＣＰＵ、１０１、主記憶装置１０２、入力装置１０３、出力装置１０４、補助記憶装置１０５、ネットワークインタフェース１０７は、クライアント端末２のＣＰＵ  ２０１、主記憶装置２０２、入力装置２０３、出力装置２０４、補助記憶装置２０５、ネットワークインタフェース２０７と、同様である。サーバ１は、「情報処理装置」の一例である。
【００５９】
サーバ１の補助記憶装置１０５には、仮想デスクトップサーバプログラム１０５Ｐが格納されている。仮想デスクトップサーバプログラム１０５Ｐは、サーバ１を仮想デスクトップのサーバとして動作させるためのプログラムである。
【００６０】
なお、サーバ１のハードウェア構成は、図７に示されるものに限定されない。サーバ１が専用のコンピュータである場合には、サーバ１は入力装置１０３、出力装置１０４を備えていなくとも良い。
【００６１】
図８は、サーバ１の機能構成の一例を示す図である。サーバ１は、機能構成要素として、画像生成部１１、更新画像取得部１２、送信済み画像バッファ１３、画像圧縮部１４、画像更新レート計測部１５、受信帯域反映部１６、制御部１７、送信レート計測部１８、画像送信部１９を備える。図８に示されるサーバ１の機能構成要素は、例えば、サーバ１
のＣＰＵ  １０１が補助記憶装置１０５に格納されている仮想デスクトップサーバプログラム１０５Ｐを実行することによって達成される機能構成である。図８に示される機能構成が、サーバ１のＣＰＵ  １０１が仮想デスクトップサーバプログラム１０５Ｐを実行することによって達成される場合には、仮想デスクトップサーバプログラム１０５Ｐは、「情報処理プログラム」の一例である。
【００６２】
画像生成部１１は、仮想デスクトップのクライアント端末２のディスプレイに表示される画面の画像データを生成する。画像生成部１１は、クライアント端末２からの仮想デスクトップの操作内容を受信した場合には、操作内容に応じて画面を遷移させ、遷移後の画面の画像データを生成する。画像生成部１１は、生成した画面の画像データを更新画像取得部１２に出力する。
【００６３】
更新画像取得部１２は、画像生成部１１から画面の画像データの入力を受ける。更新画像取得部１２は、画像生成部１１から入力される画面の画像データを監視している。送信済み画像バッファ１３には、クライアント端末２へ送信済みの画面の画像データのうち、最新の画面の画像データが格納されている。送信済み画像バッファ１３は、サーバ１の主記憶装置１０２内に生成される。
【００６４】
更新画像取得部１２は、画面の画像データに変更がある場合に、送信済みバッファに格納されている画面の画像データと、入力された画面の画像データとの差分データを更新データとして取得する。更新画像取得部１２は、更新データを画像圧縮部１４に出力する。
【００６５】
また、更新画像取得部１２は、制御部１７から、更新データの送信可否判定の結果の入力を受ける。更新データを送信することが判定された場合には、更新画像取得部１２は、当該更新データに対応する入力された画面の画像データを送信済み画像バッファ１３に格納して、クライアント端末２に送信済みの最新の画面の画像データを更新する。
【００６６】
更新データを送信しないことが判定された場合には、更新画像取得部１２は、当該更新データに対応する入力された画面の画像データを廃棄する。
【００６７】
画像圧縮部１４は、更新画像取得部１２から、更新データの入力を受ける。画像圧縮部１４は、入力された更新データを所定の画像圧縮アルゴリズムによって圧縮する。画像圧縮部１４は、圧縮処理後の更新データを画像更新レート計測部１５に出力する。
【００６８】
画像更新レート計測部１５は、画像圧縮部１４から圧縮された更新データの入力を受ける。画像更新レート計測部１５は、更新データの入力を監視し、入力される更新データの情報を更新テーブルに記録する。画像更新レート計測部１５は、更新データを制御部１７に出力する。画像更新レート計測部１５は、「情報処理装置」の「第１の取得部」の一例である。
【００６９】
受信帯域反映部１６は、クライアント端末２から所定の周期で送信される受信レート情報を受信する。受信帯域反映部１６は、受信レート情報を、受信レート情報テーブルに記録する。受信レート情報テーブルは、サーバ１の主記憶装置１０２に格納されており、クライアント端末２が保有する受信計測結果記録テーブルと同じデータ構造である。受信帯域反映部１６は、「情報処理装置」の「受信部」の一例である。
【００７０】
制御部１７は、画像更新レート計測部１５から更新データの入力を受ける。制御部１７は、更新データの送信タイミングを制御する。具体的には、制御部１７は、更新データの入力を受けると、当該更新データの送信可否を判定する。更新データを送信することを判定した場合には、制御部１７は、当該更新データを送信レート計測部１８に出力する。更
新データを送信しないことを判定した場合には、制御部１７は、当該更新データを廃棄する。また、制御部１７は、更新データの送信可否の判定結果を更新画像取得部１２に通知する。
【００７１】
制御部１７の更新データの送信可否の判定は、例えば、受信レート、送信レート、画像更新レートに基づいて判定される。受信レートは、受信レート情報テーブルに基づいて取得される。送信レートは、後述の送信計測結果記録テーブルに基づいて取得される。画像更新レートは、後述の画像更新テーブルに基づいて取得される。
【００７２】
制御部１７は、例えば、ｘ＝画像更新レートを受信レートで割った値、ｙ＝送信レートを受信レートで割った値を求め、ｘ＊ｙの値が定数β以上であるか否かを判定することによって、更新データの送信可否を判定する。ただし、更新データの送信可否の判定方法は、これに限定されない。例えば、送信レート、受信レート、画像更新レートは、複数の連続する計測周期の平均値であってもよい。制御部１７は、「情報処理装置」の「制御部」の一例である。
【００７３】
送信レート計測部１８は、制御部１７から、送信することが判定された更新データの入力を受ける。送信レート計測部１８は、更新データの入力を監視し、所定の計測周期で入力される更新データのサイズを計測する。送信レート計測部１８の計測周期は、例えば、２０ミリ秒である。ただし、送信レート計測部１８の計測周期はこれに限定されない。送信レート計測部１８は、計測結果を、後述の送信計測結果記録テーブルに記録する。送信レート計測部１８は、更新データを画像送信部１９に出力する。送信レート計測部１８は、「情報処理装置」の「第２の取得部」の一例である。
【００７４】
画像送信部１９は、送信レート計測部１８から更新データの入力を受ける。画像送信部１９は、クライアント端末２への更新データを送信バッファに格納する。画像送信部１９は、アプリケーション層の機能構成要素であるので、下位のレイヤとのデータ受け渡し用のバッファに更新データを格納することによって、アプリケーション層以下の層に送信処理が移行され、ネットワークに更新データが出力される。
【００７５】
なお、サーバ１の機能構成は、図８に示されるものに限定されない。第１実施形態では、図８に示される機能構成は、サーバ１のＣＰＵ  １０１が仮想デスクトップサーバプログラム１０５Ｐを実行することによって達成されるものとして説明されたが、これに限定されない。例えば、画像生成部１１、更新画像取得部１２、送信済み画像バッファ１３、画像圧縮部１４、画像送信部１９は、仮想デスクトップサーバプログラム１０５Ｐによって達成され、画像更新レート計測部１５、受信帯域反映部１６、制御部１７、送信レート計測部１８は、仮想デスクトップサーバプログラム１０５Ｐとは異なるプログラムによって達成されてもよい。画像更新レート計測部１５、受信帯域反映部１６、制御部１７、送信レート計測部１８が、仮想デスクトップサーバプログラム１０５Ｐとは異なるプログラムによって達成される場合には、当該プログラムは「情報処理プログラム」の一例である。
【００７６】
図９は、画像更新テーブルの一例である。画像更新テーブルは、更新データの生成レートに関する情報を格納するテーブルである。画像更新テーブルは、例えば、サーバ１の主記憶装置１０２に格納されている。
【００７７】
画像更新テーブルの１エントリには、経過時刻と未送信圧縮画像サイズの項目が含まれる。画像更新テーブルのエントリは、画像更新レート計測部１５に更新データが入力された場合に、画像更新レート計測部１５によって生成される。
【００７８】
「経過時間」の項目には、例えば、画像更新テーブルがクリアされてから当該更新データが画像更新レート計測部１５に入力されるまでの経過時間が格納される。ただし、これに限らない。画像更新テーブルは、例えば、更新データを送信することが判定された場合に制御部１７によってクリアされる。「未送信圧縮画像サイズ」には、更新データのサイズが格納される。
【００７９】
画像更新テーブルは、更新データを送信することが判定された場合に、制御部１７によって、全エントリが削除されてクリアされる。したがって、画像更新テーブルには、更新データが最後に送信されて以降の、送信されないことが判定された更新データの情報が格納されていることになる。また、画像更新テーブルの最新のエントリの「経過時間」の値は、最後にクライアント端末２に更新データが送信されてからの、更新データの未送信時間を示すことになる。画像更新テーブルに格納される情報は、「生成レートに関する情報」の一例である。
【００８０】
図１０は、送信計測結果記録テーブルの一例である。送信計測結果記録テーブルは、仮想デスクトップのクライアント端末２に送信することが判定された更新データに関する計測結果を記録するテーブルである。送信計測結果記録テーブルは、例えば、サーバ１の主記憶装置１０２に格納されている。
【００８１】
送信計測結果記録テーブルの１エントリは、送信レート計測部１８の１計測周期の計測結果に相当する。送信計測結果記録テーブルのエントリは、送信レート計測部１８によって生成される。
【００８２】
送信計測結果記録テーブルの１エントリには、送信時刻、送信サイズ、送信時間の項目が含まれる。「送信時刻」は、計測周期の開始時刻である。「送信サイズ」は、当該計測周期中に送信レート計測部１８に入力されたクライアント端末２へ送信することが判定された更新データのサイズである。「送信時間」は、当該計測周期の終了時刻から開始時刻を引いた値である。第１実施形態では、計測周期は２０ミリ秒と固定値が想定されているので、「送信時間」はほぼ２０ミリ秒となる。送信計測結果記録テーブルに記録される情報は、「送信レートに関する情報」の一例である。
【００８３】
第１実施形態では、便宜上、サーバ１と１台のクライアント端末２との仮想デスクトップの通信について説明されている。サーバ１が複数台のクライアント端末２と仮想デスクトップのセッションを確立する場合には、サーバ１は、各クライアント端末２（各セッション）について、受信レート情報テーブル、送信計測結果記録テーブル、画像更新テーブルを備え、更新データの送信可否の判定処理を行う。なお、受信レート情報テーブル、送信計測結果記録テーブル、画像更新テーブルのデータ構造は、第１実施形態において図示されるものに限定されない。
【００８４】
図１１は、サーバ１の受信帯域反映部１６の処理のフローチャートの一例である。図１１に示される処理は、仮想デスクトップサーバプログラム１０５Ｐが起動されるとともに開始される。図１１に示される処理の主体は、仮想デスクトップサーバプログラム１０５Ｐを実行するＣＰＵ  １０１であるが、便宜上、機能構成要素である受信帯域反映部１６を主体として説明する。以降のサーバ１の機能構成要素の処理のフローチャートについても同様とする。
【００８５】
ＯＰ１１では、受信帯域反映部１６は、クライアント端末２から受信レート情報の受信を待機する。クライアント端末２からの受信レート情報を受信すると（ＯＰ１１：ＹＥＳ）、処理がＯＰ１２に進む。
【００８６】
ＯＰ１２では、受信帯域反映部１６は、受信した受信レート情報を、受信レート情報テーブルに反映する。その後、処理がＯＰ１１に進み、ＯＰ１１からの処理が繰り返し実行される。
【００８７】
図１２は、サーバ１の更新画像取得部１２の処理のフローチャートの一例である。図１２に示される処理は、仮想デスクトップサーバプログラム１０５Ｐが起動されるとともに開始される。図１２に示される処理は、仮想デスクトップサーバプログラム１０５Ｐの稼働中、繰り返し実行される。
【００８８】
ＯＰ２１では、更新画像取得部１２は、画像生成部１１からの画像データの入力を待機する。画像生成部１１から画像データが入力された場合には（ＯＰ２１：ＹＥＳ）、処理がＯＰ２２に進む。
【００８９】
ＯＰ２２では、更新画像取得部１２は、入力された画像データと、送信済み画像バッファ１３に格納されている画像データとを比較し、差分があるか否かを判定する。入力された画像データと送信済み画像バッファ１３に格納されている画像データとに差分がある場合には（ＯＰ２２：ＹＥＳ）、処理がＯＰ２３に進む。入力された画像データと送信済み画像バッファ１３に格納されている画像データとに差分がない場合には（ＯＰ２２：ＮＯ）、処理がＯＰ２７に進む。
【００９０】
ＯＰ２３では、更新画像取得部１２は、入力された画像データと送信済み画像バッファ１３に格納されている画像データとの差分データを更新データとして取得する。ＯＰ２４では、更新画像取得部１２は、更新データを画像圧縮部１４に出力する。
【００９１】
ＯＰ２５では、更新画像取得部１２は、制御部１７からの送信判定処理の判定結果の入力を受けて、更新データが送信されることが判定されたか否かを判定する。更新データが送信されることが判定された場合には（ＯＰ２５：ＹＥＳ）、処理がＯＰ２６に進む。更新データが送信されないことが判定された場合には（ＯＰ２５：ＮＯ）、処理がＯＰ２７に進む。
【００９２】
ＯＰ２６では、更新画像取得部１２は、ＯＰ２１で入力された画像データで、送信済み画像バッファ１３に格納されている画像データを上書きする。その後、図１２に示される処理が終了する。
【００９３】
ＯＰ２７では、更新画像取得部１２は、ＯＰ２１で入力された画像データを廃棄する。その後、図１２に示される処理が終了する。
【００９４】
図１３は、サーバ１の画像更新レート計測部１５の処理のフローチャートの一例である。図１３に示される処理は、仮想デスクトップサーバプログラム１０５Ｐが起動されるとともに開始される。
【００９５】
ＯＰ３１では、画像更新レート計測部１５は、更新データの入力を待機する。画像圧縮部１４から更新データが入力されると（ＯＰ３１：ＹＥＳ）、処理がＯＰ３２に進む。
【００９６】
ＯＰ３２では、画像更新レート計測部１５は、入力された更新データの情報を画像更新テーブルに反映させる。より具体的には、画像更新レート計測部１５は、画像更新テーブルがクリアされてから更新データが入力されるまでの経過時間と更新データのサイズとを画像更新テーブルに記録する。その後、処理がＯＰ３１に進み、ＯＰ３１からの処理が繰り返し実行される。
【００９７】
図１４は、サーバ１の送信レート計測部１８の処理のフローチャートの一例である。図１４に示される処理は、仮想デスクトップサーバプログラム１０５Ｐが起動されるとともに開始される。
【００９８】
ＯＰ４１では、送信レート計測部１８は、計測周期を２０ミリ秒、送信サイズを０に設定する。なお、サーバ１の送信レートの計測周期とクライアント端末２の受信レートの計測周期とは、同じであっても異なっていてもよい。第１実施形態では、サーバ１の送信レートの計測周期と、クライアント端末２の受信レートの計測周期とは、同じ値に設定されることを想定する。
【００９９】
ＯＰ４２では、送信レート計測部１８は、制御部１７からの更新データの入力を待機する。送信レート計測部１８に入力される更新データは、圧縮処理されており、クライアント端末２に送信することが判定されている更新データである。送信レート計測部１８が更新データの入力を受けた場合には（ＯＰ４２：ＹＥＳ）、処理がＯＰ４３に進む。送信レート計測部１８が更新データの入力を受けない場合には（ＯＰ４２：ＮＯ）、処理がＯＰ４５に進む。
【０１００】
ＯＰ４３では、送信レート計測部１８は、送信サイズの値が０である場合に、送信開始時刻を現在時刻に設定する。送信サイズの値が０でない場合には、ＯＰ４３の処理は省略される。
【０１０１】
ＯＰ４４では、送信レート計測部１８は、送信サイズに入力された更新データのサイズを加算して、送信サイズを更新する。
【０１０２】
ＯＰ４５では、送信レート計測部１８は、現在時刻から送信開始時刻を引いた時間長が計測周期以上であるか否かを判定する。現在時刻から送信開始時刻を引いた時間長が計測周期以上である場合には（ＯＰ４５：ＹＥＳ）、処理がＯＰ４６に進む。現在時刻から送信開始時刻を引いた時間長が計測周期未満である場合には（ＯＰ４５：ＮＯ）、処理がＯＰ４２に進む。
【０１０３】
ＯＰ４６では、送信レート計測部１８は、送信時刻、送信サイズ、送信時間を送信計測結果記録テーブルに記録する。送信計測結果記録テーブルの送信時刻には、送信開始時刻が格納される。送信計測結果記録テーブルの送信サイズには、現在の送信サイズの値が格納される。送信計測結果記録テーブルの送信時間には、現在時刻から送信開始時刻を引いた時間長が格納される。
【０１０４】
ＯＰ４７では、送信レート計測部１８は、送信サイズを０にリセットする。その後、処理がＯＰ４２に進み、ＯＰ４２の処理から繰り返し実行される。
【０１０５】
図１５は、サーバ１の制御部１７の処理のフローチャートの一例である。図１５に示される処理は、仮想デスクトップサーバプログラム１０５Ｐが起動されるとともに開始される。図１５に示される処理は、仮想デスクトップサーバプログラム１０５Ｐが稼働中、繰り返し実行される。
【０１０６】
ＯＰ５１では、制御部１７は、画像更新レート計測部１５から更新データの入力を待機する。制御部１７が更新データの入力を受けた場合には（ＯＰ５１：ＹＥＳ）、処理がＯＰ５２に進む。
【０１０７】
ＯＰ５２では、制御部１７は、直近のｍ周期分（ｍは正の整数）の受信レートを取得し、ｍ周期分の受信レートの平均値を取得する。受信レート（ｒ）は、受信サイズ／受信時
間で求められる。受信サイズと受信時間とは、受信レート情報テーブルの各エントリから取得される。制御部１７は、受信レート情報テーブルの最新のｍ個のエントリそれぞれについて、受信レートを算出し、最新のｍ個のエントリの受信レートの平均値を取得する。以降、単に、受信レートという場合には、直近のｍ周期分の受信レートの平均値であるとする。
【０１０８】
ＯＰ５３では、制御部１７は、直近のｍ周期分の送信レートを取得し、ｍ周期分の送信レートの平均値を取得する。送信レート（ｓ）は、送信サイズ／送信時間で求められる。送信サイズと送信時間とは、送信計測結果記録テーブルの各エントリから取得される。制御部１７は、送信計測結果記録テーブルの最新のｍ個のエントリそれぞれについて、送信レートを算出し、最新のｍ個のエントリの送信レートの平均値を取得する。以降、単に、送信レートという場合には、直近のｍ周期分の送信レートの平均値であるとする。
【０１０９】
ＯＰ５４では、制御部１７は、画像更新レートを取得する。画像更新レート（ｉｍｇ）は、未送信の更新データサイズを未送信経過時間で割った値で求められる。制御部１７は、未送信の更新データサイズとして、画像更新テーブルの最新のエントリの「未送信圧縮画像サイズ」の値を取得する。制御部１７は、未送信経過時間として、画像更新テーブルの最新のエントリの「経過時間」の値を取得する。
【０１１０】
ＯＰ５５では、制御部１７は、送信判定処理を行う。送信判定処理の詳細については、後述される。
【０１１１】
ＯＰ５６では、送信判定処理によって、更新データを送信することが判定された場合には（ＯＰ５６：ＹＥＳ）、処理がＯＰ５７に進む。送信判定処理によって、更新データを送信しないことが判定された場合には（ＯＰ５６：ＮＯ）、処理がＯＰ５８に進む。
【０１１２】
ＯＰ５７では、更新データを送信することが判定されたので、制御部１７は、画像更新テーブルに格納されている全エントリを削除して、画像更新テーブルをクリアする。また、制御部１７は、送信レート計測部１８に更新データを出力する。
【０１１３】
ＯＰ５８では、更新データを送信しないことが判定されたので、制御部１７は、更新データを廃棄する。
【０１１４】
ＯＰ５９では、制御部１７は、更新データの送信の判定結果を更新画像取得部１２に通知する。その後、図１５に示される処理が終了する。
【０１１５】
図１６は、図１５のＯＰ５５の送信判定処理のフローチャートの一例である。ＯＰ６１では、制御部１７は、ｓ／ｒ、すなわち、送信レートを受信レートで割った値が定数α以下であるか否かを判定する。定数αは、例えば、０≦α＜２の範囲の値をとる。α＝０である場合には、ＯＰ６１の処理は省略される。
【０１１６】
送信レート（ｓ）を受信レート（ｒ）で割った値が十分に小さい場合には、ネットワークに十分な空き帯域があることが示される。そのため、ＯＰ６１では、ネットワークに十分な空き帯域が存在するか否かを判定している。
【０１１７】
ｓ／ｒが定数α以下である場合には（ＯＰ６１：ＹＥＳ）、処理がＯＰ６４に進み、ＯＰ６４では、制御部１７は、更新データを送信することを判定する。その後、図１６に示される処理が終了する。ｓ／ｒが定数αより大きい場合には（ＯＰ６１：ＮＯ）、処理がＯＰ６２に進む。
【０１１８】
ＯＰ６２では、制御部１７は、以下の数式１が満たされるか否かを判定する。α＝０である場合には、数式１は、送信レート（ｓ）を受信レート（ｒ）で割った値と画像更新レート（ｉｍｇ）を受信レート（ｒ）で割った値とを乗じるもの、すなわち、ｘ＊ｙ＜βになる。
【数１】
2018022998.tif 000003
【０１１９】
数式１が満たされる場合には（ＯＰ６２：ＹＥＳ）、処理がＯＰ６４に進み、ＯＰ６４では、制御部１７は、更新データを送信することを判定する。その後、図１６に示される処理が終了する。数式１が満たされない場合には（ＯＰ６２：ＮＯ）、処理がＯＰ６３に進み、ＯＰ６３では、制御部１７は、更新データを送信しないことを判定する。その後、図１６に示される処理が終了する。
【０１２０】
なお、図１５、図１６の例では、受信レート、送信レートについて、ｍ周期分の平均値を用いたが、これに限られず、最新の１周期分の受信レート、送信レートが用いられてもよい。
【０１２１】
＜第１実施形態の作用効果＞
図１７は、第１実施形態に係るサーバ１とクライアント端末２との仮想デスクトップのシミュレーション結果の画像更新レートを受信レートで割った値、送信レートを受信レートで割った値の時系列推移を示すグラフの一例である。図１７に示されるグラフでは、ｘ軸は画像更新レートを受信レートで割った値を示す。ｙ軸は、送信レートを受信レートで割った値を示す。シミュレーションでは、α＝０、β＝１．８に設定されている。
【０１２２】
図１７のシミュレーション結果では、画像更新レートを受信レートで割った値、送信レートを受信レートで割った値が送信スキップ領域に含まれることになった場合でも、しばらくすると、再度、画像更新レートを受信レートで割った値、送信レートを受信レートで割った値が送信可能領域に戻っている。これは、更新データの送信がスキップされたことで、送信レートが低下し、送信レートを受信レートで割った値（＝ｙ）も低下したためである。
【０１２３】
図１８は、通常の仮想デスクトップの通信と、第１実施形態に係るサーバ１とクライアント端末２との仮想デスクトップの通信と、シミュレーション結果の遅延を比較したグラフである。図１８の第１実施形態に係るサーバ１とクライアント端末２との仮想デスクトップの通信は、図１７に示されるシミュレーションと同じ仮想デスクトップの通信である。また、図１８の通常の仮想デスクトップの通信は、第１実施形態に係るサーバ１とクライアント端末２との仮想デスクトップの通信と、同じ条件下での通信である。同じ条件とは、例えば、サーバ１とクライアント端末２間の帯域変動及び通信遅延の変動、クライアント端末２から発生する操作内容及びサーバ１において生成される画面の画像データ、等が同じであることを示す。
【０１２４】
図１８では、実線が第１実施形態に係るサーバ１とクライアント端末２との仮想デスクトップの通信のシミュレーション結果を示す。点線が、通常の仮想デスクトップの通信のシミュレーション結果を示す。
【０１２５】
図１８の第１実施形態に係るサーバ１とクライアント端末２との仮想デスクトップの通信のシミュレーション結果の丸で囲まれている部分は、図１７に示されるシミュレーション結果の丸で囲まれている送信スキップ領域内にｘ、ｙの値が入っている部分に相当する。すなわち、図１８の丸で囲まれている部分は、サーバ１は更新データを送信していないので、遅延時間も０となっている。
【０１２６】
図１８に示されるように、第１実施形態に係るサーバ１とクライアント端末２との仮想デスクトップの通信では、通常の通信よりも遅延が小さくなる。
【０１２７】
したがって、第１実施形態によれば、送信レート、受信レート、画像更新レートに基づいて、更新データの送信可否を判定することで、サーバ１からクライアント端末２への更新データの送信の遅延を小さくすることができる。これによって、ユーザの体感するレスポンスの低下を抑制することができる。
【０１２８】
第１実施形態では、更新データの送信可否の判定の際に、送信レートを受信レートで割った値、画像更新レートを受信レートで割った値を用いた判別関数ｘ＊ｙ＝βを用いる。これによって、アプリケーション層から見た場合の送信タイミングの制御の指針とネットワーク層から見た場合の送信タイミングの制御の指針とのトレードオフに似た関係にある２つの指針を考慮し、より遅延が小さくなるように送信タイミングを制御することができる。
【０１２９】
また、第１実施形態では、送信レートを受信レートで割った値が十分小さい、すなわち、空き帯域が十分にあることが推定される場合には、更新データを送信する。これによって、空き帯域が十分にある場合には、判別関数ｘ＊ｙ＝βを用いた送信可否判定を行わずに済む。
【０１３０】
また、第１実施形態では、更新データをクライアント端末２に送信しないことが判定された場合には、当該更新データを廃棄する。これによって、廃棄された更新データに対応する画面の画像データはクライアント端末２には表示されないことになり、クライアント端末２では画面遷移が廃棄された更新データの画面分飛ばされることになる。しかしながら、更新データの遅延を少なくすることができるため、カーソルの動きが鈍い等のクライアント端末２のユーザの体感するレスポンスを低下させることは抑制できる。
【０１３１】
＜変形例＞
第１実施形態では、一般的な仮想デスクトップ技術に対して、更新データの送信可否判定を適用する場合について説明された。仮想デスクトップのアプリケーションでは、トランスポート層のプロトコルとして、ＵＤＰ（User Datagram Protocol）が用いられることが多い。変形例では、トランスポート層のプロトコルとして、ＵＤＰではなく、例えば、ＵＮＡＰ（Universal Network Acceleration Protocol）を用いる仮想デスクトップ技術
に更新データの送信可否判定を適用する場合について説明する。
【０１３２】
変形例では、第１実施形態と共通する説明は省略される。変形例では、受信レート及び送信レートの計測方法が、第１実施形態と異なる。
【０１３３】
図１９は、ＵＮＡＰのデータグラムのフォーマットを示す図である。ＵＮＡＰのヘッダには、パケット番号が含まれている。パケット番号は、パケットを特定するための番号である。一方、ＵＮＡＰのヘッダにはシーケンス番号も含まれている。シーケンス番号は、パケットの並びを特定するための番号であって、再送の際には、シーケンス番号は元の番号と同じ番号になる。パケット番号は、パケット自体を特定するための番号であるので、再送の際には、元のパケットの番号とは異なる番号が付与される。
【０１３４】
そのため、ＵＮＡＰのパケット番号を監視することによって、伝送途中で損失されたパケットを検出することができる。変形例では、サーバ１、クライアント端末２ともに、ＵＮＡＰのパケット番号を監視し、伝送途中で損失されたパケットについても考慮して、送信レート、受信レートを算出する。
【０１３５】
図２０は、変形例に係るクライアント端末２の受信計測結果記録テーブルの一例である。変形例に係る受信計測結果記録テーブルは、第１実施形態に係る受信計測結果記録テーブルとは、データ構造が異なる。
【０１３６】
変形例に係る受信計測結果記録テーブルのエントリには、区間番号、受信パケット数、受信サイズ、受信時間の項目が含まれる。「区間番号」には、計測区間の番号が格納される。計測区間は、パケット番号によって決められる。例えば、変形例では、計測区間のサイズは６４パケットであり、パケット番号で６４パケットごとに１区間となる。計測区間のサイズは、６４パケットに限定されない。
【０１３７】
「受信パケット数」には、当該計測区間で受信されたパケット数が格納される。「受信サイズ」には、当該計測区間で受信されたパケットの合計サイズが格納される。「受信時間」には、当該計測区間の時間長が格納される。
【０１３８】
図２１は、変形例に係るクライアント端末２の受信帯域計測部２２の処理のフローチャートの一例である。図２１に示される処理は、クライアント端末２において仮想デスクトップクライアントプログラム２０５Ｐの起動を契機に開始される。
【０１３９】
ＯＰ７１では、受信帯域計測部２２は、区間番号を１、区間単位を６４パケット、受信サイズを０、受信パケット数を０に設定する。区間単位は６４パケットに限定されない。
【０１４０】
ＯＰ７２では、受信帯域計測部２２は、仮想デスクトップのパケットの受信を待機する。受信帯域計測部２２が仮想デスクトップのパケットを受信すると（ＯＰ７２：ＹＥＳ）、処理がＯＰ７３に進む。受信帯域計測部２２はアプリケーション層の機能構成要素であるので、実際には、受信帯域計測部２２には、パケットではなく、パケットから復元されたデータが入力される。パケットの受信、受信パケットのサイズ、受信パケットのパケット番号等は、トランスポート層のＵＮＡＰからアプリケーション層の受信帯域計測部２２に通知される。
【０１４１】
ＯＰ７３では、受信帯域計測部２２は、受信パケット数が０である場合に、受信開始時刻を現在時刻に設定する。受信パケット数が０でない場合には、ＯＰ７３の処理は省略される。
【０１４２】
ＯＰ７４では、受信帯域計測部２２は、受信サイズと受信パケット数とを更新する。受信サイズは、現在の受信サイズの値に、受信したパケットのサイズが加算されて更新される。受信パケット数は、現在の受信パケット数の値に１が加算されて更新される。
【０１４３】
ＯＰ７５では、受信帯域計測部２２は、受信パケットのパケット番号が区間番号に区間単位を乗じた値以上の値であるか否かを判定する。受信パケットのパケット番号が区間番号に区間単位を乗じた値以上の値である場合には（ＯＰ７５：ＹＥＳ）、処理がＯＰ７６に進む。受信パケットのパケット番号が区間番号に区間単位を乗じた値未満の値である場合には（ＯＰ７５：ＮＯ）、処理がＯＰ７２に進み、ＯＰ７２からＯＰ７５の処理が繰り返し実行される。
【０１４４】
ＯＰ７６では、受信帯域計測部２２は、受信計測結果記録テーブルに計測結果を記録する。受信計測結果記録テーブルのエントリの「区間番号」、「受信パケット数」、及び、「受信サイズ」には、それぞれ、現在の値が記録される。受信計測結果記録テーブルのエントリの「受信時間」には、現在時刻から受信開始時刻を引いた値が記録される。
【０１４５】
ＯＰ７７では、受信帯域計測部２２は、受信帯域送信部２３に、受信レート情報の送信指示を出力する。受信帯域送信部２３は、受信レート情報の送信指示を受けて、ＯＰ７６において記録された受信計測結果記録テーブルの最新のエントリを受信レート情報としてサーバ１に送信する。
【０１４６】
ＯＰ７８では、受信帯域計測部２２は、現在の区間番号に１を加算して区間番号を更新する。また、受信帯域計測部２２は、受信パケット数、受信サイズを０にリセットする。次に処理がＯＰ７２に進み、ＯＰ７２から処理が実行される。
【０１４７】
図２２は、変形例に係るサーバ１の送信計測結果記録テーブルの一例である。変形例に係る送信計測結果記録テーブルは、第１実施形態に係る送信計測結果記録テーブルとは、データ構造が異なる。
【０１４８】
変形例に係る送信計測結果記録テーブルのエントリには、区間番号、送信パケット数、送信サイズ、送信時間の項目が含まれる。「区間番号」には、計測区間の番号が格納される。「送信パケット数」には、当該計測区間で送信されたパケット数が格納される。「送信サイズ」には、当該計測区間で送信されたパケットの合計サイズが格納される。「送信時間」には、当該計測区間の時間長が格納される。なお、サーバ１とクライアント端末２とで、計測区間のサイズは、同じである。
【０１４９】
変形例では、サーバ１の受信レート情報テーブルは、図２０のクライアント端末２の受信計測結果記録テーブルと同じデータ構造である。
【０１５０】
図２３は、変形例に係るサーバ１の送信レート計測部１８のフローチャートの一例である。図２３に示される処理は、仮想デスクトップサーバプログラム１０５Ｐが起動されるとともに開始される。
【０１５１】
ＯＰ８１では、送信レート計測部１８は、区間番号を１、区間単位を６４パケット、送信サイズを０、送信パケット数を０に設定する。区間単位は６４パケットに限定されない。
【０１５２】
ＯＰ８２では、送信レート計測部１８は、仮想デスクトップのパケットの送信を待機する。送信レート計測部１８がクライアント端末２へのパケットの送信を検出すると（ＯＰ８２：ＹＥＳ）、処理がＯＰ８３に進む。パケットの送信は、更新データが送信キューに格納された以降のアプリケーション層よりも下位の層の処理である。そのため、変形例では、送信レート計測部１８は、パケットの送信、送信パケットのサイズ、送信パケットのパケット番号等は、トランスポート層のＵＮＡＰからの通知によって取得する。
【０１５３】
ＯＰ８３では、送信レート計測部１８は、送信パケット数の値が０である場合に、送信開始時刻を現在時刻に設定する。送信パケット数の値が０でない場合には、ＯＰ８３の処理は省略される。
【０１５４】
ＯＰ８４では、送信レート計測部１８は、送信サイズに送信されたパケットのサイズを加算して、送信サイズを更新する。また、送信レート計測部１８は、送信パケット数に１を加算して、送信パケット数を更新する。
【０１５５】
ＯＰ８５では、送信レート計測部１８は、送信パケットのパケット番号が区間番号に区間単位を乗じた値以上の値であるか否かを判定する。送信パケットのパケット番号が区間番号に区間単位を乗じた値以上の値である場合には（ＯＰ８５：ＹＥＳ）、処理がＯＰ８６に進む。送信パケットのパケット番号が区間番号に区間単位を乗じた値未満の値である場合には（ＯＰ８５：ＮＯ）、処理がＯＰ８２に進み、ＯＰ８２からＯＰ８５の処理が繰り返し実行される。
【０１５６】
ＯＰ８６では、送信レート計測部１８は、区間番号、送信パケット数、送信サイズ、送信時間を送信計測結果記録テーブルに記録する。送信計測結果記録テーブルの送信時間には、現在時刻から送信開始時刻を引いた時間長が格納される。
【０１５７】
ＯＰ８７では、送信レート計測部１８は、区間番号に１を加算して区間番号を更新する。また、送信レート計測部１８は、送信パケット数及び送信サイズを０にリセットする。その後、処理がＯＰ８２に進み、ＯＰ８２の処理から繰り返し実行される。
【０１５８】
変形例では、制御部１７の処理は、第１実施形態とほぼ同様である。ただし、第１実施形態では、例えば、図１５のＯＰ５２、ＯＰ５３で、直近の過去のｍ周期分の受信レート、送信レートの平均値が求められていたが、変形例では、直近の過去のｍ区間分の受信レート、送信レートの平均値が求められる。それ以外の制御部１７の処理は、第１実施形態と同様である。
【０１５９】
変形例のように、パケットを特定するために付与されるパケット番号を利用して、受信レートを算出する場合には、伝送途中で損失されたパケットの存在を考慮することができる。具体的には、計測区間の単位が６４パケットで、１つのパケットが損失されている場合でも、１つの計測区間の受信レートは、実際に受信された６３パケットの合計サイズを６４パケット受信されているはずの時間長で割って算出される。一方、１つの計測区間の送信レートは、実際に送信された６４パケットの合計サイズを６４パケット送信された時間長で割って算出される。そのため、パケットロスが発生している場合には、第１実施形態に比べて、変形例の方が、受信レートと送信レートの値の乖離が大きくなる。したがって、変形例によれば、より正確にネットワークの空き帯域を推定することができる。
【０１６０】
なお、変形例は、ＵＮＡＰに限定されず、パケットを特定するパケット番号のような、パケットロスを検出可能なトランスポート層のプロトコルであれば適用可能である。なお、変形例では、送信レート計測部１８は、ＵＮＡＰから通知されるパケット送信の情報に基づいて送信パケットを計測するので、ＵＮＡＰによる送信処理が、「送信処理」の一例である。ＵＮＡＰによる送信処理は、例えば、データグラムにＵＮＡＰヘッダを付与して下位層のプロトコル（例えば、ＵＤＰ）にデータグラムを渡すこと等である。
【０１６１】
＜その他＞
第１実施形態では、仮想デスクトップ技術に適用する場合について説明されたが、第１実施形態で説明された技術は、送信の度にデータ量が変動するような技術、アプリケーションについて適用可能である。また、第１実施形態では、クライアント端末２にデータを送信しないことが判定された場合に、サーバ１は当該データを廃棄するが、クライアント端末２にデータを送信しないことが判定された場合のサーバ１の処理はこれに限定されない。例えば、サーバ１は、クライアント端末２にデータを送信しないことが判定された場合に、当該データをバッファ等に保持して当該データの送信を保留し、次に、クライアント端末２へデータを送信することが判定された場合に、バッファ内のデータも送信してもよい。
【０１６２】
＜記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０１６３】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ＲＯＭ（リードオンリーメモリ）等がある。さらに、ＳＳＤ（Solid State Drive）は、コンピュータ等から取り外し可能な記録媒体としても、コ
ンピュータ等に固定された記録媒体としても利用可能である。
【符号の説明】
【０１６４】
１        サーバ
２        クライアント端末
１１      画像生成部
１２      更新画像取得部
１３      送信済み画像バッファ
１４      画像圧縮部
１５      画像更新レート計測部
１６      受信帯域反映部
１７      制御部
１８      送信レート計測部
１９      画像送信部
２１      データ受信部
２２      受信帯域計測部
２３      受信帯域送信部
２４      画像解凍部
２５      画像表示部
１０１、２０１  ＣＰＵ
１０２、２０２  主記憶装置
１０５、２０５  補助記憶装置
１０７、２０７  ネットワークインタフェース
【図１】
2018022998.tif 000004
【図２】
2018022998.tif 000005
【図３】
2018022998.tif 000006
【図４】
2018022998.tif 000007
【図５】
2018022998.tif 000008
【図６】
2018022998.tif 000009
【図７】
2018022998.tif 000010
【図８】
2018022998.tif 000011
【図９】
2018022998.tif 000012
【図１０】
2018022998.tif 000013
【図１１】
2018022998.tif 000014
【図１２】
2018022998.tif 000015
【図１３】
2018022998.tif 000016
【図１４】
2018022998.tif 000017
【図１５】
2018022998.tif 000018
【図１６】
2018022998.tif 000019
【図１７】
2018022998.tif 000020
【図１８】
2018022998.tif 000021
【図１９】
2018022998.tif 000022
【図２０】
2018022998.tif 000023
【図２１】
2018022998.tif 000024
【図２２】
2018022998.tif 000025
【図２３】
2018022998.tif 000026