(57)【要約】本願では、ネットワークカード、時刻同期方法および装置、並びにコンピュータ記憶媒体を開示する。前記ネットワークカードは、クロックパルス信号を生成するための水晶発振器と、クロックパルス信号に応じて、ネットワークカードにローカルクロック源を提供するための位相ロックループと、ホストと相互接続されるコネクタと、を含み、前記ネットワークカードは、同期した時刻情報を共有チャネルを介して、前記ホスト上で動作されるＮ個（Ｎ≧２）の仮想マシンＶＭにおける各ＶＭに送信する。
2021506037.tif 000002
【特許請求の範囲】
【請求項１】
クロックパルス信号を生成するように構成される水晶発振器と、
クロックパルス信号に応じて、ネットワークカードにローカルクロック源を提供するように構成される位相ロックループと、
ホストと相互接続されるコネクタと、を含み、
前記ネットワークカードは、同期した時刻情報を共有チャネルを介して、前記ホスト上で動作するＮ個（Ｎ≧２）の仮想マシンＶＭにおける各ＶＭに送信する、
ネットワークカード。
【請求項２】
前記ネットワークカードはサーバと時刻同期を行うことで、前記同期した時刻情報を取得し、前記同期した時刻情報を共有メモリチャネルを介して各ＶＭに送信する
請求項１に記載のネットワークカード。
【請求項３】
プログラマブルロジックデバイスをさらに備え、
前記プログラマブルロジックデバイスは、
ホストとサーバとの間の送受信インタラクションによって得られる精密時刻同期プロトコルであるＰＴＰメッセージに基づいて時間計測幅を取得し、
前記時間計測幅に基づいて時刻更新情報を取得し、
前記時刻更新情報を前記同期した時刻情報として各ＶＭに送信するように構成される
請求項１に記載のネットワークカード。
【請求項４】
前記プログラマブルロジックデバイスは、
前記ホストと前記サーバとの間の送受信インタラクションによって得られる前記ＰＴＰメッセージを認識するように構成されるメッセージ送受信処理部と、
ネットワークカードのローカル時刻をメンテナンスするように構成される時刻メンテナンス処理部と、
前記ＰＴＰメッセージに基づいて時刻同期を行うことで、前記時間計測幅を取得するように構成される時刻調整処理部と、
前記時間計測幅に応じて、前記メンテナンスするネットワークカードのローカル時刻をリアルタイムで更新して前記時刻更新情報を得るように構成される時刻同期処理部と、を含む
請求項３に記載のネットワークカード。
【請求項５】
前記メッセージ送受信処理部は、前記ＰＴＰメッセージにタイムスタンプを追加するか、或いは、タイムスタンプを抽出するように構成される
請求項４に記載のネットワークカード。
【請求項６】
前記時刻調整処理部はさらに、
周期時間ごとに、ホストが定期的にサーバと前記ＰＴＰメッセージをインタラクションする際に存在する時刻ずれを収集し、前記時刻ずれに基づいて前記時間計測幅を取得するように構成され、
前記周期時間は、時刻同期に要する同期目標精度および／またはシステム負荷状況に応じて選択される
請求項４に記載のネットワークカード。
【請求項７】
前記時刻調整処理部はさらに、ローカル計時周期に達し、時刻同期更新をトリガーした後、前記時刻ずれに応じて前記時間計測幅を取得するように構成される
請求項６に記載のネットワークカード。
【請求項８】
前記時刻メンテナンス処理部はさらに、前記ローカルクロック源に応じて前記ネットワークカードのローカル時刻を保持するように構成される
請求項４に記載のネットワークカード。
【請求項９】
前記ホストのホストスロット内に配置される
請求項１〜８のいずれか一項に記載のネットワークカード。
【請求項１０】
Ｎ個（Ｎ≧２）の仮想マシンＶＭが動作するホストに適用される時刻同期方法であって、
同期した時刻情報を共有チャネルを介して各ＶＭに送信する
時刻同期方法。
【請求項１１】
前記同期した時刻情報を用いることにより達成する精度は、ナノ秒級またはナノ秒級以上のより高い精度レベルである
請求項１０に記載の時刻同期方法。
【請求項１２】
同期した時刻情報を共有チャネルを介して各ＶＭに送信するステップは、
サーバと時刻同期を行うことで、前記同期した時刻情報を得るステップと、
各ＶＭが定期的にトリガーする取得要求に応答して、ホストと各ＶＭとを連通する共有メモリチャネルを介して前記同期した時刻情報を各ＶＭに送信するステップと、を含む
請求項１０に記載の時刻同期方法。
【請求項１３】
同期した時刻情報を共有チャネルを介して各ＶＭに送信するステップは、
ホストとサーバとの間の送受信インタラクションから得られる精密時刻同期プロトコルであるＰＴＰメッセージに基づいて時間計測幅を取得するステップと、
前記時間計測幅により時刻更新情報を取得するステップと、
前記時刻更新情報を前記同期した時刻情報として各ＶＭに送信するステップと、を含む
請求項１０に記載の時刻同期方法。
【請求項１４】
ホストとサーバとの間の送受信インタラクションから得られる精密時刻同期プロトコルであるＰＴＰメッセージに基づいて時間計測幅を取得するステップは、
タイムスタンプを含む前記ＰＴＰメッセージを取得するステップと、
前記ＰＴＰメッセージから前記タイムスタンプを抽出し、前記タイムスタンプに基づいて前記ホストと前記サーバとの間に存在する時刻ずれを取得し、前記時刻ずれに基づいて前記時間計測幅を取得するステップと、を含み、
前記時間計測幅に基づいて時刻更新情報を取得するステップは、
各ＶＭが定期的にトリガーする取得要求に応答し、前記時間計測幅に基づいて、ホストがローカルでメンテナンスする時刻をリアルタイムで更新して、前記時刻更新情報を得るステップを含む
請求項１３に記載の時刻同期方法。
【請求項１５】
Ｎ個（Ｎ≧２）の仮想マシンＶＭが動作するホスト上の各ＶＭに適用される時刻同期方法であって、
ホストが共有チャネルを介して各ＶＭに送信する同期した時刻情報を受信するステップと、
前記同期した時刻情報に基づいて各ＶＭにおけるローカルシステム時刻を修正するステップと、を含む
時刻同期方法。
【請求項１６】
前記同期した時刻情報を用いることにより達成される精度は、ナノ秒級またはナノ秒級以上のより高い精度レベルである
請求項１５に記載の方法。
【請求項１７】
ホストが各ＶＭに送信する同期した時刻情報を受信するステップの前に、
前記ホストへ取得要求を定期的に送信するステップと、
前記ホストがサーバと時刻同期を行うことにより前記同期した時刻情報を得るステップと、をさらに含む
請求項１５に記載の時刻同期方法。
【請求項１８】
ホストが共有チャネルを介して各ＶＭに送信する同期した時刻情報を受信するステップは、
前記ホストと各ＶＭとを連通する共有メモリチャネルを介して前記同期した時刻情報を得るステップを含む
請求項１５に記載の時刻同期方法。
【請求項１９】
ホストが共有チャネルを介して各ＶＭに送信する同期した時刻情報を受信するステップは、
時間計測幅に基づいて、ホストがローカルでメンテナンスする時刻をリアルタイムで更新することで得られる時刻更新情報を受信して、前記時刻更新情報を前記同期した時刻情報とするステップを含む
請求項１５に記載の時刻同期方法。
【請求項２０】
前記ホストが前記サーバと時刻同期して取得した時刻ずれに基づいて前記時間計測幅を得る
請求項１９に記載の時刻同期方法。
【請求項２１】
Ｎ個（Ｎ≧２）の仮想マシンＶＭが動作するホストに適用される時刻同期装置であって、
同期した時刻情報を共有チャネルを介して各ＶＭに送信するように構成される同期ユニットを含む
時刻同期装置。
【請求項２２】
前記同期した時刻情報を用いることにより達成される精度は、ナノ秒級またはナノ秒級以上のより高い精度レベルである
請求項２１に記載の時刻同期装置。
【請求項２３】
前記サーバと時刻同期を行うことで、前記同期した時刻情報を得る第１の情報取得ユニットを含み、
前記同期ユニットはさらに、
各ＶＭが定期的にトリガーする取得要求に応答して、ホストと各ＶＭとを連通する共有メモリチャネルを介して前記同期した時刻情報を各ＶＭに送信するように構成される
請求項２１に記載の時刻同期装置。
【請求項２４】
前記同期ユニットはさらに、
ホストとサーバとの間の送受信インタラクションによって得られる精密時刻同期プロトコルであるＰＴＰメッセージに基づいて時間計測幅を取得し、
前記時間計測幅に基づいて時刻更新情報を取得し、
前記時刻更新情報を前記同期した時刻情報として各ＶＭに送信するように構成される
請求項２１に記載の時刻同期装置。
【請求項２５】
Ｎ個（Ｎ≧２）の仮想マシンＶＭが動作するホスト上の各ＶＭに適用される時刻同期装置であって、
ホストが共有チャネルを介して各ＶＭに送信する同期した時刻情報を受信するように構成される受信ユニットと、
前記同期した時刻情報に基づいて各ＶＭにおけるローカルシステム時刻を修正するように構成される修正ユニットと、を含む
時刻同期装置。
【請求項２６】
前記受信ユニットはさらに、
前記ホストと各ＶＭとを連通する共有メモリチャネルを介して前記同期した時刻情報を得るように構成される
請求項２５に記載の時刻同期装置。
【請求項２７】
前記受信ユニットはさらに、
時間計測幅に基づいて、ホストがローカルでメンテナンスする時刻をリアルタイムで更新することで得られる時刻更新情報を受信して、前記時刻更新情報を前記同期した時刻情報とするように構成される
請求項２５に記載の時刻同期装置。
【請求項２８】
前記ホストが前記サーバと時刻同期して取得した時刻ずれに基づいて前記時間計測幅を得る
請求項２７に記載の時刻同期装置。
【請求項２９】
コンピュータプログラムが記憶されるメモリと、
前記コンピュータプログラムを実行するときに、請求項１０〜１４のいずれか一項に記載の時刻同期方法を実現するように構成されるプロセッサと、を備える
時刻同期装置。
【請求項３０】
コンピュータプログラムが記憶されたメモリと、
前記コンピュータプログラムを実行するときに、請求項１５〜２０のいずれか一項に記載の時刻同期方法を実現するように構成されるプロセッサと、を備える
時刻同期装置。
【請求項３１】
コンピュータプログラムが記憶され、前記コンピュータプログラムがプロセッサによって実行されるときに、前記プロセッサが請求項１０〜１４のいずれか一項に記載の時刻同期方法を実現する
コンピュータ記憶媒体。
【請求項３２】
コンピュータプログラムが記憶され、前記コンピュータプログラムがプロセッサによって実行されるときに、前記プロセッサが請求項１５〜２０のいずれか一項に記載の時刻同期方法を実現する
コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は時刻同期分野に関するものであるが、これに限定されない。
【背景技術】
【０００２】
仮想マシン（VM，Virtual  Machine）とは、完全なハードウェアシステム機能を有する、完全な隔離環境で動作する完全なコンピュータシステムをソフトウェアシミュレーションによって実現するものをいう。
【０００３】
ＶＭにおけるクロック割り込みはシミュレートされたものであり、精確な時刻での発行が保証されず、現在のＶＭシステムの時刻同期はネットワーク時刻同期プロトコル（NTP，Network  Time  Protocol）送信方式を用いて実現するのが主流であり、時刻の伝達精度が低い。
【発明の概要】
【０００４】
本願の実施例は、水晶発振器、位相ロックループ、コネクタを含むネットワークカードを提供する。水晶発振器および位相ロックループは、ネットワークカードにローカルクロック源を提供する。水晶発振器と位相ロックループとの間で信号相互接続が行われ、水晶発振器は、生成されたクロックパルス信号を位相ロックループに出力し、位相ロックループは、クロックパルス信号に基づいてローカルクロック源を生成してネットワークカードに提供する。コネクタは、ホスト（例えば、１台の物理サーバ）スロットおよびホスト本体と相互接続される。ネットワークカードは、同期した時刻情報を共有チャネルを介して、ホスト上で動作する複数のＶＭのそれぞれに送信する。複数のＶＭはホスト上で動作し、ホストからフィードバックされる同期した時刻情報によりそれぞれの時刻同期修正を行う。共有チャネルはソフトウェア共有方式によって実現される。共有チャネルをソフトウェア共有方式で実現する場合、ホストと各ＶＭを連通する共有メモリチャネルを介して、同期した時刻情報を各ＶＭに送信するが、ネットワークカードハードウェア自体は変化しない。一方、共有チャネルはハードウェア共有方式で実現することもでき、共有チャネルをハードウェア共有方式で実現する場合には、ネットワークカードに新たに追加されるプログラマブルロジックデバイス内の複数のプロセッサ（例えば、メッセージ送受信処理部、時刻メンテナンス処理部、時刻調整処理部、時刻同期処理部）により処理し、時刻更新情報を、同期した時刻情報として各ＶＭに送信することで、ネットワークカードハードウェア自体が変化する。ホストと各ＶＭの共有チャネルはネットワークカードハードウェアによって共有され、各ＶＭに同期した時刻情報を送信する。
【０００５】
本願の実施例は、複数のＶＭが動作するホストに適用される時刻同期方法であって、ホストが、同期した時刻情報を共有チャネルを介して各ＶＭに送信することで、各ＶＭが、ホストからフィードバックされる同期した時刻情報によりそれぞれの時刻同期修正を行う時刻同期方法を提供する。
【０００６】
本願の実施例は、複数のＶＭが動作するホスト上の各ＶＭに適用される時刻同期方法を提供する。前記方法は、ホストが共有チャネルを介して各ＶＭに送信する同期した時刻情報を受信するステップと、ホストからフィードバックされる同期した時刻情報に基づいて各ＶＭにおけるローカルシステム時刻を修正するステップと、を含む。
【０００７】
本願の実施例は、複数のＶＭが動作するホストに適用される時刻同期装置を提供し、前記装置は、同期した時刻情報を共有チャネルを介して各ＶＭに送信するように構成された同期ユニットを含み、各ＶＭが、ホストからフィードバックされる同期した時刻情報に基づいてそれぞれの時刻同期修正を行う。
【０００８】
本願の実施例は、複数のＶＭが動作するホスト上の各ＶＭに適用される時刻同期装置を提供する。前記装置は、ホストが共有チャネルを介して各ＶＭに送信する同期した時刻情報を受信するように構成される受信ユニットと、前記同期した時刻情報に基づいて各ＶＭにおけるローカルシステム時刻を修正するように構成される修正ユニットと、を含む。
【０００９】
本願の実施例は、コンピュータプログラムが記憶されるメモリと、前記コンピュータプログラムを実行し、本願の時刻同期方法を実現するように構成されるプロセッサと、を備える時刻同期装置を提供する。
【００１０】
本願の実施例は、コンピュータプログラムが記憶され、前記コンピュータプログラムがプロセッサによって実行されるときに、前記プロセッサが本願の時刻同期方法を実現するコンピュータ記憶媒体を提供する。
【図面の簡単な説明】
【００１１】
図面は、本明細書で論じられる各実施例を、限定ではなく例として概略的に示す。
【図１】ＶＭにおけるＮＴＰ時刻同期方法の概念図である。
【図２】本願の実施例の応用場面のアーキテクチャ図である。
【図３】本願の実施例によるネットワークカードの概念図である。
【図４】本願の実施例によるネットワークカードのもう１つの概念図である。
【図５】本願の実施例によるネットワークカード拡張の概念図である。
【図６】本願の実施例によるスマートネットワークカードの概念図である。
【図７】本願の実施例による時刻同期方法のフロー図である。
【図８】本願の実施例による時刻同期方法のもう１つのフロー図である。
【図９】本願の実施例による時刻同期装置の構成モジュールの概念図である。
【図１０】本願の実施例による時刻同期装置の構成モジュールのもう１つの概念図である。
【図１１】本願の実施例による時刻同期装置のハードウェア構造概念図である。
【図１２】本願の実施例の共有メモリ技術案に適用されるシステム構造概念図である。
【図１３】本願の実施例のシングルルート入力／出力仮想化（SR-IOV，Single  Root  I/O  Virtualization）技術案に適用されるシステムアーキテクチャ概念図である。
【図１４】本願の実施例のＳＲ−ＩＯＶ技術案に適用される、精密時刻同期プロトコル（ＰＴＰ，Precision  Time  Protocol）で時刻同期を行う加速カードの内部機能モジュール概念図である。
【図１５】本願の実施例に適用される加速カードとＰＴＰサーバを同期するフロー図である。
【図１６】本願の実施例に適用される加速カードの内部時刻を更新するフロー図である。
【図１７】本願の実施例に適用されるＶＭシステムの時刻調整のフロー図である。
【発明を実施するための形態】
【００１２】
以下では図面および実施例を組み合わせて、本願について更に詳細に説明する。ここに提供する実施例は、本願を説明するためのものにすぎず、本願を限定するためのものではないと理解されたい。また、以下に提供する実施例は、本願を実施するための実施例の一部であり、本願の実施例の全てを提供するのではない。矛盾しない限り、本願の実施例に記載された技術案は、任意に組み合わせて実施することができる。
【００１３】
本出願の実施例において、用語「含む」、「含有する」またはその任意のほかの変形は、非排他的な含有を網羅するということを意味し、これにより一連の要素を含む方法または装置には、明記された要素を含むだけでなく、明確に列挙されていないその他の要素、もしくは、実施方法、または装置固有の要素をさらに含むということを意味する。より多くの制限がない場合、「……を含む」という語句によって限定される要素は、その要素を含む方法または装置に、別途の関連要素（例えば、方法におけるステップまたは装置におけるユニットであり、ユニットは、回路の一部、プロセッサの一部、プログラムまたはソフトウェアの一部などであり得る）がさらに存在することを排除するものではない。
【００１４】
例えば、本願の実施例が提供する時刻同期方法は一連のステップを含むが、本願の実施例が提供する時刻同期方法は記載されたステップに限定されず、同様に、本願の実施例が提供するネットワークカードおよび時刻同期装置は一連の部品およびユニットを含むが、本願の実施例が提供するネットワークカードおよび時刻同期装置は、明記された部品およびユニットを含むことに限定されず、関連情報を取得するために、または、情報に基づいて処理を行うために必要なユニットを含んでもよい。
【００１５】
なお、本願の実施例に係る「第１」、「第２」などの用語は、類似する対象を区別するためにのみ使用され、対象の特定順序を表すものではない。なお、「第１」、「第２」などにより区別される対象は必要に応じて入れ替え可能であり、ここでの図示または説明の順序以外の順序で、ここで説明する本願の実施例を実施することも可能であると理解されたい。
【００１６】
図１は、ＶＭにおいてＮＴＰで時刻同期を行う方法の概念図である。図１では、ＶＭソフトウェアにより、物理サーバ１１上に１つまたは複数の仮想コンピュータをシミュレートすることができ、すなわち、物理サーバ１１上で複数のＶＭが動作することにより、ＶＭを実際のコンピュータのように動作させ、例えば、ＶＭにオペレーティングシステムおよびアプリケーションプログラムをインストールすること、ＶＭを通じてネットワークリソースにアクセスすることなどである。物理サーバ１１とＮＴＰサーバ１２との間はＮＴＰを用いてメッセージのインタラクションが行われる。ＮＴＰは、コンピュータの時刻を同期させるためのプロトコルであり、コンピュータに、そのサーバまたはクロック源（例えば、クォーツ時計、ＧＰＳなど）を同期させることで、時刻の修正を提供する。複数のＶＭを動作する物理サーバは、シンクホストまたは物理ホストと呼ばれることもある。
【００１７】
ＶＭにおけるクロック割り込みはシミュレートされており、精確なタイミングでの発行が保証できず、遅延が生じる可能性がある。クロック割り込み処理は「プリエンプティブ」ではなく、ＶＭシステムの実行中にのみ実行可能である。これにより、ＶＭにおけるシステム時刻は、物理マシンのクロック源精度とソフトウェアスケジューリングとの両方の影響を受ける。現在、ＶＭシステムの時刻同期は、ＮＴＰ伝送方式で実現される。このプロトコルはマイクロ秒（ｍｓ）レベルの時刻伝達精度しか満たすことができず、時刻伝達精度が低い。
【００１８】
本願の実施例によるネットワークカード（ホストスロット内に配置可能なネットワークカード）は、同期した時刻情報を、共有チャネルを介して、ホスト上で動作するＮ個（Ｎ≧２）のＶＭのそれぞれに送信することにより、時刻伝達の精度が低いという問題を解決することができる。ホストは物理サーバであってよく、ネットワークカードはサーバスロット内、例えば、高速シリアルコンピュータ拡張バス標準（PCIE，Peripheral  Component  Interconnect  Express）スロット内に配置することができる。ＰＣＩＥは、高速シリアルポイントツーポイントデュアルチャネル高帯域幅伝送に属し、接続されたデバイスは、個別チャネル帯域幅が割り当てられており、バス帯域幅を共有しておらず、主に、アクティブ電源管理、エラー報告、エンドツーエンドの信頼性伝送、ホットプラグ、およびサービス品質などの機能をサポートしている。
【００１９】
図２は、本願の実施例の応用場面のアーキテクチャ図である。
【００２０】
図２に示すように、ホストは物理サーバ１０２であり、ホストオペレーティングシステムが実行される。物理サーバ１０２とＰＴＰサーバ１０１はＰＴＰを用いてメッセージのインタラクションを行う。ＮＴＰプロトコルを用いた伝送方式で実現される時刻同期は、マイクロ秒（ｍｓ）レベルの時刻伝達精度しか満たすことができず、高精度な時刻同期に必要なナノ秒（ｎｓ）レベルの時刻精度にははるかに及ばない。ＩＥＥＥ１５８８  Ｖ２プロトコルを用いたクロックは、高精度なクロックであり、例えば双方向チャネルを用いること、精度がｎｓレベルであること、低コストであること、様々なアクセス環境に対応できることなどの利点がある。５Ｇの場面に関していえば、低遅延高信頼業務は、５Ｇ細分割アプリケーションの１つであり、自動運転、産業制御などの新しい業務傾向の全てにおいて考慮され、これらの業務傾向は、いずれも遅延の要求が高く、将来のネットワークインフラストラクチャが汎用サーバに徐々に置き換えられるとき、ＶＭまたはコンテナに業務を配備することができる。そのため、ＶＭではＩＥＥＥ１５８８  Ｖ２プロトコルを用いて高精度な時刻同期を実現することが特に必要となる。本願の実施例では、ＩＥＥＥ１５８８  Ｖ２プロトコルを採用し、ＩＥＥＥ１５８８  Ｖ２クロックに基づいて物理サーバ１０２とＰＴＰサーバ１０１とから構成されるシステムを、マスタスレーブ同期システムとすることができる。システムの同期過程において、マスタクロックは、ＰＴＰプロトコルおよび時刻情報を定期的に発行して、スレーブクロックポートは、マスタクロックポートから送信されたタイムスタンプ情報を受信し、システムはこれに基づいてマスタスレーブ回線時刻遅延およびマスタスレーブ時刻差を計算し、スレーブ装置時刻がマスタ装置時刻と一致する周波数および位相を維持するように、その時刻差を用いてローカル時刻を調整する。
【００２１】
ＰＴＰプロトコルは、ハードウェアとソフトウェアとを連携させるという方式を用いて、より精確な時刻同期を取得する。クロックポートハードウェアデバイス（例えば、ネットワークカード）は、ＰＴＰ同期メッセージにタイムスタンプ情報を付加することをサポートする必要がある。ＳＲ−ＩＯＶ技術は、ハードウェアに基づく仮想化ソリューションであり、性能およびスケーラビリティを向上させることができる。ＳＲ−ＩＯＶ基準は、ＰＣＩＥのように、ＶＭクライアントマシン間で高速周辺機器の相互接続を効率的に共有できることを許可し、また、これはハードウェアで実現され、非常に高いＩ／Ｏ性能を取得できる。ＳＲ−ＩＯＶネットワークデバイスは、仮想機能（VF，Virtual  Function）モジュールを定義しており、各ＶＦモジュールは個別のネットワークカードとして使用でき、これらのＶＦ機能は、一般的にＰＣＩＥ透過伝送技術によってＶＭクライアントに組み込まれる。標準ネットワークカード設計において、時刻同期機能はＶＦモジュールではサポートされず、単一の物理的機能（PF，Physical  Function）モジュールでしか使用できない。しかし、ＰＦモジュールの数は限られているため、ＰＴＰ方式を用いて時刻を同期できるＶＭモジュールはごくわずかであることから、ＶＭにおける時刻同期の精度は高くなくなる。
【００２２】
ＰＴＰプロトコルは、イーサネット（登録商標）により各装置のクロックを同期させ、より高い同期精度を達成できる。物理サーバ１０２では、複数のＶＭが動作し、図２では複数のＶＭ  １０３１〜１０３４が開示されている。各ＶＭは仮想化されたコンピュータであるが、実際のコンピュータと同じように動作でき、例えば、オペレーティングシステムのインストール、アプリケーションのインストール、ネットワークリソースへのアクセスなどができる。物理サーバ１０２には、スロット（例えば、ＰＣＩＥスロット）内に位置するネットワークカードが配設され、物理サーバ１０２とＰＴＰサーバ１０１との間で送受信されるＰＴＰメッセージを識別し、更新された時刻同期情報を各ＶＭに送信することで、複数のＶＭ間で時刻同期更新を実現し、精度を高めることに用いられる。
【００２３】
上記の本願の実施例に対する説明に基づいて、次に、本願の実施例が提供するネットワークカード、時刻同期方法、および装置などに対して以下の通り説明する。
【００２４】
本願の実施例のネットワークカードは、クロックパルス信号を生成するように構成される水晶発振器と、クロックパルス信号に応じて、ネットワークカードにローカルクロック源を提供するように構成される位相ロックループと、ホストと相互接続されるコネクタと、を含む。前記ネットワークカードは、同期した時刻情報を共有チャネルを介して、ホスト上で動作するＮ個（Ｎ≧２）のＶＭにおける各ＶＭに送信するように構成された、例えばフィールドプログラマブルゲートアレイ（FPGA，Field-Programmable  Gate  Array）などのプログラマブルロジックデバイスをさらに含むことができる。
【００２５】
なお、共有チャネルがソフトウェア共有方式で実現される場合、ホストと各ＶＭを連通する共有メモリチャネルを介して同期した時刻情報を各ＶＭに送信することができ、ネットワークカードのハードウェア自体は変化しない。共有チャネルがハードウェア共有方式によって実現される場合、ネットワークカードに新たに追加されたプログラマブルロジックデバイス内の複数のプロセッサ（例えば、メッセージ送受信処理部、時刻メンテナンス処理部、時刻調整処理部、時刻同期処理部）で処理を行い、時刻更新情報を同期した時刻情報として各ＶＭに送信する。
【００２６】
共有チャネルをハードウェア共有方式で実現する場合、ネットワークカードの概念図は図３に示す通りである。このネットワークカードは、水晶発振器２１、位相ロックリング２２、コネクタ２３を備える。水晶発振器２１および位相ロックループ２２は、ネットワークカードにローカルクロック源を提供する。水晶発振器２１と位相ロックループ２２との間は信号接続され、水晶発振器２１は生成したクロックパルス信号を位相ロックループ２２に出力し、位相ロックループ２２はクロックパルス信号に基づいてローカルクロック源を生成してネットワークカードに提供する。コネクタ２３は、ホスト（例えば、図２の物理サーバ）スロットおよびホストボディに相互接続される。ネットワークカードは、ネットワークカードハードウェアを介してホストと各ＶＭとの間で共有チャネルを共有して、同期した時刻情報を各ＶＭに送信するように構成されたプログラマブルロジックデバイス２４をさらに含む。ネットワークカードハードウェアの変更について、図６を参照して具体的に説明する。複数のＶＭはホスト上で動作し、ホストからフィードバックされる同期した時刻情報によりそれぞれの時刻同期修正を行う。
【００２７】
ネットワークカードの実施例は図４に示す通りであり、上記のコンポーネントを含むほか、ネットワークカードはさらに、バスＩ２Ｃを介して帯域外管理機能を提供するように構成された帯域外管理回路を含むことができる。ＦＰＧＡには、ＦＰＧＡに基づくプログラミングを実行して得られた指令、例えば、同期した時刻情報を、ホスト上で動作する複数のＶＭにおける各ＶＭに送信するという指令を格納するように構成されたメモリコントローラが含まれる。また、指令はさらに、例えば、ＰＴＰメッセージ処理、時刻情報のメンテナンス、時刻同期、時間計測幅調整などのハードウェア補助機能を実現して、ホスト側ソフトウェアと連携し、仮想マシンでの時刻同期を完成させることもできる。物理（ＰＨＹ）デバイスは、ＲＪ４５電気ポートおよびＳＦＰ光ポートをパネルに引き出すように構成される。ＪＴＡＧデバッグインターフェイスは、デバッグと最初にバージョンをロードする時に使用されるように構成される。フラッシュメモリ（Ｆｌａｓｈ）ストレージおよびメモリは、ネットワークカードファームウェアのバージョンをＦｌａｓｈストレージに格納するというような、指令またはデータを格納するために用いられる。ドーターカード電源は、ネットワークカードに電力を供給するネットワークカード電源モジュールである。
【００２８】
ネットワークカードの実施例において、ネットワークカードは、クロックパルス信号を生成するための水晶発振器と、クロックパルス信号に応じて、ネットワークカードにローカルクロック源を提供するための位相ロックループと、ホストと相互接続されるコネクタと、を備える。ネットワークカードはさらに、サーバとの時刻同期を行うことにより、前記同期した時刻情報を得て、前記同期した時刻情報を共有メモリチャネル（例えば、ホストと各ＶＭを連通する共有メモリチャネル）を介して各ＶＭに送信するように構成された、プログラマブルロジックデバイスを含む。図５はネットワークカードの概念図あり、従来のネットワークカードを拡張し、従来のネットワークカードにおいて時刻共有チャネル２４１を開いて、同期した時刻情報を時刻共有チャネル２４１を介して各ＶＭに送信し、すなわち、メモリを共有するという方式で、同期した時刻情報を各ＶＭに送信することを実現する。
【００２９】
ネットワークカードの実施例において、ネットワークカードは、クロックパルス信号を生成するための水晶発振器と、クロックパルス信号に応じて、ネットワークカードにローカルクロック源を提供するための位相ロックループと、ホストと相互接続されるコネクタと、を備える。ネットワークカードはさらに、ホストとサーバとの間の送受信インタラクションにより得られるＰＴＰメッセージに基づいて時間計測幅を取得し、前記時間計測幅に基づいて時刻更新情報を取得し、前記時刻更新情報を前記同期した時刻情報として各ＶＭに送信するように構成されるプログラマブルロジックコントローラを備える。本願の実施例によれば、プログラマブルロジックデバイスは、前記ホストとサーバとの間の送受信インタラクションによって得られるＰＴＰメッセージを認識するメッセージ送受信処理部と、ネットワークカードのローカル時刻をメンテナンスするように構成される時刻メンテナンス処理部と、前記ＰＴＰメッセージに基づいて時刻同期を行うことで、調整後の時間計測幅を取得するように構成される時刻調整処理部と、前記時間計測幅に応じて、前記メンテナンスされるネットワークカードのローカル時刻をリアルタイムで更新して時刻更新情報を得るように構成される時刻同期処理部と、を備えてよいため、前記時刻更新情報を、前記同期した時刻情報として各ＶＭに送信することができる。図６はネットワークカードの概念図あり、新たなスマートネットワークカードとして、ＦＰＧＡの中にメッセージ送受信処理部２４３、時刻メンテナンス処理部２４４、時刻調整処理部２４５、時刻同期処理部２４６が新たに追加され、上記のロジック処理機能ブロックを介して、同期した時刻情報をＳＲ−ＩＯＶハードウェア仮想化という方式で各ＶＭに送信することを実現する。
【００３０】
現在のサーバ上の標準ネットワークカードに対して、ＩＥＥＥ１５８８  Ｖ２時刻同期は単一のＰＦモジュールでしかサポートされず、ＶＭではＩＥＥＥ１５８８  Ｖ２同期を用いて高精度を実現することはできないという課題があるが、本願の上記実施例によれば、ホストと当該ホスト上に配備される各ＶＭ間でネットワークカード時刻を共有し、標準ネットワークカードの時刻同期サポートに対する限界性を解決しており、メモリを共有するという方式またはＳＲ−ＩＯＶハードウェア仮想化という方式（ＳＲ−ＩＯＶ方式に基づくハードウェアアシストの実装方法）を採用し、同期した時刻情報を、ＶＦモジュール形式で複数のＶＭと共有する。当該ホスト内に配備されたネットワークカードに基づいて、ＶＭとＰＴＰ時刻サーバ間の同期を実現し、占有する仮想マシン資源は少なく、複数のＶＭがＩＥＥＥ１５８８  Ｖ２プロトコルを介して高精度な時刻同期を行えるようにし、精度は大幅に向上し、ナノ秒またはナノ秒以上の精度レベル（例えば、ピコ秒レベル）に達することができる。時刻精度は、各ユーザが必要とする時間の度量に基づく分類であり、計測に用いられる方法の一種である。時刻精度は、ナノ秒、ピコ秒、マイクロ秒、ミリ秒、秒、分、時間などに分類され、ナノ秒よりも高精度のレベルの精度は、ピコ秒レベルであってよく、１０００ピコ秒は１ナノ秒に等しい。
【００３１】
ここで、ネットワークカードは、後続の実施例で説明するように、時刻同期加速カードとも呼ばれ、略称は加速カードという。
【００３２】
ネットワークカードには、複数の機能パーテーションを含んでよく、すなわち、１つのＰＦモジュールと複数のＶＦモジュールであり、時刻情報は各機能パーテーションに格納され、各計時周期毎に全てのＰＦモジュールとＶＦモジュールにおける時刻情報が更新され、ＶＭは某ＶＦモジュールにおける時刻情報に直接アクセスできる。ネットワークカードのハードウェア形態は制限されず、独立したＰＴＰ時刻同期機能の加速カードを採用することができ、標準ネットワークカードに加えてＰＴＰクロック同期機能を拡張してもよく、ＰＴＰクロック同期機能をスマートネットワークカードに含めることもできる。
【００３３】
本願の実施例において、メッセージ送受信処理部はさらに、前記ＰＴＰメッセージにタイムスタンプを追加するか、或いは、タイムスタンプを抽出するように構成される。時刻調整処理部はさらに、周期時間ごとに、ホストが定期的にサーバと前記ＰＴＰメッセージをインタラクションする際に存在する時刻ずれを収集し、前記時刻ずれに基づいて調整後の時間計測幅を取得するように構成される。時刻同期に要する同期目標精度および／またはシステム負荷状況に応じて前記周期時間を選択することができる。
【００３４】
本願の実施例において、時刻調整処理部はさらに、ローカル計時周期に達し、時刻同期更新をトリガーした後、前記時刻ずれに応じて調整後の時間計測幅を取得するように構成される。ローカル計時周期は、時刻同期に必要な同期目標精度よりも小さく、ナノ秒レベルまたはそれ以上の精度に設定することができる。
【００３５】
本願の実施例において、時刻メンテナンス処理部はさらに、前記ローカルクロック源に応じて前記ネットワークカードのローカル時刻を保持するように構成される。
【００３６】
本願の実施例は、図７に示されるように、Ｎ個（Ｎ≧２）のＶＭが動作するホストに適用される時刻同期方法を提供する。前記方法は、ステップ２０１〜２０２を含む。
【００３７】
ステップ２０１では、ホストがサーバと時刻同期を行うことで、同期した時刻情報を得る。
【００３８】
ステップ２０２では、ホストが同期した時刻情報を共有チャネルを介して各ＶＭに送信する。
【００３９】
前記同期した時刻情報を用いることにより達成される精度は、ナノ秒級またはナノ秒級以上のより高い精度レベル（例えば、ピコ秒）である。
【００４０】
ホストは、各ＶＭが定期的にトリガーする取得要求に応答して、共有チャネルを介して同期した時刻情報を各ＶＭに送信することができる。
【００４１】
本願の実施例において、ステップ２０２は、各ＶＭが定期的にトリガーする取得要求に応答して、ホストと各ＶＭを連通する共有メモリチャネルを介して前記同期した時刻情報を各ＶＭに送信することを含んでよい。
【００４２】
本願の実施形態において、ホスト上で動作するＮ個（Ｎ≧２）のＶＭの各ＶＭにおいて、各ＶＭは、ホストに対して取得要求を定期的に送信し、ホストが共有チャネルを介して各ＶＭに送信する同期した時刻情報を受信し、同期した時刻情報に基づいて各ＶＭにおけるローカルシステム時刻を修正する。前記同期した時刻情報は、ホストがサーバと時刻同期を行うことにより取得できる。
【００４３】
本願の実施例において、ホストが各ＶＭに送信する同期した時刻情報を受信するステップは、ホストと各ＶＭを連通する共有メモリチャネルを介して前記同期した時刻情報を得るステップを含む。
【００４４】
本願の実施例は、図８に示されるように、Ｎ個（Ｎ≧２）のＶＭが動作するホストに適用される時刻同期方法を提供する。前記方法は、ステップ３０１〜３０２を含む。
【００４５】
ステップ３０１では、ホストがサーバと時刻同期を行うことで、調整後の時間計測幅を得る。
【００４６】
ホストがサーバと時刻同期を行うことで、タイムスタンプが含まれるＰＴＰメッセージを取得し、ＰＴＰメッセージからタイムスタンプを抽出し、タイムスタンプに基づいてホストとサーバとの間に存在する時刻ずれを取得し、時刻ずれに基づいて調整後の時間計測幅を取得することができる。
【００４７】
ステップ３０２では、時間計測幅に基づいて、ホストがローカルでメンテナンスする時刻をリアルタイムで更新し、同期した時刻情報を取得して、各ＶＭに同期した時刻情報を送信する。
【００４８】
各ＶＭが定期的にトリガーする取得要求に応答して、時間計測幅に応じてホストがローカルでメンテナンスする時刻をリアルタイムで更新することで、時刻更新情報を取得し、時刻更新情報を同期した時刻情報として各ＶＭに送信することができる。
【００４９】
前記同期した時刻情報を用いることにより達成される精度は、ナノ秒級またはナノ秒級以上のより高い精度レベル（例えば、ピコ秒）である。
【００５０】
本願の実施例において、各ＶＭは定期的にホストへ取得要求を送信し、ホストがサーバと時刻同期を行った後に調整後の時間計測幅が得られ、ホストがサーバと時刻同期して取得した時刻ずれに基づいて前記時間計測幅が得られる。ホストが各ＶＭに送信する同期した時刻情報を受信し、同期した時刻情報に基づいて各ＶＭにおけるローカルシステム時刻を修正する。時間計測幅に基づいて、ホストがローカルでメンテナンスする時刻をリアルタイムに更新して前記時刻更新情報が得られ、時刻更新情報を前記同期した時刻情報とすることができる。
【００５１】
本願の実施例では、図９に示すように、前記サーバと時刻同期を行うことで、前記同期した時刻情報を得るように構成される第１の情報取得ユニット３１と、同期した時刻情報を共有チャネルを介して各ＶＭに送信するように構成される同期ユニット３２と、を備える時刻同期装置をさらに提供する。前記同期した時刻情報を用いることにより達成される精度は、ナノ秒レベルまたはナノ秒級以上のより高い精度レベルである。
【００５２】
本願の実施例において、同期ユニットはさらに、各ＶＭが定期的にトリガーする取得要求に応答して、前記ホストと各ＶＭを連通する共有メモリチャネルを介して前記同期した時刻情報を各ＶＭに送信するように構成される。
【００５３】
本願の実施例において、前記装置はさらに、ホストが各ＶＭに送信する同期した時刻情報を受信するように構成される受信ユニットと、前記同期した時刻情報に基づいて各ＶＭにおけるローカルシステム時刻を修正するように構成される修正ユニットと、を備える。
【００５４】
本願の実施例において、前記装置はさらに、前記ホストへ取得要求を定期的に送信することで、前記ホストとサーバとの時刻同期を通じて前記同期した時刻情報を取得するように構成された第１の取得部を含む。前記受信ユニットはさらに、前記ホストと各ＶＭを連通する共有メモリチャネルを介して前記同期した時刻情報が得られるように構成される。
【００５５】
本願の実施例では、図１０に示すように、サーバと時刻同期を行うことで調整後の時間計測幅を取得する第２情報取得ユニット４１と、同期した時刻情報を共有チャネルを介して各ＶＭに送信するように構成される同期ユニット４２と、を備える時刻同期装置を提供する。前記同期した時刻情報を用いることにより達成される精度は、ナノ秒級またはナノ秒級以上のより高い精度レベルである。
【００５６】
本願の実施形態において、第２の情報取得ユニットはさらに、サーバと時刻同期を行うことで、タイムスタンプが含まれるＰＴＰメッセージを取得し、前記ＰＴＰメッセージから前記タイムスタンプを抽出し、前記タイムスタンプに基づいて前記ホストとサーバとの間に存在する時刻ずれを取得し、前記時刻ずれに基づいて調整後の時間計測幅を取得するように構成される。
【００５７】
本願の実施例において、同期ユニットはさらに、各ＶＭが定期的にトリガーする取得要求に応答して、前記時間計測幅に応じて、ホストがローカルでメンテナンスする時刻をリアルタイムで更新することで、時刻更新情報を取得し、前記時刻更新情報を前記同期した時刻情報として各ＶＭに送信することができる。
【００５８】
本願の実施例において、前記装置は、前記ホストに対して取得要求を定期的に送信し、前記ホストがサーバと時刻同期を行った後に調整後の時間計測幅を取得し、前記時間計測幅に応じて、ホストがローカルでメンテナンスする時刻をリアルタイムで更新することで前記同期した時刻情報を得るように構成される第２の取得ユニットをさらに含む。前記ホストが前記サーバと時刻同期して取得した時刻ずれに基づいて前記時間計測幅が得られる。
【００５９】
本願の実施例において、前記受信ユニットはさらに、前記時間計測幅に応じてホストがローカルでメンテナンスする時刻をリアルタイムで更新することで得られる時刻更新情報を受信して、前記時刻更新情報を前記同期した時刻情報とするように構成される。
【００６０】
本願の実施例では、図１１に示すように、プロセッサ４１と、プロセッサ上で動作するコンピュータプログラムを格納するためのメモリ４２とを含む時刻同期装置４１０を提供する。図１１に示すように、時刻同期装置４１０はさらに、少なくとも１つの通信インターフェイス４３を含む。時刻同期装置４１０の様々な構成要素は、バスシステム４４によって互いに結合される。バスシステム４４は、これらの構成要素間の接続通信を実現するために用いられると理解できる。バスシステム４４は、データバスの他に、電源バス、制御バス、ステータス信号バスを含んでもよい。説明を分かりやすくするために、図１１では、様々なバスをいずれもバスシステム４４と標記する。通信インターフェイス４３は、他の装置とインタラクションするように構成される。
【００６１】
メモリ４２は、揮発性メモリまたは不揮発性メモリであってもよく、揮発性および不揮発性メモリの両方を含んでもよいと理解できる。不揮発性メモリは、リードオンリーメモリ（ROM，Read  Only  Memory）、プログラマブルリードオンリーメモリ（PROM,  Programmable  Read-Only  Memory）、消去可能プログラマブルリードオンリーメモリ（EPROM，Erasable  Programmable  Read-Only  Memory）、電気的消去可能プログラマブルリードオンリーメモリ（EEPROM，Electrically  Erasable  Programmable  Read-Only  Memory）、磁気ランダムアクセスメモリ（FRAM（登録商標），Ferromagnetic  Random  Access  Memory）、フラッシュメモリ（Flash  Memory）、磁気表面メモリ、光ディスク、またはリードオンリーディスク（CD-ROM，Compact  Disc  Read-Only  Memory）であってよく、磁気表面メモリは、磁気ディスクメモリまたは磁気テープメモリであってよい。揮発性メモリは、外部キャッシュとして使用されるランダムアクセスメモリ（RAM，Random  Access  Memory）であってよい。限定ではなく例として、スタティックランダムアクセスメモリ（SRAM，Static  Random  Access  Memory）、シンクロナススタティックランダムアクセスメモリ（SSRAM，Synchronous  Static  Random  Access  Memory）、ダイナミックランダムアクセスメモリ（DRAM，Dynamic  Random  Access  Memory）、シンクロナスダイナミックランダムアクセスメモリ（SDRAM，Synchronous  Dynamic  Random  Access  Memory）、ダブルデータレートシンクロナスダイナミックランダムアクセスメモリ（DDRSDRAM，Double  Data  Rate  Synchronous  Dynamic  Random  Access  Memory）、エンハンスメント型シンクロナスダイナミックランダムアクセスメモリ（ＥＳＤＲＡＭ、Enhanced  Synchronous  Dynamic  Random  Access  Memory）、シンクロナス接続ダイナミックランダムアクセスメモリ（SLDRAM，SyncLink  Dynamic  Random  Access  Memory）、ダイレクトメモリバスランダムアクセスメモリ（DRRAM，Direct  Rambus  Random  Access  Memory）などの多くの形態のRAMが適用される。本願の実施例に記載されるメモリ42は、これらおよび任意の他の適切な種類のメモリを含むがこれらに限定されない。
【００６２】
本願の実施例は、上述の実施例で提供する計算プログラムを格納して、本願の各実施例による時刻同期方法を実現するためのコンピュータ読み取り可能な記録媒体をさらに提供する。コンピュータ読み取り可能な記憶媒体は、ＦＲＡＭ、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、Ｆｌａｓｈ  Ｍｅｍｏｒｙ、磁気表面メモリ、光ディスク、またはＣＤ−ＲＯＭなどのメモリであってよく、これらのメモリの１つまたは任意の組み合わせを含む様々な装置であってもよい。
【００６３】
なお、本願実施例に記載の技術案は、矛盾なき限り、任意に組み合わせることが可能である。
【００６４】
本願の実施例による上記実現形式において、ネットワークカード内で同期した時刻情報を共有メモリ方式により各ＶＭに効率的に共有することで、標準ネットワークカードに基づいてシンクホストと仮想マシン間でネットワークカード時刻を共有でき、ハードウェアの変更は不要である。既存のネットワークカードに基づき、シンクホストにおいて動作プロトコルとＰＴＰサーバとの時刻同期を行い、シンクホストがネットワークカード時刻を直接取得する。図１２に示すハイパーバイザー（Hypervisor）において共有メモリチャネル、例えば、時刻共有モジュール（Time  Share  Module）を追加することで、ＶＭとシンクホスト間で時刻情報を伝達する。ＶＭはシステム時刻を修正するために共有メモリ内時刻を定期的に取得する。Ｈｙｐｅｒｖｉｓｏｒは、物理サーバとオペレーティングシステムとの間で動作する中間ソフトウェア層であり、複数のオペレーティングシステムとアプリケーションとが１組の基本物理ハードウェアを共有することを許可するため、仮想環境における「メタ」オペレーティングシステムとして見なすこともでき、サーバ上の全ての物理デバイスと仮想マシンに協調してアクセスでき、仮想マシンモニタとも呼ばれる。Ｈｙｐｅｒｖｉｓｏｒは、すべての仮想化技術の核心である。マルチワークロードマイグレーションを非中断的にサポートする能力は、Ｈｙｐｅｒｖｉｓｏｒの基本機能である。サーバがＨｙｐｅｒｖｉｓｏｒを起動して実行すると、各仮想マシンに適切な量のメモリ、ＣＰＵ、ネットワーク、ディスクが割り当てられ、全ての仮想マシンのクライアントオペレーティングシステムがロードされる。
【００６５】
本願の実施例の上記実施方式において、ネットワークカードにおける同期時刻情報を、ＳＲ−ＩＯＶハードウェア仮想化同期方式により各ＶＭに効率的に共有することで、時刻同期加速カード（略称加速カード）を採用することができ、ネットワークカードの形態で実現することができる。ホストは、加速カードに基づいてタイムサーバとＩＥＥＥ１５８８  Ｖ２形式で同期される。各ＶＭが更新後の時刻情報に直接アクセスできるように、加速カード内部は自動的に更新後の時刻情報を複数のＶＦモジュールに配信する。加速カードは、ＰＴＰ同期メッセージの識別、タイムスタンプの自動付与、同期加速カードメンテナンスローカル時刻、同期加速カードが時間計測幅の調整を提供するなどの機能を備える。図１３に示すように、ＳＲ−ＩＯＶハードウェア仮想化という同期方式により、加速カード時刻を各ＶＦモジュールに配信することで、同期精度を向上する。ホストではＰＴＰサーバとの間でプロトコルを実行して時刻同期を行い、各同期周期毎に加速カードとサーバとの時刻のずれに応じて時間計測幅を調整する。加速カードは、調整後の周波数に応じてＶＦモジュール内の時刻情報を計時してリアルタイムで更新する。ＶＭは、ＶＦモジュール内の時刻情報を定期的に取得することで、自身のシステム時刻を修正する。
【００６６】
上述した２つの方式（すなわち、共有メモリ方式とＳＲ−ＩＯＶハードウェア仮想化方式）により、加速カード（ネットワークカードとして実現できる）において同期した時刻情報を効率的に各ＶＭに共有することができる。２つの方式はいずれもＰＴＰ時刻同期プロトコルを採用しており、ＰＴＰプロトコルを用いて仮想マシン時刻を常に修正して同期精度を向上させ、ＶＭにおける時刻ずれを解消している。ＶＭでの時刻同期を実現するために、予め設定された処理を行わずに、ＰＴＰがクロックサーバの時刻を基準源として自動的に取得して、ＶＭの時刻を調整することで、同期精度を向上させることができる。
【００６７】
共有メモリ方式に関しては、標準ネットワークカードに基づいて、ハードウェアの変更をせずに、ホストとＶＭとの間でネットワークカード時刻を共有することができる。ＳＲ−ＩＯＶハードウェア仮想化方式に関しては、ハードウェアサポートを追加する必要があり、同期精度をさらに向上させ、ナノ秒レベルの同期精度を達成することで、ＶＭにおける高精度な時刻同期を実現することができる。ＳＲ−ＩＯＶハードウェア仮想化方式に基づいて加速カードを設計してもよく、標準ネットワークカードに基づいてプログラマブル装置を拡張するか、或いは、スマートネットワークカードに機能を追加することに基づいて、当該加速カードを得ることができる。ＰＴＰプロトコルはホスト上で動作し、加速カードは、同期後の時刻情報を異なるＶＦに配信するだけでよいので、リソースの消費が少なく、ホスト上での各ＶＭの時刻の一貫性も保証される。加速カードは、スマートネットワークカードとして実現でき、ホストは当該スマートネットワークカードおよび時刻サーバに基づいてＩＥＥＥ１５８８  Ｖ２の形式で同期される。スマートネットワークカード内部では、各ＶＭが、更新後の時刻情報に直接アクセスできるように、更新後の時刻情報を複数のＶＦモジュールに自動的に配信する。スマートネットワークカードは、１つのＰＦモジュールと、複数のＶＦモジュールとを含むことができ、各ＶＦモジュールは、独立したＰＣＩＥ装置として提示され、時刻情報は、ＰＦモジュールとＶＦモジュールとの間で共有される。ＶＭは、一定のタイミングで取得した、対応するＶＦモジュールの時刻情報に従ってローカルシステム時刻を調整する。スマートネットワークカードは、標準サーバのＰＣＩＥスロット内に展開される。スマートネットワークカードには、標準ネットワークカードのメッセージ送受信を実現するイーサネットメッセージ送受信機能モジュールと、ＰＴＰイベントメッセージを識別してタイムスタンプを追加送受信するＰＴＰメッセージタイムスタンプ機能モジュールと、ネットワークカードのクロック源としてのローカル時刻を保持する計時モジュールと、ソフトウェアがＰＴＰ同期結果に応じてローカル時刻を調整できるように、ユーザがローカル計時周波数を調整するために用いられる時間計測幅調整モジュールと、時刻配信モジュールと、を備え、ネットワークカードには複数のＶＦモジュールが含まれ、時刻配信モジュールを介して全てのＶＦモジュールに時刻更新情報を配信できる。当該スマートネットワークカードにより、ユーザは、ＶＭクライアントマシンを構築する際に、ＶＭクライアントマシンとネットワークカードの某ＶＦモジュールとをバインドし、ＶＭクライアントマシンのソフトウェアは、定期的にＶＦモジュールを取得して、時刻情報で自身のシステム時刻を調整する。当該スマートネットワークカードに基づくＶＭ時刻同期精度は、ナノ秒レベルに達することが可能である。
【００６８】
以下では、本願の実施例の各応用場面を用いて例を挙げて説明する。
【００６９】
本実施例では、ホストとＶＭとの間でネットワークカードのＰＴＰ時刻同期情報を共有する方法を中心に説明するが、これには、一般的なネットワークカードに基づく共有メモリ方式とＳＲ−ＩＯＶに基づくクロック同期加速カード方式の２種類が含まれる。ＳＲ−ＩＯＶに基づくクロック同期加速カードは、ハードウェアの方式によってＩＥＥＥ１５８８  Ｖ２で同期後の時刻をホストと各ＶＭの間で共有できる。図１４に示すように、当該加速カードは、ＰＴＰメッセージ処理モジュールと、時刻メンテナンスモジュールと、時間計測幅調整モジュールと、時刻情報同期モジュールとを備える。当該加速カードに基づいて、ユーザはホストにおいて、ＰＴＰプロトコルを実行し、加速カードとＰＴＰサーバとの間で時刻同期を行う。ユーザは、ＶＭを構築するとき、ＶＭを加速カードの某ＶＦにバインドする。ＶＭは、バインドされたＶＦの時刻情報を定期的に取得することで、ＶＭのシステム時刻を調整する。ＰＴＰメッセージ処理モジュールは、加速カードを通過したＰＴＰプロトコルメッセージを識別し、タイムスタンプを付加および抽出するように構成される。時刻メンテナンスモジュールは、クロック源を内部に有することで、ローカル時刻を保持する。時間計測幅調整モジュールは、ローカル時間計測幅を調整することで、クロック周波数を調整する機能を実現するように構成される。加速カードには複数の機能パーテーションが含まれ、即ち、１つのＰＦモジュールと複数のＶＦモジュールであり、各機能パーテーションには時刻情報が格納され、時刻情報同期モジュールは、各計時周期内で全てのＰＦモジュールとＶＦモジュールの時刻情報を更新することで、ＶＭが某ＶＦモジュールの時刻情報に直接アクセスして時刻同期を行うことができる。本実施例の加速カードのハードウェア形態は限定されず、独立した、ＰＴＰ時刻同期機能を有する加速カードであってよく、標準ネットワークカードに基づいてＰＴＰクロック同期機能を拡張してもよく、ＰＴＰクロック同期機能をスマートネットワークカードに含めることもできる。
【００７０】
本実施例において、ホストとＶＭとの間でＰＴＰ同期時刻情報を共有する方式としては、メモリ共有方式と、ＳＲ−ＩＯＶに基づくクロック同期加速カード方式の２種類がある。
【００７１】
図１２に示すように、共有メモリ方式は、既存のネットワークカードに基づいて実現することができる。ホスト内でプロトコルを実行してＰＴＰサーバと時刻同期を行うことで、ホストは、ネットワークカード時刻を直接取得でき、Ｈｙｐｅｒｖｉｓｏｒにおいて共有メモリチャネルを追加して、ＶＭとホストとの間で時刻情報を伝達する。ＶＭは、共有メモリ内の時刻を定期的に取得することで、システム時刻を修正する。
【００７２】
図１３に示すように、ＳＲ−ＩＯＶに基づくクロック同期加速カード方式は、ハードウェアの方式によって、ネットワークカード時刻を各ＶＦモジュールに配信することで、同期精度を向上させる。ホストでプロトコルを実行して、ＰＴＰサーバと時刻同期を行い、各同期サイクルにおいて加速カードとサーバの時刻ずれに応じて時間計測幅を調整する。ネットワークカードは、調整後の周波数で計時して、ＶＦモジュールにおける時刻情報をリアルタイムで更新する。ＶＭは、ＶＦモジュールにおける時刻を定期的に取得することで、自身のシステム時刻を修正する。対応するプロセスには、ホストでＰＴＰプロトコルを実行することで、ＰＴＰサーバと定期的に同期すること、時刻ずれ量を算出して、加速カードに格納すること、加速カードが時刻ずれに応じてローカル時間計測幅を調整すること、ローカル時間計測幅に基づいて（例えば、調整後の周波数で計時）、ＶＦ内の時刻情報をリアルタイムで更新して、時刻更新情報を取得すること、ＶＭが加速カードから時刻（例えば、時刻更新情報）を取得して、自身のシステム時刻を調整することが含まれる。
【００７３】
本実施例では、ホストでＰＴＰプロトコルを実行し、定期的に加速カードの時間計測幅を調整し、加速カード内のタイミング情報を常に更新し、各ＶＭが加速カード時刻を定期的に取得してそのシステム時刻を調整する。インタラクション全体は３つの部分に分けられる。
【００７４】
第１の部分では、図１５に示すように、加速カードが時間計測幅を調整する。
【００７５】
ステップ４０１では、ホストにおいてＰＴＰプロトコルが実行される。
【００７６】
ステップ４０２では、ＰＴＰサーバと定期的にメッセージをインタラクションする。同期目標精度およびシステム負荷の状況に応じて周期時間を選択することができる。
【００７７】
ステップ４０３では、各サイクル内で加速カードとＰＴＰサーバの時刻ずれを算出する。
【００７８】
ステップ４０４では、ずれに応じて加速カードの時間計測幅を調整することにより、加速カードとＰＴＰタイムサーバとが同じ周波数、同じ位相となるように、加速カードのローカル時刻を修正する。
【００７９】
第２の部分では、図１６に示すように、ネットワークカードの時刻を更新する。
【００８０】
ステップ５０１では、ローカル計時周期で時刻更新をトリガーする。ここでの計時周期は、加速カードハードウェアの計時周期であり、目標精度より小さく、数ナノ秒に設定することができる。
【００８１】
ステップ５０２では、ローカルクロックカウントと更新された時間計測幅を読み込むことで、現在時刻を算出する。
【００８２】
ステップ５０３では、ネットワークカードの時刻を更新し、ＰＦモジュールと各ＶＦモジュールの時刻を更新することが含まれる。
【００８３】
第３の部分では、図１７に示すように、ＶＭ時刻を修正する。
【００８４】
ステップ６０１では、ＶＭを構築するときに、ＶＭを、加速カードの某ＶＦモジュールとバインドする。
【００８５】
ステップ６０２では、ＶＭは、ローカルシステム時刻およびＶＦモジュールにおける時刻情報を定期的に取得する。同期精度要求およびシステム負荷状況に応じて周期時間を選択することができる。
【００８６】
ステップ６０３では、システム時刻と加速カードの時刻ずれを算出する。
【００８７】
ステップ６０４では、時刻ずれに応じて仮想システムのローカル時刻カウント周波数が調整される。
【００８８】
基準時刻に対するＶＭのシステム時刻の調整係数は、以下の方法で決定される。
【００８９】
時刻差が負数であれば、調整期間と時刻差の絶対値と、調整期間との比率を算出し、当該比率を調整係数とし、時刻差が正数であれば、調整期間と時刻差の絶対値との差と、調整期間との比率を算出し、当該比率を調整係数とし、ＶＭシステムクロック周波数を調整することで時刻同期を実現する。ＶＭに関して言えば、時刻の突然変異がないため、ＶＭ上での時刻に関する業務の実行順序は変わらず、すなわち、ＶＭ上のデータベースクラスイベントのデリケートな業務に影響を与えない。同時に、時刻同期過程において、ＰＴＰサービスに依存することなく、ＶＭ稼動中において業務を中断せず、時刻ずれの大きさにかかわらず、ＶＭ時刻のスムーズな調整を実現することができる。
【００９０】
本願の実施例の上記装置はソフトウェア機能モジュールの形態で実現され、独立した製品として販売または使用される場合、１つのコンピュータ読み取り可能な記録媒体に記録されてもよい。このような理解によれば、本願の実施例の技術案は、１台のコンピュータ装置（パーソナルコンピュータ、サーバ、またはネットワーク装置などであってもよい）に本願の様々な実施例で説明される方法の全てまたは一部を実行させるためのいくつかの指令を含む、１つの記憶媒体に記憶されたソフトウェア製品の形態で具現化されてもよい。前記の記憶媒体は、ＵＳＢディスク、リムーバブルハードディスク、リードオンリーメモリ（ROM，Read  Only  Memory）、磁気ディスク、光ディスクなどのプログラムコードを記憶できる種々の媒体を含む。このように、本願の実施例は、任意の特定のハードウェアおよびソフトウェアの組み合わせに限定されない。
【００９１】
本願の好ましい実施例は、例示を目的として開示されているが、様々な改善、追加、および置換が可能であると当業者は認識しているため、本願の範囲は、上記の実施例に限定されるべきではない。
【図１】
2021506037.tif 000003
【図２】
2021506037.tif 000004
【図３】
2021506037.tif 000005
【図４】
2021506037.tif 000006
【図５】
2021506037.tif 000007
【図６】
2021506037.tif 000008
【図７】
2021506037.tif 000009
【図８】
2021506037.tif 000010
【図９】
2021506037.tif 000011
【図１０】
2021506037.tif 000012
【図１１】
2021506037.tif 000013
【図１２】
2021506037.tif 000014
【図１３】
2021506037.tif 000015
【図１４】
2021506037.tif 000016
【図１５】
2021506037.tif 000017
【図１６】
2021506037.tif 000018
【図１７】
2021506037.tif 000019
【国際調査報告】
2021506037.tif 000020
2021506037.tif 000021
2021506037.tif 000022
2021506037.tif 000023