(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-20
(45)【発行日】2022-12-28
(54)【発明の名称】処理装置及び移動方法
(51)【国際特許分類】
H04L 47/20 20220101AFI20221221BHJP
H04L 47/22 20220101ALI20221221BHJP
H04L 47/31 20220101ALI20221221BHJP
【FI】
H04L47/20
H04L47/22
H04L47/31
(21)【出願番号】P 2019017483
(22)【出願日】2019-02-01
【審査請求日】2021-06-02
【前置審査】
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100128314
【氏名又は名称】沖川 仁
(74)【代理人】
【識別番号】100189898
【氏名又は名称】永田 健悟
(72)【発明者】
【氏名】杉園 幸司
【審査官】中川 幸洋
(56)【参考文献】
【文献】米国特許出願公開第2013/0305242(US,A1)
【文献】米国特許出願公開第2018/0024854(US,A1)
【文献】米国特許出願公開第2017/0017512(US,A1)
【文献】Fei Zhang, et al.,A Survey on Virtual Machine Migration: Challenges, Techniques, and Open Issues,IEEE Communications Surveys & Tutorials (VOL. 20, NO.2, SECOND QUARTER 2018),2018年01月17日
【文献】Christopher Clark, et al.,Live Migration of Virtual Machines,NSDI ’05: 2nd Symposium on Networked Systems Design & Implementation,2005年05月02日
(58)【調査した分野】(Int.Cl.,DB名)
H04L 47/20
H04L 47/22
H04L 47/31
(57)【特許請求の範囲】
【請求項1】
入力された入力データを処理し、同期対象の装置へ所定の帯域で転送される出力データを出力する処理部と、
前記処理部によって出力される前記出力データの発生レートを計測する計測部と、
前記計測部による計測結果に基づき、前記入力データの種別ごとにあらかじめ設定された条件が満たされ、かつ前記出力データの発生レートが前記帯域を下回るように、前記処理部への前記入力データの入力を制御する入力制御部と、
を有し、
前記処理部は、前記入力データとして入力されたパケットを処理し、
前記入力制御部は、入力されたパケットを含むトラヒックのレートと前記出力データの発生レートとの相関に基づき、
前記パケットのフローに対して決定された優先度及びドロップ率に応じて、前記パケットの一部をドロップさせることにより、前記処理部への前記入力データの入力を制御することを特徴とする処理装置。
【請求項2】
前記入力制御部は、前記出力データの前記同期対象の装置への転送が、あらかじめ設定された前記処理部の処理を停止可能な許容時間内に完了するように、前記処理部への前記入力データの入力を制御することを特徴とする請求項1
に記載の処理装置。
【請求項3】
前記入力制御部は、さらに、前記出力データの発生レートがあらかじめ設定された上限値以下になるように前記処理部への前記入力データの入力を制御することを特徴とする請求項
2に記載の処理装置。
【請求項4】
前記入力制御部は、前記出力データの転送に必要な前記処理部の停止時間が、前記許容時間を下回るように設定された前記上限値を用いて制御を行い、
また、前記帯域と、未同期の前記出力データの量と、前記入力データのフローごとの、対応する前記出力データの発生レートとに基づき、前記フローのうちの制御対象のフローに対する制御内容にしたがって制御を行うことを特徴とする請求項
3に記載の処理装置。
【請求項5】
前記計測部は、前記処理部と同じ振る舞いをする疑似処理部が、疑似的に生成された入力データを処理することによって出力される出力データの発生レートを計測することを特徴とする請求項1に記載の処理装置。
【請求項6】
コンピュータによって実行されるソフトウェアの移動方法であって、
入力された入力データを処理し、同期対象の装置へ所定の帯域で転送される出力データを出力する処理ステップと、
前記処理ステップによって出力される前記出力データの発生レートを計測する計測ステップと、
前記計測ステップによる計測結果に基づき、前記入力データの種別ごとにあらかじめ設定された条件が満たされ、かつ前記出力データの発生レートが前記帯域を下回るように、前記処理ステップへの前記入力データの入力を制御する入力制御ステップと、
を含み、
前記処理ステップは、前記入力データとして入力されたパケットを処理し、
前記入力制御ステップは、入力されたパケットを含むトラヒックのレートと前記出力データの発生レートとの相関に基づき、
前記パケットのフローに対して決定された優先度及びドロップ率に応じて、前記パケットの一部をドロップさせることにより、前記処理ステップへの前記入力データの入力を制御することを特徴とする移動方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理装置及び移動方法に関する。
【背景技術】
【0002】
近年、ネットワーク機能仮想化技術が普及しつつある。ネットワーク機能仮想化技術では、仮想マシン内に実装されたネットワーク機能を用いてパケット処理が行われる。また、このような機能が仮想化されたシステムにおいては、稼働中の機能を別サーバに移動させ、引き続きパケット処理を行わせることができる。
【0003】
機能を別のサーバに移動させ処理を引き継がせる場合、移動後に仮想マシンをクラッシュさせないために、移動前後のサーバで仮想マシンのバイナリレベルでの同期が必要になる。一方で、仮想マシンはパケット処理中に絶えずデータを更新する。このため、完全同期を達成するためにはこのような更新され続けるデータも同期する必要がある。
【0004】
ここで、仮想マシンによるデータの更新スピードは速く、同期するデータをネットワーク帯域を使用して転送し終わった時点で、データの更新によりすでに送信したデータとは異なるデータが記録されている。よって、完全同期を達成するためには仮想マシンを停止させ、データ更新を起こさないようにする必要がある。この間、停止中の仮想マシンが処理していたパケットは、仮想マシンの同期が終了しパケット処理を再開するまでドロップされパケットロスが生じる。
【0005】
これに対し、パケットロスを抑えるために、発生する同期データのうち大半のデータの発生レートが同期に使用するネットワーク帯域より小さい場合、停止中に転送するデータ量を減らす技術が提案されている(例えば、非特許文献1を参照)。
【先行技術文献】
【非特許文献】
【0006】
【文献】C. Clark, “Live Migration of Virtual Machines,” Proceedings of the 2nd Conference on Symposium on Networked Systems Design & Implementation ,2005
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来の技術には、パケットロスによるサービスへの悪影響が大きい場合があるという問題がある。ここで、パケット処理にともなうデータ更新頻度はパケット量に比例して多くなる傾向がある。また、現状のネットワーク技術では、同期用のネットワーク帯域が不足し、完全同期を行うことができない状況が多く発生する。この場合、従来の技術では、移動開始時点から仮想マシンを停止せざるを得ない。その間、パケットロスが生じる。
【0008】
例えば、ゲームやビデオ会議等のリアルタイム性を要するアプリケーションが使用するフローでは、長いパケットロス時間は操作コマンドのミスや画像音声の劣化という形で利用者に認知される。このため、サービス移動開始時点から仮想マシンを停止させた場合、このようなリアルタイム性を要するアプリケーションを用いたサービスに悪影響が生じる。
【課題を解決するための手段】
【0009】
上述した課題を解決し、目的を達成するために、処理装置は、入力された入力データを処理し、同期対象の装置へ所定の帯域で転送される出力データを出力する処理部と、前記処理部によって出力される前記出力データの出力レートを計測する計測部と、前記計測部による計測結果に基づき、前記入力データの種別ごとにあらかじめ設定された条件が満たされ、かつ前記出力データの出力レートが前記帯域を下回るように、前記処理部への前記入力データの入力を制御する入力制御部と、を有することを特徴とする。
【発明の効果】
【0010】
本発明によれば、パケットロスによるサービスへの悪影響を低減することができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、第1の実施形態に係るソフトウェア移動システムの構成の一例を示す図である。
【
図2】
図2は、第1の実施形態に係る処理装置の構成の一例を示す図である。
【
図3】
図3は、第1の実施形態に係る計算装置の構成の一例を示す図である。
【
図4】
図4は、フロー管理テーブルの一例を示す図である。
【
図5】
図5は、ソフトウェア移動システムによる処理全体の流れを説明するための図である。
【
図6】
図6は、入力レートと発生レートの相関について説明するための図である。
【
図7】
図7は、ポリシングについて説明するための図である。
【
図8】
図8は、シェーピングについて説明するための図である。
【
図9】
図9は、第1の実施形態に係るソフトウェア移動システムの処理の流れを示すフローチャートである。
【
図10】
図10は、第1の実施形態に係る計算処理装置の計算処理の流れを示すフローチャートである。
【
図11】
図11は、第2の実施形態に係る疑似処理装置の構成の一例を示す図である。
【
図12】
図12は、移動プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【0012】
以下に、本願に係る処理装置及び移動方法の実施形態を図面に基づいて詳細に説明する。なお、本発明は、以下に説明する実施形態により限定されるものではない。
【0013】
[第1の実施形態の構成]
まず、
図1を用いて、ソフトウェア移動システムの構成について説明する。
図1に示すように、ソフトウェア移動システム1は、処理装置10及び計算装置20を有する。また、処理装置10は、入力制御部121、処理部122及びレート計測部124を有する。また、計算装置20は、管理部221及び計算部222を有する。なお、各部の詳細については、後に各装置の構成とともに説明する。
【0014】
ここで、処理装置10は、サービスを提供するためのアプリケーションを実行する。ここでのサービスには、ゲーム、ビデオ会議、Webサイト、テキストメッセージ配信等が含まれる。処理装置10は、種々のデータの入力を受け付け、入力されたデータを処理し、出力データを出力する。
【0015】
また、ソフトウェア移動システム1は、処理装置10の機能を他の装置に引き継がせるためのシステムである。引き継ぎのために処理装置10から同期対象の装置にデータを転送している間も、処理部122は出力データを出力し続ける。このため、データの転送中は処理部122のデータの出力を制御する必要がある。
【0016】
そこで、入力制御部121は、入力データの処理部122への入力を制御することで、処理部122による出力データの出力を制御する。一方で、出力データの種別によっては、処理部122の出力データに制限をかけることが望ましくない場合がある。例えば、ゲームやビデオ会議等のリアルタイム性が求められるサービスに関する出力データには、なるべく制限をかけないほうが望ましい。一方で、ファイル転送やメール配信等のリアルタイム性が求められないサービスに関する出力データには、多少の制限は許容されることが考えられる。そこで、入力制御部121は、データの種別によって制御の方法を変化させることができる。
【0017】
図1の例では、例えば、入力制御部121は、優先度が高いデータをそのまま処理部122へ入力し、優先度が中くらいのデータには一部破棄及びタイミングの遅延等により制限をかけて処理部122へ入力し、優先度が低いデータを破棄する。
【0018】
次に、
図2を用いて、第1の実施形態に係る処理装置の構成について説明する。
図2は、第1の実施形態に係る処理装置の構成の一例を示す図である。
図2に示すように、処理装置10は、入出力インタフェース11、制御部12及び記憶部13を有する。
【0019】
入出力インタフェース11は、データの入力及び出力のためのインタフェースである。例えば、入出力インタフェース11はNIC(Network Interface Card)である。また、入出力インタフェース11は、例えばマウスやキーボード等の入力装置であってもよい。
【0020】
制御部12は、処理装置10全体を制御する。制御部12は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路である。また、制御部12は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部12は、各種のプログラムを実行する。例えば、制御部12は、入力制御部121、処理部122、フロー計測部123、レート計測部124及び解析部125を有する。
【0021】
入力制御部121は、入力制御ポリシーに従い、処理部122への入力データの入力を制御する。また、入力制御ポリシーは、計算装置20によって計算される。計算装置20は、後述するレート計測部124による計測結果に基づき、入力データの種別ごとにあらかじめ設定された条件が満たされ、かつ出力データの発生レートが帯域を下回るように、入力制御ポリシーを計算する。これは、発生レートが同期用の帯域を上回った場合、未同期の出力が増加し続け、同期が完了しないためである。
【0022】
処理部122は、入力された入力データを処理し、同期対象の装置へ所定の帯域で転送される出力データを出力する。入力データは、データパケットであってもよいし、データパケットが送受信されるレイヤよりも低いレイヤや、HTTP(Hypertext Transfer Protocol)やMQTT(Message Queuing Telemetry Transport)等の高位レイヤを介して装置間でやり取りされる所定の信号やメッセージであってもよい。本実施形態では、入力データがデータパケットであるものとする。また、以降の説明では、データパケットを単にパケットと呼ぶ場合がある。
【0023】
また、同期対象の装置では、処理部122と等価の構成が再現されることになる。このため、処理部122は、移動対象のアプリケーション、移動対象のソフトウェア等ということができる。
【0024】
フロー計測部123は、処理部122に入力される入力データのレートを計測する。例えば、フロー計測部123は、入力データのレートとして、ビットレート及び単位時間当たりのパケット数等を計測する。
【0025】
レート計測部124は、処理部122によって出力される出力データの発生レートを計測する。例えば、レート計測部124は、発生レートとして、処理部122の出力に対するメモリページの単位時間当たりの増加量を計測する。
【0026】
解析部125は、フロー計測部123による計測結果及びレート計測部124による計測結果を基に、入力データの種別ごとの発生レートを計算する。例えば、入力データがパケットである場合、種別はフローである。つまり、解析部125は、フローごとの、処理部122から出力される出力データの発生レートを計算する。また、各計測結果に基づく解析部125による解析結果は、計算装置20に受け渡される。
【0027】
記憶部13は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク等の記憶装置である。なお、記憶部13は、RAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)等のデータを書き換え可能な半導体メモリであってもよい。
【0028】
記憶部13は、処理装置10で実行されるOS(Operating System)や各種プログラム、及びプログラムの実行で用いられる各種情報をプログラム情報131として記憶する。また、記憶部13は作業用メモリ132を有する。
【0029】
作業用メモリ132には、処理部122から出力される出力データが書き込まれる。また、同期の際には、プログラム情報131に含まれるデータのうちの処理部122を構成するためのデータ、及び作業用メモリ132に書き込まれた出力データが同期対象の装置に転送される。
【0030】
ここで、
図3を用いて、第1の実施形態に係る計算装置の構成について説明する。
図3は、第1の実施形態に係る計算装置の構成の一例を示す図である。
図3に示すように、計算装置20は、入出力インタフェース21、制御部22及び記憶部23を有する。
【0031】
入出力インタフェース21は、データの入力及び出力のためのインタフェースである。例えば、入出力インタフェース21はNICである。また、入出力インタフェース21は、例えばマウスやキーボード等の入力装置であってもよい。例えば、入出力インタフェース21によれば、計算装置20は、処理装置10との間でデータのやり取りを行うことができる。
【0032】
制御部22は、計算装置20全体を制御する。制御部22は、例えば、CPU、MPU等の電子回路や、ASIC、FPGA等の集積回路である。また、制御部22は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部22は、各種のプログラムを実行する。例えば、制御部22は、管理部221及び計算部222を有する。
【0033】
管理部221は、後述するフロー管理テーブル232の管理を行う。具体的には、管理部221は、自動的に又はユーザの操作に応じて、フロー管理テーブル232の各レコードの登録、削除、更新等を行う。
【0034】
計算部222は、処理装置10から受け取った発生レート及びフロー管理テーブル232の情報を基に、入力制御ポリシーを計算する。また、計算部222は、計算した入力制御ポリシーを処理装置10に通知する。
【0035】
記憶部23は、HDD、SSD、光ディスク等の記憶装置である。なお、記憶部23は、RAM、フラッシュメモリ、NVSRAM等のデータを書き換え可能な半導体メモリであってもよい。
【0036】
記憶部23は、計算装置20で実行されるOSや各種プログラム、及びプログラムの実行で用いられる各種情報をプログラム情報231として記憶する。また、記憶部23はフロー管理テーブル232を有する。
【0037】
図4を用いて、フロー管理テーブルについて説明する。
図4は、フロー管理テーブルの一例を示す図である。
図4に示すように、フロー管理テーブル232には、入力制御ポリシーに関する情報がフロー単位で規定されている。ここで、フローは、入力データの種別の一例である。フローは、例えば、送信元IPアドレス、送信元ポート、宛先IPアドレス、宛先ポート等が一致するパケットの集合である。
【0038】
また、
図4に示すように、入力制御ポリシーに関する情報には、優先度、ドロップ率、送信帯域等が含まれる。例えば、優先度は、「高」、「中」、「低」のいずれかであり、関連するサービスのリアルタイム性等によりあらかじめ決定される。また、ドロップ率及び送信帯域は、後述入力制御のための各手法を実行する際に必要な情報である。
【0039】
図4の例では、例えば、送信元IPアドレスが「192.0.2.11」、送信元ポートが「8080」、送信元IPアドレスが「192.0.2.21」であるフローの優先度は「高」である。また、例えば、送信元IPアドレスが「192.0.2.13」であるフローの優先度は「低」であり、ドロップ率は「0.4」、送信帯域は「1」である。なお、ドロップ率及び送信帯域は、入力データの種別ごとにあらかじめ設定された条件の一例である。
【0040】
図5を用いて、ソフトウェア移動システム1による処理全体の流れを説明する。
図5は、ソフトウェア移動システムによる処理全体の流れを説明するための図である。
図5に示すように、処理装置10には、フロー51、フロー52及びフロー53が入力される。ここで、フロー51の優先度は「低」であるものとする。また、フロー52の優先度は「中」であるものとする。また、フロー53の優先度は「高」であるものとする。
【0041】
図5の(1)に示すように、フロー計測部123は、入力されたフローのトラヒックのレートを計測し、計測結果を解析部125に通知する。また、
図5の(2)に示すように、処理部122は、入力されたフローを用いて処理を行い、その結果出力した出力データを作業用メモリ132に書き込む。
【0042】
そして、
図5の(3)に示すように、レート計測部124は、作業用メモリ132を参照し、出力データの発生レートを計測し、計測結果を解析部125に通知する。ここで、
図5の(4)に示すように、解析部125は、入力されたフローごとの発生レートを計算し、計算した結果を計算装置20に通知する。
【0043】
図5の(5)に示すように、計算装置20は、通知された発生レートを基に入力制御ポリシーを計算する。そして、計算装置20は、入力制御ポリシーを処理装置10に通知する。
【0044】
ここで、解析部125は、例えば入力データのトラヒックのレートである入力レートと出力データの発生レートとの相関を計算する。
図6は、入力レートと発生レートの相関について説明するための図である。
図6に示すように、フロー計測部123は、「64Bytes flow」について、入力レートが100,000pps(Packets per second)から200,000ppsまでの範囲であることを計測したものとする。また、レート計測部124は、入力レートが100,000ppsから200,000ppsまでの範囲であるときの発生レートを計測したものとする。
【0045】
このとき、解析部125は、入力レートと発生レートの相関を計算する。そして、計算装置20は、解析部125によって計算された相関に基づき、入力レートが100,000pps(Packets per second)から200,000ppsまでの範囲にない場合の発生レートを推定することができる。計算装置20は、このように推定された発生レートを基に入力制御ポリシーを計算してもよい。
【0046】
ここで、入力制御部121は、入力制御ポリシーにしたがい、様々な手法で入力制御を行うことができる。例えば、入力制御部121は、処理部122への入力を制御するだけでなく、さらに、処理部122の処理速度を低下させる制御を行うことにより出力データの発生レートを低減させることができる。例えば、入力制御部121は、処理部122へのプロセッサ時間の割り当てを制限すること等により処理速度を低下させることができる。
【0047】
また、入力制御部121は、出力データの同期対象の装置への転送が、あらかじめ設定された処理部122の処理を停止可能な許容時間内に完了するように、処理部122への入力データの入力を制御する。ここで、許容時間は、優先度が高いフローに対して許容されているフロー断時間である。
【0048】
また、入力制御部121は、さらに、出力データの発生レートがあらかじめ設定された上限値以下になるように処理部122への入力データの入力を制御する。入力制御部121は、発生レートが少なくとも同期用の帯域を上回らないように制限する。この場合、同期用の帯域が閾値である。
【0049】
さらに、入力制御部121は、許容時間による制御及び発生レートの上限値による制御を組み合わせることができる。すなわち、入力制御部121は、出力データの転送に必要な処理部122の停止時間が、許容時間を下回るように設定された上限値を用いて制御を行う。
【0050】
また、このとき、入力制御部121は、帯域と、未同期の出力データの量と、入力データのフローごとの、対応する出力データの発生レートとに基づき、フローのうちの制御対象のフローに対する制御内容にしたがって制御を行う。例えば、入力制御部121は、優先度が低いフローであっても、帯域に余裕がある場合や、未同期の出力データ量がない場合には、当該フローの入力制御を行わないようにしてもよい。また、入力制御部121は、優先度が中くらいのフローについては、未同期の出力データの量に応じて制御を行うか否かを決定するようにしてもよい。
【0051】
入力制御部121は、優先制御及び帯域制御等により入力制御を実現する。優先制御は、フローに優先度を与え、優先度が高いフローのパケットを優先的に送信するよう、キューを用いて制御を行う方法である。優先制御は、スケジューリングの一例である。例えば、優先制御には、重み付フェアキューイング、重み付ラウンドロビン等がある。また、帯域制御は、フローごとに送信許容帯域を設け、許容帯域を越えないよう、フローのパケットのドロップ(ポリシング)又は出力タイミングの変更(シェーピング)等を行う方法である。例えば、帯域制御には、ランダムドロップ、リーキバケット、トークンバケット等がある。
【0052】
本実施形態では、入力制御部121は、入力されたパケットを含むトラヒックのレートと出力データの発生レートとの相関に基づき、スケジューリング、ドロップ(ポリシング)、シェーピングのうちの少なくともいずれかを用いて、処理部122への入力データの入力を制御する。
【0053】
具体的には、入力制御部121は、優先制御とビットレート又は単位時間当たりのパケット数に対する帯域制御のいずれかを組み合わせて入力制御を行う。例えば、入力制御部121は、優先制御と、ポリシング及びシェーピングのいずれかと、を組み合わせる。
【0054】
図7を用いてポリシングについて説明する。
図7の(1)に示すように、計算装置20は、フローごとの優先度及びドロップ率を処理装置10に指示する。計算装置20は、フロー管理テーブル232を参照しフローごとの優先度及びドロップ率を決定することができる。
【0055】
図5の場合と同様に、フロー51の優先度は「低」であるものとする。また、フロー52の優先度は「中」であるものとする。また、フロー53の優先度は「高」であるものとする。このとき、例えば、計算装置20は、フロー51、フロー52及びフロー53の入力レートの比率が1:2:3であり、発生レートの上限値が300,000ppsであり、フロー53のパケットがドロップしないようなドロップ率を計算し、処理装置10に通知する。
【0056】
そして、
図7の(2)に示すように、処理装置10は、各フローに対しドロップ率を登録し、フロー53を最優先で送出し、フロー51及びフロー52については優先度に基づく重みにしたがう送出スケジュールにより送出する。
【0057】
これにより、例えば、
図7のブランク521及び522に示す位置に入力されるはずであったパケットが、入力制御部121によりドロップされる。この結果、処理部122によるフロー53を入力とする処理の出力データが削減され、発生レートが低下する。一方で、優先度が「低」であるフローは、リアルタイム性が要求されないサービスに関するものであるため、サービスへの悪影響は抑えられる。
【0058】
図8を用いてシェーピングについて説明する。
図8の(1)に示すように、計算装置20は、フローごとの優先度及び送信帯域を処理装置10に指示する。計算装置20は、フロー管理テーブル232を参照しフローごとの優先度及び送信帯域を決定することができる。
【0059】
図5の場合と同様に、フロー51の優先度は「低」であるものとする。また、フロー52の優先度は「中」であるものとする。また、フロー53の優先度は「高」であるものとする。このとき、例えば、計算装置20は、フロー51及びフロー52の入力レートの比率が1:2であり、発生レートの上限値が300,000ppsであり、フロー53のパケットが遅延しないような送信帯域を計算し、処理装置10に通知する。
【0060】
そして、
図8の(2)に示すように、処理装置10は、各フローに対し送信帯域を登録し、フロー53を最優先で送出し、フロー51及びフロー52については優先度に基づく重みにしたがう送出スケジュールにより送出する。
【0061】
このとき、例えば、入力制御部121は、トークンバケット515及びトークンバケット525にトークンを保持し、フロー51及びフロー52の送出を遅延させる。この結果、
図7の場合と同様に、処理部122によるフロー53を入力とする処理の出力データが削減される。
【0062】
[第1の実施形態の処理]
図9を用いて、ソフトウェア移動システム1の処理の流れを説明する。
図9は、第1の実施形態に係るソフトウェア移動システムの処理の流れを示すフローチャートである。
図9に示すように、まず、処理装置10は、入力フローを計測する(ステップS11)。次に、処理装置10は、入力フローを基に処理を実行する(ステップS12)。ここで、処理装置10は、処理の結果として出力データを出力する。そして、処理装置10は、出力データの発生レートを計測する(ステップS13)。
【0063】
計算装置20は、フロー及び計測結果を基に制御ポリシーを計算する(ステップS14)。処理装置10は、計算装置20によって計算された制御ポリシーに基づき入力制御を実行する(ステップS15)。
【0064】
また、
図10を用いて、計算装置20による計算処理の流れを説明する。
図10は、第1の実施形態に係る計算処理装置の計算処理の流れを示すフローチャートである。
図10に示すように、計算装置20は、未同期データ量、ソフトウェアの同期帯域、及び低優先の許容可能断時間を取得する(ステップS101)。
【0065】
未同期データ量は時間の経過とともに変化する情報なので、計算装置20は、一定時間ごとに処理装置10から未同期データ量を取得するようにしてもよい。また、ソフトウェアの同期帯域及び低優先の許容可能断時間は時間の経過とともに変化しないため、計算装置20は、ソフトウェアの同期帯域及び低優先の許容可能断時間をあらかじめ取得しておいてもよい。
【0066】
次に、計算装置20は、最適な発生レートを計算する(ステップS102)。また、計算装置20は、最適な発生レートを基にメモリページの上書き上限を計算する(ステップS103)。そして、計算装置20は、上書き上限を基に制御ポリシーを計算する(ステップS104)。最適な発生レートとは、出力データの転送に必要な処理部122の停止時間が、許容時間を超えないような発生レートである。
【0067】
[第1の実施形態の効果]
これまで説明したように、実施形態の処理装置10は、入力された入力データを処理し、同期対象の装置へ所定の帯域で転送される出力データを出力する。また、処理装置10は、処理部122によって出力される出力データの発生レートを計測する。また、処理装置10は、計測結果に基づき、入力データの種別ごとにあらかじめ設定された条件が満たされ、かつ出力データの発生レートが帯域を下回るように、入力データの入力を制御する。このように、処理装置10は、入力データの種別(例えばパケットのフロー)に応じた条件(例えば優先度)に基づき入力制御を行うことが可能になる。例えば、対応するサービスのリアルタイム性に応じて優先度を設定することができるため、実施形態によれば、パケットロスによるサービスへの悪影響を低減することが可能になる。特に、入力データがパケットである場合、フローに応じたフロー断時間の差別化の実現と、フロー断時間の最低値を指定どおりの時間にすることが可能になる。
【0068】
入力制御部121は、さらに、処理部122の処理速度を低下させる制御を行うことにより出力データの発生レートを低減させる。このため、実施形態によれば、入力の制御及び処理速度の制御の両方により発生レートを低減させることができる。
【0069】
処理装置10は、入力データとして入力されたパケットを処理する。また、処理装置10は、入力されたパケットを含むトラヒックのレートと出力データの発生レートとの相関に基づき、スケジューリング、ドロップ、シェーピングのうちの少なくともいずれかを用いて、入力データの入力を制御する。このため、実施形態によれば、パケットの送信を制御する手法を利用して入力制御を行うことが可能になる。
【0070】
処理装置10は、出力データの同期対象の装置への転送が、あらかじめ設定された処理部122の処理を停止可能な許容時間内に完了するように、入力データの入力を制御する。このため、実施形態によれば、出力データの同期が間に合わず許容時間を超えることを防止することができる。
【0071】
処理装置10は、さらに、出力データの発生レートがあらかじめ設定された上限値以下になるように処理部122への入力データの入力を制御する。このため、実施形態によれば、上限値を設定することで入力制御を容易に実現することができる。
【0072】
処理装置10は、出力データの転送に必要な処理部122の停止時間が、許容時間を下回るように設定された上限値を用いて制御を行う。また、処理装置10は、帯域と、未同期の出力データの量と、入力データのフローごとの、対応する出力データの発生レートとに基づき、フローのうちの制御対象のフローに対する制御内容にしたがって制御を行う。このため、実施形態によれば、フロー断時間が許容時間を超えない上限値を設定することで、入力制御を最低限に抑えることができる。
【0073】
[第2の実施形態]
第2の実施形態について説明する。なお、第2の実施形態に係る処理装置10の基本的な構成は、第1の実施形態に係る処理装置10の構成と同様である。以下では、第2の実施形態に係る処理装置10の構成のうち、第1の実施形態に係る処理装置10の構成と同様であるものについては適宜説明を省略する。
【0074】
第2の実施形態では、疑似処理装置30が、処理装置10の処理部122の処理を疑似的に実行する。そして、発生レートの計測は、疑似処理装置30の実行結果を対象に行われる。
【0075】
図11を用いて、疑似処理装置30について説明する。
図11は、第2の実施形態に係る疑似処理装置の構成の一例を示す図である。
図11に示すように、疑似処理装置30は、疑似フロー生成部31、制御部32及び記憶部33を有する。
【0076】
疑似フロー生成部31は、疑似的な入力データを生成する。例えば、疑似フロー生成部31は、実際に処理装置10に入力されるフローをコピーすることで疑似的な入力データを生成してもよい。また、疑似フロー生成部31は、処理装置10に入力されるフローと同様の傾向を持つフローを生成してもよい。
【0077】
制御部32は、疑似処理部321、フロー計測部322及びレート計測部323を有する。疑似処理部321、フロー計測部322、レート計測部323は、それぞれ第1の実施形態の処理装置10の処理部122、フロー計測部123及びレート計測部124と同じ振る舞いをする。ただし、疑似処理部321には、疑似フロー生成部31によって生成された入力データが入力される。
【0078】
疑似処理部321は、疑似フロー生成部31によって生成された入力データを処理し、出力データを出力する。また、フロー計測部322は、疑似処理部321に入力される入力データのレートを計測する。また、レート計測部323は、疑似処理部321が、入力データを処理することによって出力される出力データの発生レートを計測する。
【0079】
また、疑似処理装置30は、各計測結果を処理装置10の解析部125に受け渡す。また、疑似処理装置30は、処理装置10の解析部125と同じ振る舞いをする解析部を有していてもよい。その場合、疑似処理装置30は、解析結果を計算装置20に受け渡す。
【0080】
また、記憶部33のプログラム情報331及び作業用メモリ332についても、処理装置10のプログラム情報131及び作業用メモリ132と同様の機能を有する。
【0081】
第1の実施形態の方法で入力データ及び出力データの計測を行う場合、処理装置10のトラヒックフローに負荷等が発生することが考えられる。処理装置10は、実際にサービスの提供に使用されるため、なるべく計測処理の影響を与えないことが望ましい。そこで、第2の実施形態によれば、サービス提供中の処理装置のトラヒックフローに影響を与えずに、入力に対する同期対象データの発生レートの情報を得ることが可能になる。
【0082】
[その他の実施形態]
第1の実施形態における処理装置10に入力されるデータは、実際のサービス提供において発生するデータであってもよいし、量や種類を変更しながら人為的に発生させたデータであってもよい。人為的に発生させることで、多様なケースの計測情報を得ることができるため、各状況により適した入力制御ポリシーの計算が可能になる。
【0083】
また、
図7及び
図8の例では、帯域制御を単位時間当たりのパケット数(単位:pps)に対して行うものとして説明した。一方で、入力制御ポリシーは、優先制御と、ビットレートに対する帯域制御及び単位時間当たりのパケット数に対する帯域制御のいずれかと、を組み合わせたものであってもよい。
【0084】
[システム構成等]
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散及び統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散又は統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、CPU及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0085】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0086】
[プログラム]
一実施形態として、処理装置10は、パッケージソフトウェアやオンラインソフトウェアとして上記の移動処理を実行する移動プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の移動プログラムを情報処理装置に実行させることにより、情報処理装置を処理装置10として機能させることができる。ここで言う情報処理装置には、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等のスレート端末等がその範疇に含まれる。
【0087】
図12は、移動プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0088】
メモリ1010は、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0089】
ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、処理装置10の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、処理装置10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSDにより代替されてもよい。
【0090】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020は、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した実施形態の処理を実行する。
【0091】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【符号の説明】
【0092】
1 ソフトウェア移動システム
10 処理装置
20 計算装置
30 疑似処理装置
11、21 入出力インタフェース
12、22、32 制御部
13、23、33 記憶部
31 疑似フロー生成部
51、52、53 フロー
121 入力制御部
122 処理部
123、322 フロー計測部
124、323 レート計測部
125 解析部
131、231、331 プログラム情報
132、332 作業用メモリ
221 管理部
222 計算部
232 フロー管理テーブル
321 疑似処理部
515、525 トークンバケット
521、522 ブランク