以下では図面および実施例を組み合わせて、本願について更に詳細に説明する。ここに提供する実施例は、本願を説明するためのものにすぎず、本願を限定するためのものではないと理解されたい。また、以下に提供する実施例は、本願を実施するための実施例の一部であり、本願の実施例の全てを提供するのではない。矛盾しない限り、本願の実施例に記載された技術案は、任意に組み合わせて実施することができる。
本出願の実施例において、用語「含む」、「含有する」またはその任意のほかの変形は、非排他的な含有を網羅するということを意味し、これにより一連の要素を含む方法または装置には、明記された要素を含むだけでなく、明確に列挙されていないその他の要素、もしくは、実施方法、または装置固有の要素をさらに含むということを意味する。より多くの制限がない場合、「……を含む」という語句によって限定される要素は、その要素を含む方法または装置に、別途の関連要素(例えば、方法におけるステップまたは装置におけるユニットであり、ユニットは、回路の一部、プロセッサの一部、プログラムまたはソフトウェアの一部などであり得る)がさらに存在することを排除するものではない。
例えば、本願の実施例が提供する時刻同期方法は一連のステップを含むが、本願の実施例が提供する時刻同期方法は記載されたステップに限定されず、同様に、本願の実施例が提供するネットワークカードおよび時刻同期装置は一連の部品およびユニットを含むが、本願の実施例が提供するネットワークカードおよび時刻同期装置は、明記された部品およびユニットを含むことに限定されず、関連情報を取得するために、または、情報に基づいて処理を行うために必要なユニットを含んでもよい。
なお、本願の実施例に係る「第1」、「第2」などの用語は、類似する対象を区別するためにのみ使用され、対象の特定順序を表すものではない。なお、「第1」、「第2」などにより区別される対象は必要に応じて入れ替え可能であり、ここでの図示または説明の順序以外の順序で、ここで説明する本願の実施例を実施することも可能であると理解されたい。
図1は、VMにおいてNTPで時刻同期を行う方法の概念図である。図1では、VMソフトウェアにより、物理サーバ11上に1つまたは複数の仮想コンピュータをシミュレートすることができ、すなわち、物理サーバ11上で複数のVMが動作することにより、VMを実際のコンピュータのように動作させ、例えば、VMにオペレーティングシステムおよびアプリケーションプログラムをインストールすること、VMを通じてネットワークリソースにアクセスすることなどである。物理サーバ11とNTPサーバ12との間はNTPを用いてメッセージのインタラクションが行われる。NTPは、コンピュータの時刻を同期させるためのプロトコルであり、コンピュータに、そのサーバまたはクロック源(例えば、クォーツ時計、GPSなど)を同期させることで、時刻の修正を提供する。複数のVMを動作する物理サーバは、シンクホストまたは物理ホストと呼ばれることもある。
VMにおけるクロック割り込みはシミュレートされており、精確なタイミングでの発行が保証できず、遅延が生じる可能性がある。クロック割り込み処理は「プリエンプティブ」ではなく、VMシステムの実行中にのみ実行可能である。これにより、VMにおけるシステム時刻は、物理マシンのクロック源精度とソフトウェアスケジューリングとの両方の影響を受ける。現在、VMシステムの時刻同期は、NTP伝送方式で実現される。このプロトコルはマイクロ秒(ms)レベルの時刻伝達精度しか満たすことができず、時刻伝達精度が低い。
本願の実施例によるネットワークカード(ホストスロット内に配置可能なネットワークカード)は、同期した時刻情報を、共有チャネルを介して、ホスト上で動作するN個(N≧2)のVMのそれぞれに送信することにより、時刻伝達の精度が低いという問題を解決することができる。ホストは物理サーバであってよく、ネットワークカードはサーバスロット内、例えば、高速シリアルコンピュータ拡張バス標準(PCIE,Peripheral Component Interconnect Express)スロット内に配置することができる。PCIEは、高速シリアルポイントツーポイントデュアルチャネル高帯域幅伝送に属し、接続されたデバイスは、個別チャネル帯域幅が割り当てられており、バス帯域幅を共有しておらず、主に、アクティブ電源管理、エラー報告、エンドツーエンドの信頼性伝送、ホットプラグ、およびサービス品質などの機能をサポートしている。
図2は、本願の実施例の応用場面のアーキテクチャ図である。
図2に示すように、ホストは物理サーバ102であり、ホストオペレーティングシステムが実行される。物理サーバ102とPTPサーバ101はPTPを用いてメッセージのインタラクションを行う。NTPプロトコルを用いた伝送方式で実現される時刻同期は、マイクロ秒(ms)レベルの時刻伝達精度しか満たすことができず、高精度な時刻同期に必要なナノ秒(ns)レベルの時刻精度にははるかに及ばない。IEEE1588 V2プロトコルを用いたクロックは、高精度なクロックであり、例えば双方向チャネルを用いること、精度がnsレベルであること、低コストであること、様々なアクセス環境に対応できることなどの利点がある。5Gの場面に関していえば、低遅延高信頼業務は、5G細分割アプリケーションの1つであり、自動運転、産業制御などの新しい業務傾向の全てにおいて考慮され、これらの業務傾向は、いずれも遅延の要求が高く、将来のネットワークインフラストラクチャが汎用サーバに徐々に置き換えられるとき、VMまたはコンテナに業務を配備することができる。そのため、VMではIEEE1588 V2プロトコルを用いて高精度な時刻同期を実現することが特に必要となる。本願の実施例では、IEEE1588 V2プロトコルを採用し、IEEE1588 V2クロックに基づいて物理サーバ102とPTPサーバ101とから構成されるシステムを、マスタスレーブ同期システムとすることができる。システムの同期過程において、マスタクロックは、PTPプロトコルおよび時刻情報を定期的に発行して、スレーブクロックポートは、マスタクロックポートから送信されたタイムスタンプ情報を受信し、システムはこれに基づいてマスタスレーブ回線時刻遅延およびマスタスレーブ時刻差を計算し、スレーブ装置時刻がマスタ装置時刻と一致する周波数および位相を維持するように、その時刻差を用いてローカル時刻を調整する。
PTPプロトコルは、ハードウェアとソフトウェアとを連携させるという方式を用いて、より精確な時刻同期を取得する。クロックポートハードウェアデバイス(例えば、ネットワークカード)は、PTP同期メッセージにタイムスタンプ情報を付加することをサポートする必要がある。SR−IOV技術は、ハードウェアに基づく仮想化ソリューションであり、性能およびスケーラビリティを向上させることができる。SR−IOV基準は、PCIEのように、VMクライアントマシン間で高速周辺機器の相互接続を効率的に共有できることを許可し、また、これはハードウェアで実現され、非常に高いI/O性能を取得できる。SR−IOVネットワークデバイスは、仮想機能(VF,Virtual Function)モジュールを定義しており、各VFモジュールは個別のネットワークカードとして使用でき、これらのVF機能は、一般的にPCIE透過伝送技術によってVMクライアントに組み込まれる。標準ネットワークカード設計において、時刻同期機能はVFモジュールではサポートされず、単一の物理的機能(PF,Physical Function)モジュールでしか使用できない。しかし、PFモジュールの数は限られているため、PTP方式を用いて時刻を同期できるVMモジュールはごくわずかであることから、VMにおける時刻同期の精度は高くなくなる。
PTPプロトコルは、イーサネット(登録商標)により各装置のクロックを同期させ、より高い同期精度を達成できる。物理サーバ102では、複数のVMが動作し、図2では複数のVM 1031〜1034が開示されている。各VMは仮想化されたコンピュータであるが、実際のコンピュータと同じように動作でき、例えば、オペレーティングシステムのインストール、アプリケーションのインストール、ネットワークリソースへのアクセスなどができる。物理サーバ102には、スロット(例えば、PCIEスロット)内に位置するネットワークカードが配設され、物理サーバ102とPTPサーバ101との間で送受信されるPTPメッセージを識別し、更新された時刻同期情報を各VMに送信することで、複数のVM間で時刻同期更新を実現し、精度を高めることに用いられる。
上記の本願の実施例に対する説明に基づいて、次に、本願の実施例が提供するネットワークカード、時刻同期方法、および装置などに対して以下の通り説明する。
本願の実施例のネットワークカードは、クロックパルス信号を生成するように構成される水晶発振器と、クロックパルス信号に応じて、ネットワークカードにローカルクロック源を提供するように構成される位相ロックループと、ホストと相互接続されるコネクタと、を含む。前記ネットワークカードは、同期した時刻情報を共有チャネルを介して、ホスト上で動作するN個(N≧2)のVMにおける各VMに送信するように構成された、例えばフィールドプログラマブルゲートアレイ(FPGA,Field-Programmable Gate Array)などのプログラマブルロジックデバイスをさらに含むことができる。
なお、共有チャネルがソフトウェア共有方式で実現される場合、ホストと各VMを連通する共有メモリチャネルを介して同期した時刻情報を各VMに送信することができ、ネットワークカードのハードウェア自体は変化しない。共有チャネルがハードウェア共有方式によって実現される場合、ネットワークカードに新たに追加されたプログラマブルロジックデバイス内の複数のプロセッサ(例えば、メッセージ送受信処理部、時刻メンテナンス処理部、時刻調整処理部、時刻同期処理部)で処理を行い、時刻更新情報を同期した時刻情報として各VMに送信する。
共有チャネルをハードウェア共有方式で実現する場合、ネットワークカードの概念図は図3に示す通りである。このネットワークカードは、水晶発振器21、位相ロックリング22、コネクタ23を備える。水晶発振器21および位相ロックループ22は、ネットワークカードにローカルクロック源を提供する。水晶発振器21と位相ロックループ22との間は信号接続され、水晶発振器21は生成したクロックパルス信号を位相ロックループ22に出力し、位相ロックループ22はクロックパルス信号に基づいてローカルクロック源を生成してネットワークカードに提供する。コネクタ23は、ホスト(例えば、図2の物理サーバ)スロットおよびホストボディに相互接続される。ネットワークカードは、ネットワークカードハードウェアを介してホストと各VMとの間で共有チャネルを共有して、同期した時刻情報を各VMに送信するように構成されたプログラマブルロジックデバイス24をさらに含む。ネットワークカードハードウェアの変更について、図6を参照して具体的に説明する。複数のVMはホスト上で動作し、ホストからフィードバックされる同期した時刻情報によりそれぞれの時刻同期修正を行う。
ネットワークカードの実施例は図4に示す通りであり、上記のコンポーネントを含むほか、ネットワークカードはさらに、バスI2Cを介して帯域外管理機能を提供するように構成された帯域外管理回路を含むことができる。FPGAには、FPGAに基づくプログラミングを実行して得られた指令、例えば、同期した時刻情報を、ホスト上で動作する複数のVMにおける各VMに送信するという指令を格納するように構成されたメモリコントローラが含まれる。また、指令はさらに、例えば、PTPメッセージ処理、時刻情報のメンテナンス、時刻同期、時間計測幅調整などのハードウェア補助機能を実現して、ホスト側ソフトウェアと連携し、仮想マシンでの時刻同期を完成させることもできる。物理(PHY)デバイスは、RJ45電気ポートおよびSFP光ポートをパネルに引き出すように構成される。JTAGデバッグインターフェイスは、デバッグと最初にバージョンをロードする時に使用されるように構成される。フラッシュメモリ(Flash)ストレージおよびメモリは、ネットワークカードファームウェアのバージョンをFlashストレージに格納するというような、指令またはデータを格納するために用いられる。ドーターカード電源は、ネットワークカードに電力を供給するネットワークカード電源モジュールである。
ネットワークカードの実施例において、ネットワークカードは、クロックパルス信号を生成するための水晶発振器と、クロックパルス信号に応じて、ネットワークカードにローカルクロック源を提供するための位相ロックループと、ホストと相互接続されるコネクタと、を備える。ネットワークカードはさらに、サーバとの時刻同期を行うことにより、前記同期した時刻情報を得て、前記同期した時刻情報を共有メモリチャネル(例えば、ホストと各VMを連通する共有メモリチャネル)を介して各VMに送信するように構成された、プログラマブルロジックデバイスを含む。図5はネットワークカードの概念図あり、従来のネットワークカードを拡張し、従来のネットワークカードにおいて時刻共有チャネル241を開いて、同期した時刻情報を時刻共有チャネル241を介して各VMに送信し、すなわち、メモリを共有するという方式で、同期した時刻情報を各VMに送信することを実現する。
ネットワークカードの実施例において、ネットワークカードは、クロックパルス信号を生成するための水晶発振器と、クロックパルス信号に応じて、ネットワークカードにローカルクロック源を提供するための位相ロックループと、ホストと相互接続されるコネクタと、を備える。ネットワークカードはさらに、ホストとサーバとの間の送受信インタラクションにより得られるPTPメッセージに基づいて時間計測幅を取得し、前記時間計測幅に基づいて時刻更新情報を取得し、前記時刻更新情報を前記同期した時刻情報として各VMに送信するように構成されるプログラマブルロジックコントローラを備える。本願の実施例によれば、プログラマブルロジックデバイスは、前記ホストとサーバとの間の送受信インタラクションによって得られるPTPメッセージを認識するメッセージ送受信処理部と、ネットワークカードのローカル時刻をメンテナンスするように構成される時刻メンテナンス処理部と、前記PTPメッセージに基づいて時刻同期を行うことで、調整後の時間計測幅を取得するように構成される時刻調整処理部と、前記時間計測幅に応じて、前記メンテナンスされるネットワークカードのローカル時刻をリアルタイムで更新して時刻更新情報を得るように構成される時刻同期処理部と、を備えてよいため、前記時刻更新情報を、前記同期した時刻情報として各VMに送信することができる。図6はネットワークカードの概念図あり、新たなスマートネットワークカードとして、FPGAの中にメッセージ送受信処理部243、時刻メンテナンス処理部244、時刻調整処理部245、時刻同期処理部246が新たに追加され、上記のロジック処理機能ブロックを介して、同期した時刻情報をSR−IOVハードウェア仮想化という方式で各VMに送信することを実現する。
現在のサーバ上の標準ネットワークカードに対して、IEEE1588 V2時刻同期は単一のPFモジュールでしかサポートされず、VMではIEEE1588 V2同期を用いて高精度を実現することはできないという課題があるが、本願の上記実施例によれば、ホストと当該ホスト上に配備される各VM間でネットワークカード時刻を共有し、標準ネットワークカードの時刻同期サポートに対する限界性を解決しており、メモリを共有するという方式またはSR−IOVハードウェア仮想化という方式(SR−IOV方式に基づくハードウェアアシストの実装方法)を採用し、同期した時刻情報を、VFモジュール形式で複数のVMと共有する。当該ホスト内に配備されたネットワークカードに基づいて、VMとPTP時刻サーバ間の同期を実現し、占有する仮想マシン資源は少なく、複数のVMがIEEE1588 V2プロトコルを介して高精度な時刻同期を行えるようにし、精度は大幅に向上し、ナノ秒またはナノ秒以上の精度レベル(例えば、ピコ秒レベル)に達することができる。時刻精度は、各ユーザが必要とする時間の度量に基づく分類であり、計測に用いられる方法の一種である。時刻精度は、ナノ秒、ピコ秒、マイクロ秒、ミリ秒、秒、分、時間などに分類され、ナノ秒よりも高精度のレベルの精度は、ピコ秒レベルであってよく、1000ピコ秒は1ナノ秒に等しい。
ここで、ネットワークカードは、後続の実施例で説明するように、時刻同期加速カードとも呼ばれ、略称は加速カードという。
ネットワークカードには、複数の機能パーテーションを含んでよく、すなわち、1つのPFモジュールと複数のVFモジュールであり、時刻情報は各機能パーテーションに格納され、各計時周期毎に全てのPFモジュールとVFモジュールにおける時刻情報が更新され、VMは某VFモジュールにおける時刻情報に直接アクセスできる。ネットワークカードのハードウェア形態は制限されず、独立したPTP時刻同期機能の加速カードを採用することができ、標準ネットワークカードに加えてPTPクロック同期機能を拡張してもよく、PTPクロック同期機能をスマートネットワークカードに含めることもできる。
本願の実施例において、メッセージ送受信処理部はさらに、前記PTPメッセージにタイムスタンプを追加するか、或いは、タイムスタンプを抽出するように構成される。時刻調整処理部はさらに、周期時間ごとに、ホストが定期的にサーバと前記PTPメッセージをインタラクションする際に存在する時刻ずれを収集し、前記時刻ずれに基づいて調整後の時間計測幅を取得するように構成される。時刻同期に要する同期目標精度および/またはシステム負荷状況に応じて前記周期時間を選択することができる。
本願の実施例において、時刻調整処理部はさらに、ローカル計時周期に達し、時刻同期更新をトリガーした後、前記時刻ずれに応じて調整後の時間計測幅を取得するように構成される。ローカル計時周期は、時刻同期に必要な同期目標精度よりも小さく、ナノ秒レベルまたはそれ以上の精度に設定することができる。
本願の実施例において、時刻メンテナンス処理部はさらに、前記ローカルクロック源に応じて前記ネットワークカードのローカル時刻を保持するように構成される。
本願の実施例は、図7に示されるように、N個(N≧2)のVMが動作するホストに適用される時刻同期方法を提供する。前記方法は、ステップ201〜202を含む。
ステップ201では、ホストがサーバと時刻同期を行うことで、同期した時刻情報を得る。
ステップ202では、ホストが同期した時刻情報を共有チャネルを介して各VMに送信する。
前記同期した時刻情報を用いることにより達成される精度は、ナノ秒級またはナノ秒級以上のより高い精度レベル(例えば、ピコ秒)である。
ホストは、各VMが定期的にトリガーする取得要求に応答して、共有チャネルを介して同期した時刻情報を各VMに送信することができる。
本願の実施例において、ステップ202は、各VMが定期的にトリガーする取得要求に応答して、ホストと各VMを連通する共有メモリチャネルを介して前記同期した時刻情報を各VMに送信することを含んでよい。
本願の実施形態において、ホスト上で動作するN個(N≧2)のVMの各VMにおいて、各VMは、ホストに対して取得要求を定期的に送信し、ホストが共有チャネルを介して各VMに送信する同期した時刻情報を受信し、同期した時刻情報に基づいて各VMにおけるローカルシステム時刻を修正する。前記同期した時刻情報は、ホストがサーバと時刻同期を行うことにより取得できる。
本願の実施例において、ホストが各VMに送信する同期した時刻情報を受信するステップは、ホストと各VMを連通する共有メモリチャネルを介して前記同期した時刻情報を得るステップを含む。
本願の実施例は、図8に示されるように、N個(N≧2)のVMが動作するホストに適用される時刻同期方法を提供する。前記方法は、ステップ301〜302を含む。
ステップ301では、ホストがサーバと時刻同期を行うことで、調整後の時間計測幅を得る。
ホストがサーバと時刻同期を行うことで、タイムスタンプが含まれるPTPメッセージを取得し、PTPメッセージからタイムスタンプを抽出し、タイムスタンプに基づいてホストとサーバとの間に存在する時刻ずれを取得し、時刻ずれに基づいて調整後の時間計測幅を取得することができる。
ステップ302では、時間計測幅に基づいて、ホストがローカルでメンテナンスする時刻をリアルタイムで更新し、同期した時刻情報を取得して、各VMに同期した時刻情報を送信する。
各VMが定期的にトリガーする取得要求に応答して、時間計測幅に応じてホストがローカルでメンテナンスする時刻をリアルタイムで更新することで、時刻更新情報を取得し、時刻更新情報を同期した時刻情報として各VMに送信することができる。
前記同期した時刻情報を用いることにより達成される精度は、ナノ秒級またはナノ秒級以上のより高い精度レベル(例えば、ピコ秒)である。
本願の実施例において、各VMは定期的にホストへ取得要求を送信し、ホストがサーバと時刻同期を行った後に調整後の時間計測幅が得られ、ホストがサーバと時刻同期して取得した時刻ずれに基づいて前記時間計測幅が得られる。ホストが各VMに送信する同期した時刻情報を受信し、同期した時刻情報に基づいて各VMにおけるローカルシステム時刻を修正する。時間計測幅に基づいて、ホストがローカルでメンテナンスする時刻をリアルタイムに更新して前記時刻更新情報が得られ、時刻更新情報を前記同期した時刻情報とすることができる。
本願の実施例では、図9に示すように、前記サーバと時刻同期を行うことで、前記同期した時刻情報を得るように構成される第1の情報取得ユニット31と、同期した時刻情報を共有チャネルを介して各VMに送信するように構成される同期ユニット32と、を備える時刻同期装置をさらに提供する。前記同期した時刻情報を用いることにより達成される精度は、ナノ秒レベルまたはナノ秒級以上のより高い精度レベルである。
本願の実施例において、同期ユニットはさらに、各VMが定期的にトリガーする取得要求に応答して、前記ホストと各VMを連通する共有メモリチャネルを介して前記同期した時刻情報を各VMに送信するように構成される。
本願の実施例において、前記装置はさらに、ホストが各VMに送信する同期した時刻情報を受信するように構成される受信ユニットと、前記同期した時刻情報に基づいて各VMにおけるローカルシステム時刻を修正するように構成される修正ユニットと、を備える。
本願の実施例において、前記装置はさらに、前記ホストへ取得要求を定期的に送信することで、前記ホストとサーバとの時刻同期を通じて前記同期した時刻情報を取得するように構成された第1の取得部を含む。前記受信ユニットはさらに、前記ホストと各VMを連通する共有メモリチャネルを介して前記同期した時刻情報が得られるように構成される。
本願の実施例では、図10に示すように、サーバと時刻同期を行うことで調整後の時間計測幅を取得する第2情報取得ユニット41と、同期した時刻情報を共有チャネルを介して各VMに送信するように構成される同期ユニット42と、を備える時刻同期装置を提供する。前記同期した時刻情報を用いることにより達成される精度は、ナノ秒級またはナノ秒級以上のより高い精度レベルである。
本願の実施形態において、第2の情報取得ユニットはさらに、サーバと時刻同期を行うことで、タイムスタンプが含まれるPTPメッセージを取得し、前記PTPメッセージから前記タイムスタンプを抽出し、前記タイムスタンプに基づいて前記ホストとサーバとの間に存在する時刻ずれを取得し、前記時刻ずれに基づいて調整後の時間計測幅を取得するように構成される。
本願の実施例において、同期ユニットはさらに、各VMが定期的にトリガーする取得要求に応答して、前記時間計測幅に応じて、ホストがローカルでメンテナンスする時刻をリアルタイムで更新することで、時刻更新情報を取得し、前記時刻更新情報を前記同期した時刻情報として各VMに送信することができる。
本願の実施例において、前記装置は、前記ホストに対して取得要求を定期的に送信し、前記ホストがサーバと時刻同期を行った後に調整後の時間計測幅を取得し、前記時間計測幅に応じて、ホストがローカルでメンテナンスする時刻をリアルタイムで更新することで前記同期した時刻情報を得るように構成される第2の取得ユニットをさらに含む。前記ホストが前記サーバと時刻同期して取得した時刻ずれに基づいて前記時間計測幅が得られる。
本願の実施例において、前記受信ユニットはさらに、前記時間計測幅に応じてホストがローカルでメンテナンスする時刻をリアルタイムで更新することで得られる時刻更新情報を受信して、前記時刻更新情報を前記同期した時刻情報とするように構成される。
本願の実施例では、図11に示すように、プロセッサ41と、プロセッサ上で動作するコンピュータプログラムを格納するためのメモリ42とを含む時刻同期装置410を提供する。図11に示すように、時刻同期装置410はさらに、少なくとも1つの通信インターフェイス43を含む。時刻同期装置410の様々な構成要素は、バスシステム44によって互いに結合される。バスシステム44は、これらの構成要素間の接続通信を実現するために用いられると理解できる。バスシステム44は、データバスの他に、電源バス、制御バス、ステータス信号バスを含んでもよい。説明を分かりやすくするために、図11では、様々なバスをいずれもバスシステム44と標記する。通信インターフェイス43は、他の装置とインタラクションするように構成される。
メモリ42は、揮発性メモリまたは不揮発性メモリであってもよく、揮発性および不揮発性メモリの両方を含んでもよいと理解できる。不揮発性メモリは、リードオンリーメモリ(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)、エンハンスメント型シンクロナスダイナミックランダムアクセスメモリ(ESDRAM、Enhanced Synchronous Dynamic Random Access Memory)、シンクロナス接続ダイナミックランダムアクセスメモリ(SLDRAM,SyncLink Dynamic Random Access Memory)、ダイレクトメモリバスランダムアクセスメモリ(DRRAM,Direct Rambus Random Access Memory)などの多くの形態のRAMが適用される。本願の実施例に記載されるメモリ42は、これらおよび任意の他の適切な種類のメモリを含むがこれらに限定されない。
本願の実施例は、上述の実施例で提供する計算プログラムを格納して、本願の各実施例による時刻同期方法を実現するためのコンピュータ読み取り可能な記録媒体をさらに提供する。コンピュータ読み取り可能な記憶媒体は、FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁気表面メモリ、光ディスク、またはCD−ROMなどのメモリであってよく、これらのメモリの1つまたは任意の組み合わせを含む様々な装置であってもよい。
なお、本願実施例に記載の技術案は、矛盾なき限り、任意に組み合わせることが可能である。
本願の実施例による上記実現形式において、ネットワークカード内で同期した時刻情報を共有メモリ方式により各VMに効率的に共有することで、標準ネットワークカードに基づいてシンクホストと仮想マシン間でネットワークカード時刻を共有でき、ハードウェアの変更は不要である。既存のネットワークカードに基づき、シンクホストにおいて動作プロトコルとPTPサーバとの時刻同期を行い、シンクホストがネットワークカード時刻を直接取得する。図12に示すハイパーバイザー(Hypervisor)において共有メモリチャネル、例えば、時刻共有モジュール(Time Share Module)を追加することで、VMとシンクホスト間で時刻情報を伝達する。VMはシステム時刻を修正するために共有メモリ内時刻を定期的に取得する。Hypervisorは、物理サーバとオペレーティングシステムとの間で動作する中間ソフトウェア層であり、複数のオペレーティングシステムとアプリケーションとが1組の基本物理ハードウェアを共有することを許可するため、仮想環境における「メタ」オペレーティングシステムとして見なすこともでき、サーバ上の全ての物理デバイスと仮想マシンに協調してアクセスでき、仮想マシンモニタとも呼ばれる。Hypervisorは、すべての仮想化技術の核心である。マルチワークロードマイグレーションを非中断的にサポートする能力は、Hypervisorの基本機能である。サーバがHypervisorを起動して実行すると、各仮想マシンに適切な量のメモリ、CPU、ネットワーク、ディスクが割り当てられ、全ての仮想マシンのクライアントオペレーティングシステムがロードされる。
本願の実施例の上記実施方式において、ネットワークカードにおける同期時刻情報を、SR−IOVハードウェア仮想化同期方式により各VMに効率的に共有することで、時刻同期加速カード(略称加速カード)を採用することができ、ネットワークカードの形態で実現することができる。ホストは、加速カードに基づいてタイムサーバとIEEE1588 V2形式で同期される。各VMが更新後の時刻情報に直接アクセスできるように、加速カード内部は自動的に更新後の時刻情報を複数のVFモジュールに配信する。加速カードは、PTP同期メッセージの識別、タイムスタンプの自動付与、同期加速カードメンテナンスローカル時刻、同期加速カードが時間計測幅の調整を提供するなどの機能を備える。図13に示すように、SR−IOVハードウェア仮想化という同期方式により、加速カード時刻を各VFモジュールに配信することで、同期精度を向上する。ホストではPTPサーバとの間でプロトコルを実行して時刻同期を行い、各同期周期毎に加速カードとサーバとの時刻のずれに応じて時間計測幅を調整する。加速カードは、調整後の周波数に応じてVFモジュール内の時刻情報を計時してリアルタイムで更新する。VMは、VFモジュール内の時刻情報を定期的に取得することで、自身のシステム時刻を修正する。
上述した2つの方式(すなわち、共有メモリ方式とSR−IOVハードウェア仮想化方式)により、加速カード(ネットワークカードとして実現できる)において同期した時刻情報を効率的に各VMに共有することができる。2つの方式はいずれもPTP時刻同期プロトコルを採用しており、PTPプロトコルを用いて仮想マシン時刻を常に修正して同期精度を向上させ、VMにおける時刻ずれを解消している。VMでの時刻同期を実現するために、予め設定された処理を行わずに、PTPがクロックサーバの時刻を基準源として自動的に取得して、VMの時刻を調整することで、同期精度を向上させることができる。
共有メモリ方式に関しては、標準ネットワークカードに基づいて、ハードウェアの変更をせずに、ホストとVMとの間でネットワークカード時刻を共有することができる。SR−IOVハードウェア仮想化方式に関しては、ハードウェアサポートを追加する必要があり、同期精度をさらに向上させ、ナノ秒レベルの同期精度を達成することで、VMにおける高精度な時刻同期を実現することができる。SR−IOVハードウェア仮想化方式に基づいて加速カードを設計してもよく、標準ネットワークカードに基づいてプログラマブル装置を拡張するか、或いは、スマートネットワークカードに機能を追加することに基づいて、当該加速カードを得ることができる。PTPプロトコルはホスト上で動作し、加速カードは、同期後の時刻情報を異なるVFに配信するだけでよいので、リソースの消費が少なく、ホスト上での各VMの時刻の一貫性も保証される。加速カードは、スマートネットワークカードとして実現でき、ホストは当該スマートネットワークカードおよび時刻サーバに基づいてIEEE1588 V2の形式で同期される。スマートネットワークカード内部では、各VMが、更新後の時刻情報に直接アクセスできるように、更新後の時刻情報を複数のVFモジュールに自動的に配信する。スマートネットワークカードは、1つのPFモジュールと、複数のVFモジュールとを含むことができ、各VFモジュールは、独立したPCIE装置として提示され、時刻情報は、PFモジュールとVFモジュールとの間で共有される。VMは、一定のタイミングで取得した、対応するVFモジュールの時刻情報に従ってローカルシステム時刻を調整する。スマートネットワークカードは、標準サーバのPCIEスロット内に展開される。スマートネットワークカードには、標準ネットワークカードのメッセージ送受信を実現するイーサネットメッセージ送受信機能モジュールと、PTPイベントメッセージを識別してタイムスタンプを追加送受信するPTPメッセージタイムスタンプ機能モジュールと、ネットワークカードのクロック源としてのローカル時刻を保持する計時モジュールと、ソフトウェアがPTP同期結果に応じてローカル時刻を調整できるように、ユーザがローカル計時周波数を調整するために用いられる時間計測幅調整モジュールと、時刻配信モジュールと、を備え、ネットワークカードには複数のVFモジュールが含まれ、時刻配信モジュールを介して全てのVFモジュールに時刻更新情報を配信できる。当該スマートネットワークカードにより、ユーザは、VMクライアントマシンを構築する際に、VMクライアントマシンとネットワークカードの某VFモジュールとをバインドし、VMクライアントマシンのソフトウェアは、定期的にVFモジュールを取得して、時刻情報で自身のシステム時刻を調整する。当該スマートネットワークカードに基づくVM時刻同期精度は、ナノ秒レベルに達することが可能である。
以下では、本願の実施例の各応用場面を用いて例を挙げて説明する。
本実施例では、ホストとVMとの間でネットワークカードのPTP時刻同期情報を共有する方法を中心に説明するが、これには、一般的なネットワークカードに基づく共有メモリ方式とSR−IOVに基づくクロック同期加速カード方式の2種類が含まれる。SR−IOVに基づくクロック同期加速カードは、ハードウェアの方式によってIEEE1588 V2で同期後の時刻をホストと各VMの間で共有できる。図14に示すように、当該加速カードは、PTPメッセージ処理モジュールと、時刻メンテナンスモジュールと、時間計測幅調整モジュールと、時刻情報同期モジュールとを備える。当該加速カードに基づいて、ユーザはホストにおいて、PTPプロトコルを実行し、加速カードとPTPサーバとの間で時刻同期を行う。ユーザは、VMを構築するとき、VMを加速カードの某VFにバインドする。VMは、バインドされたVFの時刻情報を定期的に取得することで、VMのシステム時刻を調整する。PTPメッセージ処理モジュールは、加速カードを通過したPTPプロトコルメッセージを識別し、タイムスタンプを付加および抽出するように構成される。時刻メンテナンスモジュールは、クロック源を内部に有することで、ローカル時刻を保持する。時間計測幅調整モジュールは、ローカル時間計測幅を調整することで、クロック周波数を調整する機能を実現するように構成される。加速カードには複数の機能パーテーションが含まれ、即ち、1つのPFモジュールと複数のVFモジュールであり、各機能パーテーションには時刻情報が格納され、時刻情報同期モジュールは、各計時周期内で全てのPFモジュールとVFモジュールの時刻情報を更新することで、VMが某VFモジュールの時刻情報に直接アクセスして時刻同期を行うことができる。本実施例の加速カードのハードウェア形態は限定されず、独立した、PTP時刻同期機能を有する加速カードであってよく、標準ネットワークカードに基づいてPTPクロック同期機能を拡張してもよく、PTPクロック同期機能をスマートネットワークカードに含めることもできる。
本実施例において、ホストとVMとの間でPTP同期時刻情報を共有する方式としては、メモリ共有方式と、SR−IOVに基づくクロック同期加速カード方式の2種類がある。
図12に示すように、共有メモリ方式は、既存のネットワークカードに基づいて実現することができる。ホスト内でプロトコルを実行してPTPサーバと時刻同期を行うことで、ホストは、ネットワークカード時刻を直接取得でき、Hypervisorにおいて共有メモリチャネルを追加して、VMとホストとの間で時刻情報を伝達する。VMは、共有メモリ内の時刻を定期的に取得することで、システム時刻を修正する。
図13に示すように、SR−IOVに基づくクロック同期加速カード方式は、ハードウェアの方式によって、ネットワークカード時刻を各VFモジュールに配信することで、同期精度を向上させる。ホストでプロトコルを実行して、PTPサーバと時刻同期を行い、各同期サイクルにおいて加速カードとサーバの時刻ずれに応じて時間計測幅を調整する。ネットワークカードは、調整後の周波数で計時して、VFモジュールにおける時刻情報をリアルタイムで更新する。VMは、VFモジュールにおける時刻を定期的に取得することで、自身のシステム時刻を修正する。対応するプロセスには、ホストでPTPプロトコルを実行することで、PTPサーバと定期的に同期すること、時刻ずれ量を算出して、加速カードに格納すること、加速カードが時刻ずれに応じてローカル時間計測幅を調整すること、ローカル時間計測幅に基づいて(例えば、調整後の周波数で計時)、VF内の時刻情報をリアルタイムで更新して、時刻更新情報を取得すること、VMが加速カードから時刻(例えば、時刻更新情報)を取得して、自身のシステム時刻を調整することが含まれる。
本実施例では、ホストでPTPプロトコルを実行し、定期的に加速カードの時間計測幅を調整し、加速カード内のタイミング情報を常に更新し、各VMが加速カード時刻を定期的に取得してそのシステム時刻を調整する。インタラクション全体は3つの部分に分けられる。
第1の部分では、図15に示すように、加速カードが時間計測幅を調整する。
ステップ401では、ホストにおいてPTPプロトコルが実行される。
ステップ402では、PTPサーバと定期的にメッセージをインタラクションする。同期目標精度およびシステム負荷の状況に応じて周期時間を選択することができる。
ステップ403では、各サイクル内で加速カードとPTPサーバの時刻ずれを算出する。
ステップ404では、ずれに応じて加速カードの時間計測幅を調整することにより、加速カードとPTPタイムサーバとが同じ周波数、同じ位相となるように、加速カードのローカル時刻を修正する。
第2の部分では、図16に示すように、ネットワークカードの時刻を更新する。
ステップ501では、ローカル計時周期で時刻更新をトリガーする。ここでの計時周期は、加速カードハードウェアの計時周期であり、目標精度より小さく、数ナノ秒に設定することができる。
ステップ502では、ローカルクロックカウントと更新された時間計測幅を読み込むことで、現在時刻を算出する。
ステップ503では、ネットワークカードの時刻を更新し、PFモジュールと各VFモジュールの時刻を更新することが含まれる。
第3の部分では、図17に示すように、VM時刻を修正する。
ステップ601では、VMを構築するときに、VMを、加速カードの某VFモジュールとバインドする。
ステップ602では、VMは、ローカルシステム時刻およびVFモジュールにおける時刻情報を定期的に取得する。同期精度要求およびシステム負荷状況に応じて周期時間を選択することができる。
ステップ603では、システム時刻と加速カードの時刻ずれを算出する。
ステップ604では、時刻ずれに応じて仮想システムのローカル時刻カウント周波数が調整される。
基準時刻に対するVMのシステム時刻の調整係数は、以下の方法で決定される。
時刻差が負数であれば、調整期間と時刻差の絶対値と、調整期間との比率を算出し、当該比率を調整係数とし、時刻差が正数であれば、調整期間と時刻差の絶対値との差と、調整期間との比率を算出し、当該比率を調整係数とし、VMシステムクロック周波数を調整することで時刻同期を実現する。VMに関して言えば、時刻の突然変異がないため、VM上での時刻に関する業務の実行順序は変わらず、すなわち、VM上のデータベースクラスイベントのデリケートな業務に影響を与えない。同時に、時刻同期過程において、PTPサービスに依存することなく、VM稼動中において業務を中断せず、時刻ずれの大きさにかかわらず、VM時刻のスムーズな調整を実現することができる。
本願の実施例の上記装置はソフトウェア機能モジュールの形態で実現され、独立した製品として販売または使用される場合、1つのコンピュータ読み取り可能な記録媒体に記録されてもよい。このような理解によれば、本願の実施例の技術案は、1台のコンピュータ装置(パーソナルコンピュータ、サーバ、またはネットワーク装置などであってもよい)に本願の様々な実施例で説明される方法の全てまたは一部を実行させるためのいくつかの指令を含む、1つの記憶媒体に記憶されたソフトウェア製品の形態で具現化されてもよい。前記の記憶媒体は、USBディスク、リムーバブルハードディスク、リードオンリーメモリ(ROM,Read Only Memory)、磁気ディスク、光ディスクなどのプログラムコードを記憶できる種々の媒体を含む。このように、本願の実施例は、任意の特定のハードウェアおよびソフトウェアの組み合わせに限定されない。
本願の好ましい実施例は、例示を目的として開示されているが、様々な改善、追加、および置換が可能であると当業者は認識しているため、本願の範囲は、上記の実施例に限定されるべきではない。