(57)【要約】【課題】パケットロスによるサービスへの悪影響を低減すること。【解決手段】処理装置１０は、入力された入力データを処理し、同期対象の装置へ所定の帯域で転送される出力データを出力する。また、処理装置１０は、処理部１２２によって出力される出力データの発生レートを計測する。また、処理装置１０は、計測結果に基づき、入力データの種別ごとにあらかじめ設定された条件が満たされ、かつ出力データの発生レートが帯域を下回るように、入力データの入力を制御する。【選択図】図１
2020127097.tif 000002
【特許請求の範囲】
【請求項１】
入力された入力データを処理し、同期対象の装置へ所定の帯域で転送される出力データを出力する処理部と、
前記処理部によって出力される前記出力データの発生レートを計測する計測部と、
前記計測部による計測結果に基づき、前記入力データの種別ごとにあらかじめ設定された条件が満たされ、かつ前記出力データの発生レートが前記帯域を下回るように、前記処理部への前記入力データの入力を制御する入力制御部と、
を有することを特徴とする処理装置。
【請求項２】
前記入力制御部は、さらに、前記処理部の処理速度を低下させる制御を行うことにより前記出力データの発生レートを低減させることを特徴とする請求項１に記載の処理装置。
【請求項３】
前記処理部は、前記入力データとして入力されたパケットを処理し、
前記入力制御部は、入力されたパケットを含むトラヒックのレートと前記出力データの発生レートとの相関に基づき、スケジューリング、ドロップ、シェーピングのうちの少なくともいずれかを用いて、前記処理部への前記入力データの入力を制御することを特徴とする請求項１又は２に記載の処理装置。
【請求項４】
前記入力制御部は、前記出力データの前記同期対象の装置への転送が、あらかじめ設定された前記処理部の処理を停止可能な許容時間内に完了するように、前記処理部への前記入力データの入力を制御することを特徴とする請求項１から３のいずれか１項に記載の処理装置。
【請求項５】
前記入力制御部は、さらに、前記出力データの発生レートがあらかじめ設定された上限値以下になるように前記処理部への前記入力データの入力を制御することを特徴とする請求項４に記載の処理装置。
【請求項６】
前記入力制御部は、前記出力データの転送に必要な前記処理部の停止時間が、前記許容時間を下回るように設定された前記上限値を用いて制御を行い、
また、前記帯域と、未同期の前記出力データの量と、前記入力データのフローごとの、対応する前記出力データの発生レートとに基づき、前記フローのうちの制御対象のフローに対する制御内容にしたがって制御を行うことを特徴とする請求項５に記載の処理装置。
【請求項７】
前記計測部は、前記処理部と同じ振る舞いをする疑似処理部が、疑似的に生成された入力データを処理することによって出力される出力データの発生レートを計測することを特徴とする請求項１に記載の処理装置。
【請求項８】
コンピュータによって実行されるソフトウェアの移動方法であって、
入力された入力データを処理し、同期対象の装置へ所定の帯域で転送される出力データを出力する処理ステップと、
前記処理ステップによって出力される前記出力データの発生レートを計測する計測ステップと、
前記計測ステップによる計測結果に基づき、前記入力データの種別ごとにあらかじめ設定された条件が満たされ、かつ前記出力データの発生レートが前記帯域を下回るように、前記処理ステップへの前記入力データの入力を制御する入力制御ステップと、
を含むことを特徴とする移動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理装置及び移動方法に関する。
【背景技術】
【０００２】
近年、ネットワーク機能仮想化技術が普及しつつある。ネットワーク機能仮想化技術では、仮想マシン内に実装されたネットワーク機能を用いてパケット処理が行われる。また、このような機能が仮想化されたシステムにおいては、稼働中の機能を別サーバに移動させ、引き続きパケット処理を行わせることができる。
【０００３】
機能を別のサーバに移動させ処理を引き継がせる場合、移動後に仮想マシンをクラッシュさせないために、移動前後のサーバで仮想マシンのバイナリレベルでの同期が必要になる。一方で、仮想マシンはパケット処理中に絶えずデータを更新する。このため、完全同期を達成するためにはこのような更新され続けるデータも同期する必要がある。
【０００４】
ここで、仮想マシンによるデータの更新スピードは速く、同期するデータをネットワーク帯域を使用して転送し終わった時点で、データの更新によりすでに送信したデータとは異なるデータが記録されている。よって、完全同期を達成するためには仮想マシンを停止させ、データ更新を起こさないようにする必要がある。この間、停止中の仮想マシンが処理していたパケットは、仮想マシンの同期が終了しパケット処理を再開するまでドロップされパケットロスが生じる。
【０００５】
これに対し、パケットロスを抑えるために、発生する同期データのうち大半のデータの発生レートが同期に使用するネットワーク帯域より小さい場合、停止中に転送するデータ量を減らす技術が提案されている（例えば、非特許文献１を参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】C.  Clark,  “Live  Migration  of  Virtual  Machines,”  Proceedings  of  the  2nd  Conference  on  Symposium  on  Networked  Systems  Design  &  Implementation  ,2005
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の技術には、パケットロスによるサービスへの悪影響が大きい場合があるという問題がある。ここで、パケット処理にともなうデータ更新頻度はパケット量に比例して多くなる傾向がある。また、現状のネットワーク技術では、同期用のネットワーク帯域が不足し、完全同期を行うことができない状況が多く発生する。この場合、従来の技術では、移動開始時点から仮想マシンを停止せざるを得ない。その間、パケットロスが生じる。
【０００８】
例えば、ゲームやビデオ会議等のリアルタイム性を要するアプリケーションが使用するフローでは、長いパケットロス時間は操作コマンドのミスや画像音声の劣化という形で利用者に認知される。このため、サービス移動開始時点から仮想マシンを停止させた場合、このようなリアルタイム性を要するアプリケーションを用いたサービスに悪影響が生じる。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、処理装置は、入力された入力データを処理し、同期対象の装置へ所定の帯域で転送される出力データを出力する処理部と、前記処理部によって出力される前記出力データの出力レートを計測する計測部と、前記計測部による計測結果に基づき、前記入力データの種別ごとにあらかじめ設定された条件が満たされ、かつ前記出力データの出力レートが前記帯域を下回るように、前記処理部への前記入力データの入力を制御する入力制御部と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、パケットロスによるサービスへの悪影響を低減することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１の実施形態に係るソフトウェア移動システムの構成の一例を示す図である。
【図２】図２は、第１の実施形態に係る処理装置の構成の一例を示す図である。
【図３】図３は、第１の実施形態に係る計算装置の構成の一例を示す図である。
【図４】図４は、フロー管理テーブルの一例を示す図である。
【図５】図５は、ソフトウェア移動システムによる処理全体の流れを説明するための図である。
【図６】図６は、入力レートと発生レートの相関について説明するための図である。
【図７】図７は、ポリシングについて説明するための図である。
【図８】図８は、シェーピングについて説明するための図である。
【図９】図９は、第１の実施形態に係るソフトウェア移動システムの処理の流れを示すフローチャートである。
【図１０】図１０は、第１の実施形態に係る計算処理装置の計算処理の流れを示すフローチャートである。
【図１１】図１１は、第２の実施形態に係る疑似処理装置の構成の一例を示す図である。
【図１２】図１２は、移動プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願に係る処理装置及び移動方法の実施形態を図面に基づいて詳細に説明する。なお、本発明は、以下に説明する実施形態により限定されるものではない。
【００１３】
［第１の実施形態の構成］
まず、図１を用いて、ソフトウェア移動システムの構成について説明する。図１に示すように、ソフトウェア移動システム１は、処理装置１０及び計算装置２０を有する。また、処理装置１０は、入力制御部１２１、処理部１２２及びレート計測部１２４を有する。また、計算装置２０は、管理部２２１及び計算部２２２を有する。なお、各部の詳細については、後に各装置の構成とともに説明する。
【００１４】
ここで、処理装置１０は、サービスを提供するためのアプリケーションを実行する。ここでのサービスには、ゲーム、ビデオ会議、Ｗｅｂサイト、テキストメッセージ配信等が含まれる。処理装置１０は、種々のデータの入力を受け付け、入力されたデータを処理し、出力データを出力する。
【００１５】
また、ソフトウェア移動システム１は、処理装置１０の機能を他の装置に引き継がせるためのシステムである。引き継ぎのために処理装置１０から同期対象の装置にデータを転送している間も、処理部１２２は出力データを出力し続ける。このため、データの転送中は処理部１２２のデータの出力を制御する必要がある。
【００１６】
そこで、入力制御部１２１は、入力データの処理部１２２への入力を制御することで、処理部１２２による出力データの出力を制御する。一方で、出力データの種別によっては、処理部１２２の出力データに制限をかけることが望ましくない場合がある。例えば、ゲームやビデオ会議等のリアルタイム性が求められるサービスに関する出力データには、なるべく制限をかけないほうが望ましい。一方で、ファイル転送やメール配信等のリアルタイム性が求められないサービスに関する出力データには、多少の制限は許容されることが考えられる。そこで、入力制御部１２１は、データの種別によって制御の方法を変化させることができる。
【００１７】
図１の例では、例えば、入力制御部１２１は、優先度が高いデータをそのまま処理部１２２へ入力し、優先度が中くらいのデータには一部破棄及びタイミングの遅延等により制限をかけて処理部１２２へ入力し、優先度が低いデータを破棄する。
【００１８】
次に、図２を用いて、第１の実施形態に係る処理装置の構成について説明する。図２は、第１の実施形態に係る処理装置の構成の一例を示す図である。図２に示すように、処理装置１０は、入出力インタフェース１１、制御部１２及び記憶部１３を有する。
【００１９】
入出力インタフェース１１は、データの入力及び出力のためのインタフェースである。例えば、入出力インタフェース１１はＮＩＣ（Network  Interface  Card）である。また、入出力インタフェース１１は、例えばマウスやキーボード等の入力装置であってもよい。
【００２０】
制御部１２は、処理装置１０全体を制御する。制御部１２は、例えば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路である。また、制御部１２は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部１２は、各種のプログラムを実行する。例えば、制御部１２は、入力制御部１２１、処理部１２２、フロー計測部１２３、レート計測部１２４及び解析部１２５を有する。
【００２１】
入力制御部１２１は、入力制御ポリシーに従い、処理部１２２への入力データの入力を制御する。また、入力制御ポリシーは、計算装置２０によって計算される。計算装置２０は、後述するレート計測部１２４による計測結果に基づき、入力データの種別ごとにあらかじめ設定された条件が満たされ、かつ出力データの発生レートが帯域を下回るように、入力制御ポリシーを計算する。これは、発生レートが同期用の帯域を上回った場合、未同期の出力が増加し続け、同期が完了しないためである。
【００２２】
処理部１２２は、入力された入力データを処理し、同期対象の装置へ所定の帯域で転送される出力データを出力する。入力データは、データパケットであってもよいし、データパケットが送受信されるレイヤよりも低いレイヤや、ＨＴＴＰ（Hypertext  Transfer  Protocol）やＭＱＴＴ（Message  Queuing  Telemetry  Transport）等の高位レイヤを介して装置間でやり取りされる所定の信号やメッセージであってもよい。本実施形態では、入力データがデータパケットであるものとする。また、以降の説明では、データパケットを単にパケットと呼ぶ場合がある。
【００２３】
また、同期対象の装置では、処理部１２２と等価の構成が再現されることになる。このため、処理部１２２は、移動対象のアプリケーション、移動対象のソフトウェア等ということができる。
【００２４】
フロー計測部１２３は、処理部１２２に入力される入力データのレートを計測する。例えば、フロー計測部１２３は、入力データのレートとして、ビットレート及び単位時間当たりのパケット数等を計測する。
【００２５】
レート計測部１２４は、処理部１２２によって出力される出力データの発生レートを計測する。例えば、レート計測部１２４は、発生レートとして、処理部１２２の出力に対するメモリページの単位時間当たりの増加量を計測する。
【００２６】
解析部１２５は、フロー計測部１２３による計測結果及びレート計測部１２４による計測結果を基に、入力データの種別ごとの発生レートを計算する。例えば、入力データがパケットである場合、種別はフローである。つまり、解析部１２５は、フローごとの、処理部１２２から出力される出力データの発生レートを計算する。また、各計測結果に基づく解析部１２５による解析結果は、計算装置２０に受け渡される。
【００２７】
記憶部１３は、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、光ディスク等の記憶装置である。なお、記憶部１３は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）等のデータを書き換え可能な半導体メモリであってもよい。
【００２８】
記憶部１３は、処理装置１０で実行されるＯＳ（Operating  System）や各種プログラム、及びプログラムの実行で用いられる各種情報をプログラム情報１３１として記憶する。また、記憶部１３は作業用メモリ１３２を有する。
【００２９】
作業用メモリ１３２には、処理部１２２から出力される出力データが書き込まれる。また、同期の際には、プログラム情報１３１に含まれるデータのうちの処理部１２２を構成するためのデータ、及び作業用メモリ１３２に書き込まれた出力データが同期対象の装置に転送される。
【００３０】
ここで、図３を用いて、第１の実施形態に係る計算装置の構成について説明する。図３は、第１の実施形態に係る計算装置の構成の一例を示す図である。図３に示すように、計算装置２０は、入出力インタフェース２１、制御部２２及び記憶部２３を有する。
【００３１】
入出力インタフェース２１は、データの入力及び出力のためのインタフェースである。例えば、入出力インタフェース２１はＮＩＣである。また、入出力インタフェース２１は、例えばマウスやキーボード等の入力装置であってもよい。例えば、入出力インタフェース２１によれば、計算装置２０は、処理装置１０との間でデータのやり取りを行うことができる。
【００３２】
制御部２２は、計算装置２０全体を制御する。制御部２２は、例えば、ＣＰＵ、ＭＰＵ等の電子回路や、ＡＳＩＣ、ＦＰＧＡ等の集積回路である。また、制御部２２は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部２２は、各種のプログラムを実行する。例えば、制御部２２は、管理部２２１及び計算部２２２を有する。
【００３３】
管理部２２１は、後述するフロー管理テーブル２３２の管理を行う。具体的には、管理部２２１は、自動的に又はユーザの操作に応じて、フロー管理テーブル２３２の各レコードの登録、削除、更新等を行う。
【００３４】
計算部２２２は、処理装置１０から受け取った発生レート及びフロー管理テーブル２３２の情報を基に、入力制御ポリシーを計算する。また、計算部２２２は、計算した入力制御ポリシーを処理装置１０に通知する。
【００３５】
記憶部２３は、ＨＤＤ、ＳＳＤ、光ディスク等の記憶装置である。なお、記憶部２３は、ＲＡＭ、フラッシュメモリ、ＮＶＳＲＡＭ等のデータを書き換え可能な半導体メモリであってもよい。
【００３６】
記憶部２３は、計算装置２０で実行されるＯＳや各種プログラム、及びプログラムの実行で用いられる各種情報をプログラム情報２３１として記憶する。また、記憶部２３はフロー管理テーブル２３２を有する。
【００３７】
図４を用いて、フロー管理テーブルについて説明する。図４は、フロー管理テーブルの一例を示す図である。図４に示すように、フロー管理テーブル２３２には、入力制御ポリシーに関する情報がフロー単位で規定されている。ここで、フローは、入力データの種別の一例である。フローは、例えば、送信元ＩＰアドレス、送信元ポート、宛先ＩＰアドレス、宛先ポート等が一致するパケットの集合である。
【００３８】
また、図４に示すように、入力制御ポリシーに関する情報には、優先度、ドロップ率、送信帯域等が含まれる。例えば、優先度は、「高」、「中」、「低」のいずれかであり、関連するサービスのリアルタイム性等によりあらかじめ決定される。また、ドロップ率及び送信帯域は、後述入力制御のための各手法を実行する際に必要な情報である。
【００３９】
図４の例では、例えば、送信元ＩＰアドレスが「192.0.2.11」、送信元ポートが「8080」、送信元ＩＰアドレスが「192.0.2.21」であるフローの優先度は「高」である。また、例えば、送信元ＩＰアドレスが「192.0.2.13」であるフローの優先度は「低」であり、ドロップ率は「０．４」、送信帯域は「１」である。なお、ドロップ率及び送信帯域は、入力データの種別ごとにあらかじめ設定された条件の一例である。
【００４０】
図５を用いて、ソフトウェア移動システム１による処理全体の流れを説明する。図５は、ソフトウェア移動システムによる処理全体の流れを説明するための図である。図５に示すように、処理装置１０には、フロー５１、フロー５２及びフロー５３が入力される。ここで、フロー５１の優先度は「低」であるものとする。また、フロー５２の優先度は「中」であるものとする。また、フロー５３の優先度は「高」であるものとする。
【００４１】
図５の（１）に示すように、フロー計測部１２３は、入力されたフローのトラヒックのレートを計測し、計測結果を解析部１２５に通知する。また、図５の（２）に示すように、処理部１２２は、入力されたフローを用いて処理を行い、その結果出力した出力データを作業用メモリ１３２に書き込む。
【００４２】
そして、図５の（３）に示すように、レート計測部１２４は、作業用メモリ１３２を参照し、出力データの発生レートを計測し、計測結果を解析部１２５に通知する。ここで、図５の（４）に示すように、解析部１２５は、入力されたフローごとの発生レートを計算し、計算した結果を計算装置２０に通知する。
【００４３】
図５の（５）に示すように、計算装置２０は、通知された発生レートを基に入力制御ポリシーを計算する。そして、計算装置２０は、入力制御ポリシーを処理装置１０に通知する。
【００４４】
ここで、解析部１２５は、例えば入力データのトラヒックのレートである入力レートと出力データの発生レートとの相関を計算する。図６は、入力レートと発生レートの相関について説明するための図である。図６に示すように、フロー計測部１２３は、「64Bytes  flow」について、入力レートが100,000pps（Packets  per  second）から200,000ppsまでの範囲であることを計測したものとする。また、レート計測部１２４は、入力レートが100,000ppsから200,000ppsまでの範囲であるときの発生レートを計測したものとする。
【００４５】
このとき、解析部１２５は、入力レートと発生レートの相関を計算する。そして、計算装置２０は、解析部１２５によって計算された相関に基づき、入力レートが100,000pps（Packets  per  second）から200,000ppsまでの範囲にない場合の発生レートを推定することができる。計算装置２０は、このように推定された発生レートを基に入力制御ポリシーを計算してもよい。
【００４６】
ここで、入力制御部１２１は、入力制御ポリシーにしたがい、様々な手法で入力制御を行うことができる。例えば、入力制御部１２１は、処理部１２２への入力を制御するだけでなく、さらに、処理部１２２の処理速度を低下させる制御を行うことにより出力データの発生レートを低減させることができる。例えば、入力制御部１２１は、処理部１２２へのプロセッサ時間の割り当てを制限すること等により処理速度を低下させることができる。
【００４７】
また、入力制御部１２１は、出力データの同期対象の装置への転送が、あらかじめ設定された処理部１２２の処理を停止可能な許容時間内に完了するように、処理部１２２への入力データの入力を制御する。ここで、許容時間は、優先度が高いフローに対して許容されているフロー断時間である。
【００４８】
また、入力制御部１２１は、さらに、出力データの発生レートがあらかじめ設定された上限値以下になるように処理部１２２への入力データの入力を制御する。入力制御部１２１は、発生レートが少なくとも同期用の帯域を上回らないように制限する。この場合、同期用の帯域が閾値である。
【００４９】
さらに、入力制御部１２１は、許容時間による制御及び発生レートの上限値による制御を組み合わせることができる。すなわち、入力制御部１２１は、出力データの転送に必要な処理部１２２の停止時間が、許容時間を下回るように設定された上限値を用いて制御を行う。
【００５０】
また、このとき、入力制御部１２１は、帯域と、未同期の出力データの量と、入力データのフローごとの、対応する出力データの発生レートとに基づき、フローのうちの制御対象のフローに対する制御内容にしたがって制御を行う。例えば、入力制御部１２１は、優先度が低いフローであっても、帯域に余裕がある場合や、未同期の出力データ量がない場合には、当該フローの入力制御を行わないようにしてもよい。また、入力制御部１２１は、優先度が中くらいのフローについては、未同期の出力データの量に応じて制御を行うか否かを決定するようにしてもよい。
【００５１】
入力制御部１２１は、優先制御及び帯域制御等により入力制御を実現する。優先制御は、フローに優先度を与え、優先度が高いフローのパケットを優先的に送信するよう、キューを用いて制御を行う方法である。優先制御は、スケジューリングの一例である。例えば、優先制御には、重み付フェアキューイング、重み付ラウンドロビン等がある。また、帯域制御は、フローごとに送信許容帯域を設け、許容帯域を越えないよう、フローのパケットのドロップ（ポリシング）又は出力タイミングの変更（シェーピング）等を行う方法である。例えば、帯域制御には、ランダムドロップ、リーキバケット、トークンバケット等がある。
【００５２】
本実施形態では、入力制御部１２１は、入力されたパケットを含むトラヒックのレートと出力データの発生レートとの相関に基づき、スケジューリング、ドロップ（ポリシング）、シェーピングのうちの少なくともいずれかを用いて、処理部１２２への入力データの入力を制御する。
【００５３】
具体的には、入力制御部１２１は、優先制御とビットレート又は単位時間当たりのパケット数に対する帯域制御のいずれかを組み合わせて入力制御を行う。例えば、入力制御部１２１は、優先制御と、ポリシング及びシェーピングのいずれかと、を組み合わせる。
【００５４】
図７を用いてポリシングについて説明する。図７の（１）に示すように、計算装置２０は、フローごとの優先度及びドロップ率を処理装置１０に指示する。計算装置２０は、フロー管理テーブル２３２を参照しフローごとの優先度及びドロップ率を決定することができる。
【００５５】
図５の場合と同様に、フロー５１の優先度は「低」であるものとする。また、フロー５２の優先度は「中」であるものとする。また、フロー５３の優先度は「高」であるものとする。このとき、例えば、計算装置２０は、フロー５１、フロー５２及びフロー５３の入力レートの比率が１：２：３であり、発生レートの上限値が300,000ppsであり、フロー５３のパケットがドロップしないようなドロップ率を計算し、処理装置１０に通知する。
【００５６】
そして、図７の（２）に示すように、処理装置１０は、各フローに対しドロップ率を登録し、フロー５３を最優先で送出し、フロー５１及びフロー５２については優先度に基づく重みにしたがう送出スケジュールにより送出する。
【００５７】
これにより、例えば、図７のブランク５２１及び５２２に示す位置に入力されるはずであったパケットが、入力制御部１２１によりドロップされる。この結果、処理部１２２によるフロー５３を入力とする処理の出力データが削減され、発生レートが低下する。一方で、優先度が「低」であるフローは、リアルタイム性が要求されないサービスに関するものであるため、サービスへの悪影響は抑えられる。
【００５８】
図８を用いてシェーピングについて説明する。図８の（１）に示すように、計算装置２０は、フローごとの優先度及び送信帯域を処理装置１０に指示する。計算装置２０は、フロー管理テーブル２３２を参照しフローごとの優先度及び送信帯域を決定することができる。
【００５９】
図５の場合と同様に、フロー５１の優先度は「低」であるものとする。また、フロー５２の優先度は「中」であるものとする。また、フロー５３の優先度は「高」であるものとする。このとき、例えば、計算装置２０は、フロー５１及びフロー５２の入力レートの比率が１：２であり、発生レートの上限値が300,000ppsであり、フロー５３のパケットが遅延しないような送信帯域を計算し、処理装置１０に通知する。
【００６０】
そして、図８の（２）に示すように、処理装置１０は、各フローに対し送信帯域を登録し、フロー５３を最優先で送出し、フロー５１及びフロー５２については優先度に基づく重みにしたがう送出スケジュールにより送出する。
【００６１】
このとき、例えば、入力制御部１２１は、トークンバケット５１５及びトークンバケット５２５にトークンを保持し、フロー５１及びフロー５２の送出を遅延させる。この結果、図７の場合と同様に、処理部１２２によるフロー５３を入力とする処理の出力データが削減される。
【００６２】
［第１の実施形態の処理］
図９を用いて、ソフトウェア移動システム１の処理の流れを説明する。図９は、第１の実施形態に係るソフトウェア移動システムの処理の流れを示すフローチャートである。図９に示すように、まず、処理装置１０は、入力フローを計測する（ステップＳ１１）。次に、処理装置１０は、入力フローを基に処理を実行する（ステップＳ１２）。ここで、処理装置１０は、処理の結果として出力データを出力する。そして、処理装置１０は、出力データの発生レートを計測する（ステップＳ１３）。
【００６３】
計算装置２０は、フロー及び計測結果を基に制御ポリシーを計算する（ステップＳ１４）。処理装置１０は、計算装置２０によって計算された制御ポリシーに基づき入力制御を実行する（ステップＳ１５）。
【００６４】
また、図１０を用いて、計算装置２０による計算処理の流れを説明する。図１０は、第１の実施形態に係る計算処理装置の計算処理の流れを示すフローチャートである。図１０に示すように、計算装置２０は、未同期データ量、ソフトウェアの同期帯域、及び低優先の許容可能断時間を取得する（ステップＳ１０１）。
【００６５】
未同期データ量は時間の経過とともに変化する情報なので、計算装置２０は、一定時間ごとに処理装置１０から未同期データ量を取得するようにしてもよい。また、ソフトウェアの同期帯域及び低優先の許容可能断時間は時間の経過とともに変化しないため、計算装置２０は、ソフトウェアの同期帯域及び低優先の許容可能断時間をあらかじめ取得しておいてもよい。
【００６６】
次に、計算装置２０は、最適な発生レートを計算する（ステップＳ１０２）。また、計算装置２０は、最適な発生レートを基にメモリページの上書き上限を計算する（ステップＳ１０３）。そして、計算装置２０は、上書き上限を基に制御ポリシーを計算する（ステップＳ１０４）。最適な発生レートとは、出力データの転送に必要な処理部１２２の停止時間が、許容時間を超えないような発生レートである。
【００６７】
［第１の実施形態の効果］
これまで説明したように、実施形態の処理装置１０は、入力された入力データを処理し、同期対象の装置へ所定の帯域で転送される出力データを出力する。また、処理装置１０は、処理部１２２によって出力される出力データの発生レートを計測する。また、処理装置１０は、計測結果に基づき、入力データの種別ごとにあらかじめ設定された条件が満たされ、かつ出力データの発生レートが帯域を下回るように、入力データの入力を制御する。このように、処理装置１０は、入力データの種別（例えばパケットのフロー）に応じた条件（例えば優先度）に基づき入力制御を行うことが可能になる。例えば、対応するサービスのリアルタイム性に応じて優先度を設定することができるため、実施形態によれば、パケットロスによるサービスへの悪影響を低減することが可能になる。特に、入力データがパケットである場合、フローに応じたフロー断時間の差別化の実現と、フロー断時間の最低値を指定どおりの時間にすることが可能になる。
【００６８】
入力制御部１２１は、さらに、処理部１２２の処理速度を低下させる制御を行うことにより出力データの発生レートを低減させる。このため、実施形態によれば、入力の制御及び処理速度の制御の両方により発生レートを低減させることができる。
【００６９】
処理装置１０は、入力データとして入力されたパケットを処理する。また、処理装置１０は、入力されたパケットを含むトラヒックのレートと出力データの発生レートとの相関に基づき、スケジューリング、ドロップ、シェーピングのうちの少なくともいずれかを用いて、入力データの入力を制御する。このため、実施形態によれば、パケットの送信を制御する手法を利用して入力制御を行うことが可能になる。
【００７０】
処理装置１０は、出力データの同期対象の装置への転送が、あらかじめ設定された処理部１２２の処理を停止可能な許容時間内に完了するように、入力データの入力を制御する。このため、実施形態によれば、出力データの同期が間に合わず許容時間を超えることを防止することができる。
【００７１】
処理装置１０は、さらに、出力データの発生レートがあらかじめ設定された上限値以下になるように処理部１２２への入力データの入力を制御する。このため、実施形態によれば、上限値を設定することで入力制御を容易に実現することができる。
【００７２】
処理装置１０は、出力データの転送に必要な処理部１２２の停止時間が、許容時間を下回るように設定された上限値を用いて制御を行う。また、処理装置１０は、帯域と、未同期の出力データの量と、入力データのフローごとの、対応する出力データの発生レートとに基づき、フローのうちの制御対象のフローに対する制御内容にしたがって制御を行う。このため、実施形態によれば、フロー断時間が許容時間を超えない上限値を設定することで、入力制御を最低限に抑えることができる。
【００７３】
［第２の実施形態］
第２の実施形態について説明する。なお、第２の実施形態に係る処理装置１０の基本的な構成は、第１の実施形態に係る処理装置１０の構成と同様である。以下では、第２の実施形態に係る処理装置１０の構成のうち、第１の実施形態に係る処理装置１０の構成と同様であるものについては適宜説明を省略する。
【００７４】
第２の実施形態では、疑似処理装置３０が、処理装置１０の処理部１２２の処理を疑似的に実行する。そして、発生レートの計測は、疑似処理装置３０の実行結果を対象に行われる。
【００７５】
図１１を用いて、疑似処理装置３０について説明する。図１１は、第２の実施形態に係る疑似処理装置の構成の一例を示す図である。図１１に示すように、疑似処理装置３０は、疑似フロー生成部３１、制御部３２及び記憶部３３を有する。
【００７６】
疑似フロー生成部３１は、疑似的な入力データを生成する。例えば、疑似フロー生成部３１は、実際に処理装置１０に入力されるフローをコピーすることで疑似的な入力データを生成してもよい。また、疑似フロー生成部３１は、処理装置１０に入力されるフローと同様の傾向を持つフローを生成してもよい。
【００７７】
制御部３２は、疑似処理部３２１、フロー計測部３２２及びレート計測部３２３を有する。疑似処理部３２１、フロー計測部３２２、レート計測部３２３は、それぞれ第１の実施形態の処理装置１０の処理部１２２、フロー計測部１２３及びレート計測部１２４と同じ振る舞いをする。ただし、疑似処理部３２１には、疑似フロー生成部３１によって生成された入力データが入力される。
【００７８】
疑似処理部３２１は、疑似フロー生成部３１によって生成された入力データを処理し、出力データを出力する。また、フロー計測部３２２は、疑似処理部３２１に入力される入力データのレートを計測する。また、レート計測部３２３は、疑似処理部３２１が、入力データを処理することによって出力される出力データの発生レートを計測する。
【００７９】
また、疑似処理装置３０は、各計測結果を処理装置１０の解析部１２５に受け渡す。また、疑似処理装置３０は、処理装置１０の解析部１２５と同じ振る舞いをする解析部を有していてもよい。その場合、疑似処理装置３０は、解析結果を計算装置２０に受け渡す。
【００８０】
また、記憶部３３のプログラム情報３３１及び作業用メモリ３３２についても、処理装置１０のプログラム情報１３１及び作業用メモリ１３２と同様の機能を有する。
【００８１】
第１の実施形態の方法で入力データ及び出力データの計測を行う場合、処理装置１０のトラヒックフローに負荷等が発生することが考えられる。処理装置１０は、実際にサービスの提供に使用されるため、なるべく計測処理の影響を与えないことが望ましい。そこで、第２の実施形態によれば、サービス提供中の処理装置のトラヒックフローに影響を与えずに、入力に対する同期対象データの発生レートの情報を得ることが可能になる。
【００８２】
［その他の実施形態］
第１の実施形態における処理装置１０に入力されるデータは、実際のサービス提供において発生するデータであってもよいし、量や種類を変更しながら人為的に発生させたデータであってもよい。人為的に発生させることで、多様なケースの計測情報を得ることができるため、各状況により適した入力制御ポリシーの計算が可能になる。
【００８３】
また、図７及び図８の例では、帯域制御を単位時間当たりのパケット数（単位：pps）に対して行うものとして説明した。一方で、入力制御ポリシーは、優先制御と、ビットレートに対する帯域制御及び単位時間当たりのパケット数に対する帯域制御のいずれかと、を組み合わせたものであってもよい。
【００８４】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散及び統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散又は統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８５】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８６】
［プログラム］
一実施形態として、処理装置１０は、パッケージソフトウェアやオンラインソフトウェアとして上記の移動処理を実行する移動プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の移動プログラムを情報処理装置に実行させることにより、情報処理装置を処理装置１０として機能させることができる。ここで言う情報処理装置には、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistant）等のスレート端末等がその範疇に含まれる。
【００８７】
図１２は、移動プログラムを実行するコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【００８８】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【００８９】
ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、処理装置１０の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、処理装置１０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤにより代替されてもよい。
【００９０】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０は、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した実施形態の処理を実行する。
【００９１】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００９２】
１  ソフトウェア移動システム
１０  処理装置
２０  計算装置
３０  疑似処理装置
１１、２１  入出力インタフェース
１２、２２、３２  制御部
１３、２３、３３  記憶部
３１  疑似フロー生成部
５１、５２、５３  フロー
１２１  入力制御部
１２２  処理部
１２３、３２２  フロー計測部
１２４、３２３  レート計測部
１２５  解析部
１３１、２３１、３３１  プログラム情報
１３２、３３２  作業用メモリ
２２１  管理部
２２２  計算部
２３２  フロー管理テーブル
３２１  疑似処理部
５１５、５２５  トークンバケット
５２１、５２２  ブランク
【図１】
2020127097.tif 000003
【図２】
2020127097.tif 000004
【図３】
2020127097.tif 000005
【図４】
2020127097.tif 000006
【図５】
2020127097.tif 000007
【図６】
2020127097.tif 000008
【図７】
2020127097.tif 000009
【図８】
2020127097.tif 000010
【図９】
2020127097.tif 000011
【図１０】
2020127097.tif 000012
【図１１】
2020127097.tif 000013
【図１２】
2020127097.tif 000014