JP2017033375A - 並列計算システム、マイグレーション方法、及びマイグレーションプログラム - Google Patents

並列計算システム、マイグレーション方法、及びマイグレーションプログラム Download PDF

Info

Publication number
JP2017033375A
JP2017033375A JP2015153972A JP2015153972A JP2017033375A JP 2017033375 A JP2017033375 A JP 2017033375A JP 2015153972 A JP2015153972 A JP 2015153972A JP 2015153972 A JP2015153972 A JP 2015153972A JP 2017033375 A JP2017033375 A JP 2017033375A
Authority
JP
Japan
Prior art keywords
target process
area
migration
node
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015153972A
Other languages
English (en)
Inventor
丈治 加藤
Joji Kato
丈治 加藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015153972A priority Critical patent/JP2017033375A/ja
Priority to US15/202,034 priority patent/US10341177B2/en
Publication of JP2017033375A publication Critical patent/JP2017033375A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/084Configuration by using pre-existing information, e.g. using templates or copying from other elements
    • H04L41/0846Configuration by using pre-existing information, e.g. using templates or copying from other elements based on copy from other elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0876Aspects of the degree of configuration automation
    • H04L41/0886Fully automatic configuration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • H04L41/0897Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities by horizontal or vertical scaling of resources, or by migrating entities, e.g. virtual resources or entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Abstract

【課題】実行中のプロセスのマイグレーションの際のプロセスの停止時間を短縮する。
【解決手段】第1ノードは、対象プロセスに割り当てられた記憶領域のうち、直近の所定期間内に対象プロセスによりアクセスされた第1領域を示すアクセス領域情報を記憶する。第1ノードは、移行指示を受信した場合、対象プロセスを停止し、停止時点の対象プロセスの状態を示す状態情報を第2ノードへ送信し、アクセス領域情報に基づいて、第1領域に格納された第1データを第2ノードへ送信する。第2ノードは、第1ノードから状態情報と第1データとを受信し、状態情報に基づいて対象プロセスを生成し、第1データを用いて対象プロセスを再開する。
【選択図】図1

Description

本発明は、並列計算システム、マイグレーション方法、及びマイグレーションプログラムに関する。
プロセスやソフトウェアなどをあるノードから他のノードへ移行する技術は、マイグレーションと呼ばれる。マイグレーションの一形態として、移行対象のプロセスやソフトウェアの停止時間を無視できるほど短くすることで、サービスを停止させずに移行を行うライブマイグレーションがある。ライブマイグレーションは、具体的には例えば、サーバ上のプロセスのノード間での移行やハイパーバイザ上の仮想機械(Virtual Machine(VM))を移行する際に利用される。プロセスは、プログラムの実行単位である。ノードは、プロセスを実行する処理実行単位である。
例えば、ライブマイグレーションにより負荷の高いノードから負荷の低いノードへプロセスを移行することで、ノード間の負荷分散を行うことができる。また、例えば、メンテナンス等のためにノードの停止が発生する場合には、停止するノード上で稼動しているプロセスをライブマイグレーションにより他のノードへ退避させることで、プロセスの可用性を高めることができる。
マイグレーションに関して、以下の第1〜3の技術がある(例えば、特許文献1〜3参照)。
第1の技術において、マイグレーションの前に、第1仮想計算機は、第1仮想計算機に専用の第1専用メモリ内にオペレーティング・システムおよびアプリケーションを有する。第1仮想計算機の通信キューは、第1および第2コンピュータまたは第1および第2Logical Partitioning(LPAR)によって共用される共用メモリに常駐する。オペレーティング・システムおよびアプリケーションは、第1専用メモリから共用メモリにコピーされた後、共用メモリから第2コンピュータまたは第2LPAR内の第1仮想計算機に専用の第2専用メモリにコピーされる。第1仮想計算機は、第2コンピュータまたは第2LPAR内でレジュームされる。
第2の技術に係る装置は、論理パーティションのページの状態を自動的に追跡することによって論理的にパーティションされた環境でのファームウエア・マイグレーションを促進する。複数のページ状態に対応する複数個のエントリを有するテーブルを用いて論理パーティションのマイグレーションをプロセスは促進する。テーブル・エントリは論理パーティションがマイグレートする際に個々のページの状態を記録し、維持する。
第3の技術に係る装置は、Central Processing Unit(CPU)とInput / Output(I/O)の間にスイッチを接続する。スイッチ内にメモリ書き込みを監視するメモリ監視機構と、メモリ上の各ページがdirtyかどうかを記憶するdirty bit配列とを用意する。メモリ監視機構はI/OからCPUへのメモリ書き込みを監視し、メモリ書き込みのアドレスからどのページがdirtyになったかを判断し、dirty bit配列をアップデートする。dirty bit配列はページごとにdirty/非dirtyを記憶しており、ハイパーパイザから連続領域としてアクセスできる。
特開2005−327279号公報 特開2008−269600号公報 国際公開第2012/063334号
ライブマイグレーションにおいては、移行対象のプロセスに割り当てられたメモリの内容が移行元ノードから移行先ノードへ転送される。このような転送が移行対象のプロセスの動作中に行われると、転送中に転送対象のメモリの内容が書き換えられる虞がある。この場合、転送元と転送先とでメモリの内容が異なることとなるため、転送先においてプロセスを正常に継続実行できない。そのため、ライブマイグレーションにおいては、移行プロセスを停止させてからメモリの転送が行われ、メモリの転送完了後に移行先ノードでプロセスが再開される。
移行対象のプロセスが大量のメモリ空間を使用する場合、メモリの内容の転送には多くの時間がかかる。マイグレーションにおいて、メモリの内容の転送中は移行対象のプロセスが停止される。そのため、転送時間が長くなるとプロセスの停止時間も長くなる。
そこで、1つの側面では、本発明は、実行中のプロセスのマイグレーションの際のプロセスの停止時間を短縮することを目的とする。
一態様による並列計算システムは、第1ノード及び第2ノードを含む。並列計算システムは、プロセスを実行する処理実行単位であるノードのうち、第1ノードで実行中の対象プロセスを第2ノードに移行する。第1ノードは、記憶部、停止制御部、及び送信部を含む。記憶部は、対象プロセスに割り当てられた記憶領域のうち、直近の所定期間内に対象プロセスによりアクセスされた第1領域を示すアクセス領域情報を記憶する。停止制御部は、対象プロセスの移行指示を受信した場合、対象プロセスを停止する。送信部は、停止時点の対象プロセスの状態を示す状態情報を第2ノードへ送信し、アクセス領域情報に基づいて、第1領域に格納された第1データを第2ノードへ送信する。第2ノードは、受信部、及び再開制御部を含む。受信部は、第1ノードから状態情報と第1データとを受信する。再開制御部は、状態情報に基づいて対象プロセスを生成し、第1データを用いて対象プロセスを再開する。
一態様によれば、実行中のプロセスのマイグレーションの際のプロセスの停止時間を短縮することができる。
実施形態に係る並列計算システムの機能ブロック図の一例を示す。 実施形態に係る情報処理システムの構成の一例を示す。 実施形態に係る移行元ノードの構成の一例を示す。 実施形態に係るページテーブルの構成の一例を示す。 実施形態に係る移行先ノードの構成の一例を示す。 送信制御部による、移行元ノードのマイグレーション処理の詳細を図解したフローチャートの一例である。 受信制御部による、移行先ノードのマイグレーション処理の詳細を図解したフローチャートの一例である。 移行先ノードにおけるページフォルトハンドラの詳細を図解したフローチャートの一例である。 実施形態に係る移行元ノード及び移行先ノードのハードウェア構成の一例を示す。
図1は、実施形態に係る並列計算システムの機能ブロック図の一例を示す。図1において、並列計算システム1は、第1ノード2及び第2ノード3を含む。並列計算システム1は、第1ノード2で実行中の対象プロセスを第2ノード3に移行する。第1ノード2及び第2ノード3は、プロセスを実行する処理実行単位であるノードの一つである。
第1ノード2は、記憶部4、停止制御部5、及び送信部6を含む。記憶部4は、対象プロセスに割り当てられた記憶領域のうち、直近の所定期間内に対象プロセスによりアクセスされた第1領域を示すアクセス領域情報を記憶する。停止制御部5は、対象プロセスの移行指示を受信した場合、対象プロセスを停止する。送信部6は、停止時点の対象プロセスの状態を示す状態情報を第2ノード3へ送信し、アクセス領域情報に基づいて、第1領域に格納された第1データを第2ノード3へ送信する。
第2ノード3は、受信部7、再開制御部8、休眠制御部9、及び起床制御部10を含む。受信部7は、第1ノード2から状態情報と第1データとを受信する。再開制御部8は、状態情報に基づいて対象プロセスを生成し、第1データを用いて対象プロセスを再開する。
第2ノード3では、第1領域のデータの転送が完了した時点で、対象プロセスを再開する。これにより、対象プロセスのすべてのメモリ空間のデータの転送が完了してからプロセスを再開する場合に比べ、移行におけるプロセスの停止時間を短縮することができる。特に、例えば科学技術計算におけるように、移行対象プロセスが扱うメモリ空間量が多い一方で、短い時間の間はプロセスの実行に使用されるメモリ空間量が少ない場合は、プロセスの停止時間の短縮効果は大きくなる。これは、対象プロセスの全メモリ空間に対して第1領域の占める割合が小さくなるためである。
送信部6は、第1データの送信の完了後に、記憶領域のうちの第1領域以外の第2領域に格納された第2データを第2ノード3へ送信する。受信部7は、対象プロセスの実行中に、第1ノード2から第2データを受信する。
第2ノード3は対象プロセスを再開した後に、第2データを受信する。これにより、第2ノード3は、第2データの受信と、対象プロセスの実行とを並行して行うことができる。これにより、対象プロセスのすべてのメモリ空間のデータの転送が完了してからプロセスを再開する場合に比べ、移行におけるプロセスの停止時間を短縮することができ、効率的なデータの転送が可能となる。
アクセス領域情報は、対象プロセスを実行する中央演算処理装置(CPU)に搭載されたメモリ管理ユニットにより、対象プロセスのページテーブルに記録された情報である。このように構成することで、第1領域を特定するための情報を記録するために特別なソフトウェア等を組み込むことなく、メモリ管理ユニットのハードウェアにより実現することができる。また、対象プロセスのメモリ空間は、すべてメモリ管理ユニットを介してアクセスされるものであるので、データ領域を含むプロセスのメモリ空間の全てを対象として第1領域の特定が可能となる。
休眠制御部9は、対象プロセスにより、第2領域のうちデータの受信が完了していない領域に対するアクセスが発生した場合、対象プロセスを休眠させる。起床制御部10は、受信が完了していない領域のデータを受信した場合、休眠された対象プロセスを起床させる。このように構成することで、未転送領域に対するアクセスが発生した場合に、再開された移行対象プロセスがエラー等で異常終了することを防ぐことができる。
(情報処理システムの構成)
図2は、実施形態に係る情報処理システムの構成の一例を示す。図2において、情報処理システム15は、移行元ノード16と移行先ノード17を含む。移行元ノード16と移行先ノード17は、相互にデータの送受信が可能になるように接続される。実施形態では、マイグレーションにより、移行元ノード16で動作中の移行対象プロセスが、移行先ノード17に移行される。
情報処理システム15では、例えば、移行対象のプロセスを含む複数のプロセスが動作し、それらのプロセスの各々が演算処理とプロセス間通信処理とを繰り返しながら並列に処理を進めるものであってもよい。情報処理システムは、例えば、並列計算機であってもよく、移行元ノード16と移行先ノード17を含む多数のノードを含んでもよい。
各ノードは、例えば、情報処理装置であってもよい。もしくは、各ノードは、例えば、同一または異なる物理サーバ上で稼動するハイパーバイザやLPAR上に作成された仮想マシンであってもよい。
情報処理システム15は、並列計算システム1の一例である。移行元ノード16は、第1ノード2の一例である。移行先ノード17は、第2ノード3の一例である。
(移行元ノードの構成)
図3は、実施形態に係る移行元ノードの構成の一例を示す。図3において、移行元ノード16は、CPU21、メモリ22、記憶装置23、及び、通信インターフェース24を含む。
CPU21は、演算部31と、メモリ管理ユニット(Memory Management Unit(MMU))32を含む。
演算部31は、CPU21の中核部分(コア)であり、演算処理を行う。演算部31は、処理部41及び送信制御部42を含む。送信制御部42は、停止制御部5及び送信部6の一例である。
処理部41は、Operating System(OS)や移行対象のプロセスを実行する。OSは、プロセスのメモリ管理を仮想メモリ方式により行う。仮想メモリ方式では、プロセスには、物理的なメモリ領域(物理メモリ領域)とは別の仮想的なメモリ領域(仮想メモリ領域)が割り当てられる。プロセスは、自身に割り当てられた仮想メモリ領域を認識してメモリアクセスを行う。物理メモリ領域、仮想メモリ領域は、それぞれ所定のサイズ毎に、物理ページ、仮想ページに分割される。物理ページ、仮想ページには、それぞれ、物理アドレス、仮想アドレスが割り当てられる。仮想アドレスの所定の範囲は仮想アドレス空間と呼ばれる。各プロセスに割り当てられる仮想アドレス空間は、他のプロセスの仮想アドレス空間に対して独立している。仮想ページは、物理ページに対応付けられる(マッピングされる)。
送信制御部42は、移行元ノード16におけるプロセスのマイグレーション処理を実行する。具体的には、送信制御部42は、マイグレーション対象のプロセスに関する情報を移行先ノードに転送する処理を行う。マイグレーション処理の詳細は後ほど説明する。
MMU32は、演算部31からのメモリアクセスに関する処理を行う。MMU32は、仮想メモリによるメモリ管理のための機能の一部を提供する。MMU32の機能の一部または全部は、ハードウェアにより実現される。
MMU32は、アクセス制御部43とキャッシュ44を含む。
アクセス制御部43は、仮想アドレスを、その仮想アドレスにマッピングされた物理アドレスに変換する。アドレス変換は、仮想アドレスと物理アドレスのマッピングを示す情報を含むページテーブルに基づいて行われる。具体的には、アクセス制御部43は、処理部41からアクセス対象の仮想アドレスが入力されると、入力された仮想アドレスをページテーブルに基づいて物理アドレスに変換し、物理アドレスを処理部41に返す。アクセス制御部43から返された物理アドレスを用いて、処理部41は実メモリにアクセスする。また、アクセス制御部43は、メモリアクセスが発生した場合に、アクセスされた仮想ページを識別する情報をページテーブルに記録する。
キャッシュ44は、アクセス制御部43によるアドレス変換の高速化を図るための記憶装置である。アドレス変換ではページテーブルが使用されるが、このページテーブルの全体はメモリ22に格納されている。キャッシュ44は、ページテーブルの一部(サブセット)を記憶し、アクセス制御部43は、MMU32上のキャッシュ44に格納されたページテーブルのサブセットにアクセスすることで、アドレス変換の高速化を図る。キャッシュ44は、具体的には例えば、Translation Lookaside Buffer(TLB)である。
メモリ22は、ページテーブル45、プロセスのコンテキスト情報46、及び各プロセスに割り当てられた物理ページ47を記憶する。メモリ22は、記憶部4の一例である。
ページテーブル45は、仮想アドレスと物理アドレスの対応付け(マッピング)を示す情報を含む。ページテーブル45は、MMU32によるアドレス変換において用いられる。ページテーブル45の詳細は後ほど説明する。
コンテキスト情報46は、プロセスの状態を示す情報である。マイグレーションにおいては、コンテキスト情報46は、移行先ノード17において、移行対象プロセスの停止時点の状態を再現するために用いられる。具体的には、コンテキスト情報46は、プロセスが使用するレジスタの情報やファイル記述子の情報等を含む。尚、コンテキスト情報46は、OSにより動的に管理される。
物理ページ47は、仮想ページにマッピングされる所定のサイズの物理記憶領域である。
記憶装置23は、種々のデータを記憶する。記憶装置23は、スワップ領域を含んでもよい。スワップ領域は、仮想メモリ管理において、メモリ22上の領域が不足した場合に、データの一部を退避するために使用される領域である。
通信インターフェース24は、移行先ノード17に対してデータの送受信を行う。送信制御部42により移行先ノード17に送信されるデータは、通信インターフェース24を介して送信される。
(ページテーブルの構成)
ここで、ページテーブル45の構成について説明する。図4は、実施形態に係るページテーブルの構成の一例を示す。ページテーブル45は、仮想アドレスと物理アドレスのマッピングを示す情報を含む。また、ページテーブル45は、直近の所定期間内に各仮想ページに対するアクセスが発生したか否かを示す情報を含む。尚、ページテーブル45は、プロセス毎に生成される。
具体的には、ページテーブル45は、ページテーブルエントリ(Page Table Entry(PTE))を含む。PTEは、それぞれ1つの仮想ページに対応し、仮想ページに割り当てられた物理ページの情報を格納する。図4(A)は、PTEの構成の一例を示す。図4(A)において、PTEは、「物理アドレス」、「P(Present)ビット」、「A(Access)ビット」のデータ項目を含む。
「物理アドレス」は、仮想アドレスにマッピングされた物理アドレスを示す情報を記憶する。具体的には、「物理アドレス」には、物理メモリブロックの開始アドレスが格納される。尚、仮想アドレスは、PTEの配列のインデックスに対応する。
「Pビット」は、「物理アドレス」で示される物理ページが仮想ページに割り当てられているか否かを示す。すなわち、「Pビット」は、仮想アドレスと物理アドレスがマッピングされており、且つ、物理アドレスのデータが現在メモリ22上に存在する(スワップアウトされていない)ことを示す。実施形態では、「Pビット」に「1」が設定されている場合、物理ページが割り当てられていることを示すものとする。「Pビット」に「0」が設定されている場合、物理ページが割り当てられていないことを示すものとする。「Pビット」の値の設定は、演算部31(OS)により行われ、アクセス制御部43による設定は行われない。
「Aビット」は、「物理アドレス」で示される物理ページにアクセスが行われたか否かを示す。実施形態では、「Aビット」に「1」が設定されている場合、対応する物理ページにアクセスが行われたことを示すものとする。「Aビット」に「0」が設定されている場合、対応する物理ページにアクセスが行われていないことを示すものとする。「Aビット」の値は、対応するページに対するアクセスが発生した場合に、アクセス制御部43により「1」に設定される。また、「Aビット」の値は、演算部31(OS)により、定期的に「0」に設定される。尚、一度「Aビット」の値がアクセス制御部43により「1」に設定されたら、その後、アクセス制御部43が「Aビット」の値を「0」に変更することはない。「Aビット」の情報は、アクセス制御情報の一例である。
尚、PTEは、物理ページの種々の属性を示す情報を含んでもよい。例えば、PTEは、物理ページの保護属性や、ページに書き込みが発生したか否かなどを示す情報を含んでもよい。
図4(B)は、PTEを含むページテーブル45の構成の一例を示す。図4(B)において、ページテーブル45は、1以上のPTEを配列構造で記憶する。PTEの配列のインデックスは、仮想ページ番号に対応する。すなわち、PTEに対応する物理ページ47は、そのPTEのインデックスで示される仮想ページとマッピングされている。
次に、プロセスがアクセスを行う際に発生する処理について説明する。メモリアクセスの際には、アクセス対象の仮想アドレスがMMU32のアクセス制御部43に入力される。アクセス制御部43は、入力された仮想アドレスを物理アドレスに変換するとともに、入力された仮想ページにアクセスがあったことを示す情報を記録する。アクセス対象の仮想ページに物理アドレスが割り当てられていない場合には、ページフォルトが発生する。
(アドレス変換)
先ず、MMU32によるアドレス変換処理について説明する。
アクセス制御部43は、演算部31からアクセス対象の仮想アドレスが入力されると、その仮想アドレスを物理アドレスに変換する。具体的には、アクセス制御部43は、先ず、キャッシュ44に記憶されたページテーブル45のサブセットから、要求された仮想アドレスに対応するPTEを検索する。その結果、要求された仮想アドレスに対応するPTEが見つからなかった場合、アクセス制御部43は、メモリ22上にあるページテーブル45に対して、対応するPTEの検索を行う(ページテーブルウォークする)。そして、アクセス制御部43は、検索したPTEを参照して、目的の仮想ページに物理ページが割り当てられているかを確認する。目的の仮想ページに物理ページが割り当てられていると判定した場合、アクセス制御部43は、PTEの物理アドレスを演算部31に返す。一方、目的の仮想ページに物理ページが割り当てられていないと判定した場合、アクセス制御部43は、演算部31に対してページフォルトという例外を通知する。
アクセス制御部43は、OSを介さずに、ハードウェアの処理でページテーブルウォークを行う(ハードウェアページテーブルウォーク)。尚、アクセス制御部43が検索するメモリ22上のページテーブル45の位置は、予めMMU32の所定の記憶領域に設定されているものとする。
(アクセスが発生した仮想ページの記録)
次に、仮想ページにアクセスがあったことを示す情報を記録する処理について説明する。
上述したように、アクセス制御部43は、演算部31からアクセス対象の仮想アドレスが入力されると、アドレス変換処理を行う。このとき、アクセス制御部43は、対象の仮想ページがアクセスされたことを示す情報を、対象の仮想ページに対応するPTEの「Aビット」に記録する(「1」を設定する)。一方、PTEの「Aビット」の値は、演算部31(OS)により定期的にクリアされる(「0」に設定される)。そのため、各PTEの「Aビット」の値は、直近のOSによるクリアが行われた時点以降に、そのページがアクセスされたか否かを示す情報となる。したがって、PTEの「Aビット」の値を参照することにより、直近の所定期間内にアクセスされたページの特定が可能となる。
(ページフォルトハンドラ)
次に、物理ページが割り当てられていない仮想ページに対するアクセスが行われた場合の処理について説明する。
アクセス制御部43は、物理ページが割り当てられていない仮想ページに対するアクセスが行われた場合、ページフォルトという例外を発生させる。具体的には、例えば、アクセス制御部43は、アクセス要求のあった仮想ページに対応するPTEを参照し、そのPTEの「Pビット」の値が「0」である場合、ページフォルトを発生させ、演算部31に通知する。また、アクセス制御部43は、不正な領域へのアクセスが行われた場合などにも、ページフォルトを発生させる。不正な領域とは、例えば、存在しないはずの異常なアドレスや、他のプロセスが管理する領域である。不正な領域へのアクセスが行われたことの検知は、そのプロセスのページテーブル45に基づいて行われる。以下の説明では、ページフォルトを発生させたアクセスにおいて、アクセス対象となった仮想ページを、説明の便宜上「対象ページ」と記す。
ページフォルトの発生が通知されると、OSでは、ページフォルトハンドラと呼ばれるソフトウェアが起動される。ページフォルトハンドラは、ページフォルトを解決するための種々の処理(以下、ページフォルト解決処理と記す)を実行する。具体的には、例えば、対象ページに物理アドレスがマッピングされていない場合には、ページフォルトハンドラは新しい物理ページと対象ページのマッピングを行い、PTEに記録する。また、例えば、対象ページに対応する物理ページがメモリ22上に存在しない場合には、ページフォルトハンドラは、メモリ22上で現在使われていないページと記憶装置23上の当該ページを入れ替える処理(スワップ)を行う。また、例えば、対象ページが不正な領域である場合には、ページフォルトハンドラは、無効なアクセスであるとしてページフォルトを発生させたプログラムを強制終了させる。尚、ページフォルトハンドラはOSの機能の一部である。
以上、プロセスがアクセスを行う際に発生する処理について説明した。次に、送信制御部42による移行元ノード16のマイグレーション処理について説明する。
(移行元ノードのマイグレーション処理)
マイグレーション処理において、送信制御部は、マイグレーション対象のプロセス(以下、移行対象プロセスと記す)の情報を移行先ノードに転送する。すなわち、送信制御部は、移行対象プロセスのコンテキスト情報46及びページテーブル45と、移行対象プロセスに割り当てられた仮想メモリ空間のデータとを転送する。実施形態において、移行対象プロセスのメモリ空間のデータの転送は2段階で行われる。第1段階として、移行対象プロセスにより直近の所定期間内にアクセスされたメモリ領域(以下、第1領域と記す)の転送が行われる。その後、第2段階として、未転送のメモリ領域(以下、第2領域と記す)の転送が行われる。第2領域は、移行対象プロセスに割り当てられた仮想メモリ空間のうち、第1領域以外の領域である。
具体的には、送信制御部42は、先ず、移行対象のプロセスのマイグレーションを指示する移行元処理要求を受信する。移行元処理要求には、移行対象プロセスを識別する識別情報が含まれる。移行元処理要求を受信すると、送信制御部42は、移行対象プロセスの通信を停止する。移行対象プロセスの通信を停止することで、通信相手との通信の不整合やエラーの発生を防ぐ。次いで、送信制御部42は、移行対象プロセスを停止する。移行対象プロセスを停止することで、移行の途中で移行元のメモリの内容が更新されることを防ぐ。
次に、送信制御部42は、移行対象プロセスのコンテキスト情報46をメモリ22から記憶装置23へ退避する。そして、送信制御部42は、退避したコンテキスト情報46を移行先ノード17に転送する。ここで転送されるコンテキスト情報46は、移行対象プロセスの停止時点の状態を示すものであり、移行先ノード17で移行対象プロセスの状態を再現するために使用される。
また、送信制御部42は、移行対象プロセスのページテーブル45を移行先ノード17に転送する。ここで転送されるページテーブル45は、移行先ノード17で移行対象プロセスのページテーブル45を再現するために使用される。
尚、コンテキスト情報46及びページテーブル45は、移行対象プロセスが停止された後に転送されるため、転送中にコンテキスト情報46及びページテーブル45が変更されることを防ぐ。
そして、送信制御部42は、移行対象プロセスのメモリ空間のデータを転送する。このとき、送信制御部42は、先ず第1段階として、第1領域のデータを先に転送するために、送信制御部42は、ページテーブル45のPTEの「Aビット」を参照して、移行対象プロセスのメモリ空間のうちから第1領域を特定する。すなわち、送信制御部42は、移行対象プロセスのページテーブル45において、「Aビット」の値が「1」であるPTEに対応する仮想ページの集合を第1領域として特定する。そして、送信制御部42は、特定した第1領域のデータを、移行先ノード17に転送する。
ここで、第1領域の特定は、ページテーブル45のPTEの「Aビット」の値に基づいて行われる。上述したように、ページテーブルの「Aビット」の設定は、MMU32の機能により実現される。したがって、MMU32を介してアクセスされるプロセスのメモリ空間の全てに対して、実施形態を適用することができる。また、第1領域を特定するための情報を記録するために、特別なソフトウェアを組み込むことなく、MMU32のハードウェアの機能を用いて実現することができる。
第1領域のデータの転送が完了したら、送信制御部42は、第2領域のデータを移行先ノード17に転送する。すなわち、送信制御部は、移行対象プロセスのページテーブル45において、「Aビット」の値が「0」であり、物理アドレスとのマッピングが行われているPTEに対応する仮想ページのデータを転送する。
尚、第1領域及び第2領域のデータの転送においては、そのデータがどの物理ページまたは仮想ページに格納されていたかを示す情報とともに転送される。この情報は、例えば、データが格納されていた物理ページまたは仮想ページのアドレスである。
(移行先ノードの構成)
次に、移行先ノード17の構成について説明する。図5は、実施形態に係る移行先ノードの構成の一例を示す。図5において、移行先ノード17は、CPU61、メモリ62、記憶装置63、及び、通信インターフェース64を含む。
CPU61は、演算部71と、MMU72を含む。演算部71は、処理部81及び受信制御部82を含む。処理部81は、休眠制御部9の一例である。受信制御部82は、受信部7、再開制御部8、及び起床制御部10の一例である。
処理部81は、移行元ノード16の処理部41と同様に、OSや種々のプロセスを実行する。ただし、マイグレーション中にメモリアクセスが発生した場合のページフォルトハンドラの動作は、移行元ノード16における動作とは異なる。これについては、後ほど詳細に説明する。
受信制御部82は、移行先ノード17におけるプロセスのマイグレーション処理を実行する。具体的には、受信制御部82は、移行対象プロセスに関する情報を移行先ノードから受信し、移行対象プロセスを再開する処理を行う。このマイグレーション処理の詳細は後ほど説明する。
MMU72は、移行元ノード16のMMU32と同様である。MMU72は、アクセス制御部83、及びキャッシュ84を含む。アクセス制御部83、キャッシュ84は、それぞれ、アクセス制御部43、キャッシュ44と同様である。
メモリ62は、ページテーブル85、各プロセスのコンテキスト情報86、及び各プロセスに割り当てられた物理ページ87を記憶する。
ページテーブル85の構成は、図4を参照して説明したものと同様である。
コンテキスト情報86は、移行元ノード16のコンテキスト情報46と同様に、プロセスの状態を示す情報である。ただし、コンテキスト情報86は、さらに、転送状態情報88を含む。
転送状態情報88は、マイグレーション中のプロセスのアクセス制御において用いられる制御情報である。転送状態情報88は、移行対象プロセスのメモリ空間のデータが転送中であるか否かを示す。言い換えると、転送状態情報88は、マイグレーションにおいて、移行対象プロセスのメモリ空間の全てのデータの転送が完了したか否かを示す。実施形態では、転送状態情報88の値が「転送中」である場合には、移行対象プロセスのメモリ空間の何れかのデータの転送が完了していないことを示すものとする。また、転送状態情報88の値が「転送完了」である場合には、移行対象プロセスのメモリ空間のすべてのデータの転送が完了していることを示すものとする。転送状態情報の値に応じて、ページフォルトハンドラは、ページフォルトが発生した場合に実行する処理を変更する。この処理の詳細については、後ほど説明する。
物理ページ87は、仮想ページにマッピングされる所定のサイズの物理記憶領域である。
記憶装置63は、種々のデータを記憶する。記憶装置63は、スワップ領域を含んでもよい。
通信インターフェース64は、移行元ノード16に対してデータの送受信を行う。移行元ノード16から転送されたデータは、通信インターフェース64を介して受信され、メモリ62または記憶装置63に格納される。
次に、受信制御部82による移行先ノード17のマイグレーション処理について説明する。
(移行先ノードのマイグレーション処理)
受信制御部82は、移行先ノード17におけるプロセスのマイグレーション処理を実行する。実施形態のマイグレーション処理では、上述したように、移行元ノード16から移行対象プロセスのコンテキスト情報46及びページテーブル45と、移行対象プロセスに割り当てられた仮想メモリ空間のデータとが転送される。そして、移行対象プロセスのメモリ空間のデータは、2段階で転送される。すなわち、第1段階として第1領域のデータが転送された後、第2段階として第2領域のデータが転送される。
受信制御部82は、移行元ノード16からの第1領域のデータの転送が完了した時点で、移行先ノード17において移行対象プロセスを再開する。このとき、移行対象プロセスは、コンテキスト情報46及びページテーブル45に基づいて、移行元ノード16において停止された時点の移行対象プロセスの状態から再開されるように制御される。そして、受信制御部82は、第1領域のデータの転送完了後に、第2領域のデータを受信する。すなわち、第2領域のデータの受信は、移行対象プロセスの再開(実行)と並行して行われることとなる。
第1領域は、移行元ノード16において移行対象プロセスにより直近の所定期間内にアクセスされたメモリ領域である。このような第1領域は、移行対象プロセスの再開後にアクセスされる可能性が高いと考えられる領域である。また第1領域のデータは、移行対象プロセスの移行開始前に使用中であったデータを含む。従って、これらのデータの転送が完了した時点で、移行対象プロセスの再開は可能である。少なくとも再開直後には、移行対象プロセスは正常に稼動する。ただし、プロセスの再開後の任意の時点においては、第2領域へのアクセスが発生する可能性がある。第2領域のデータは、アクセス発生時に未だ転送されていない可能性がある。実施形態では、第2領域の未転送領域に対するアクセスが発生した場合には、プロセスを休眠状態に遷移させ、第2領域のデータの転送の完了を待ってから処理を再開させる。
実施形態の移行先ノード17は、第1領域のデータの転送が完了した時点で、プロセスを再開する。これは、移行対象プロセスのすべてのメモリ空間のデータの転送が完了してからプロセスを再開する場合に比べ、プロセスの停止時間を短縮することができる。特に、例えばhigh-performance computing(HPC)等の分野におけるように、移行対象プロセスのメモリ空間が膨大になる場合には、停止時間の短縮効果は大きくなる。
また、実施形態の移行先ノード17では、第2領域の未転送領域に対するアクセスが発生した場合には、プロセスを休眠させ、第2領域のデータの転送完了後にプロセスを起床させる。これにより、未転送領域に対するアクセスが発生した場合に、プロセスがエラー等で異常終了することを防ぐ。また、この場合にも、第1領域のデータの転送完了後にプロセスが再開されてから、第2領域の未転送領域に対するアクセスが発生するまでの間は、プロセスの実行と第2領域のデータの転送が並行して行われる。したがって、移行対象プロセスのすべてのメモリ空間のデータの転送が完了してからプロセスを再開する場合に比べ、マイグレーションにおけるプロセスの総停止時間を短縮することができる。
移行先ノード17のマイグレーション処理を具体的に説明する。受信制御部82は、先ず、移行元ノード16から、移行対象ノードのコンテキスト情報46とページテーブル45を受信する。このコンテキスト情報46とページテーブル45に基づいて、受信制御部82は、移行対象プロセスと同じ状態のプロセス(以下、対象プロセスと記す)を、移行先ノード17で生成する。すなわち、受信制御部82は、新しく対象プロセスを作成し、作成した対象プロセスのコンテキスト情報86を、受信した移行対象ノードのコンテキスト情報46に対応するように更新する。また、受信制御部82は、受信した移行対象プロセスのページテーブル45に基づいて、対象プロセスのページテーブル85を初期化する。この初期化により、移行対象プロセスの仮想アドレス空間と同じ仮想アドレス空間が移行先ノード17の対象プロセスに割り当てられる。尚、この時点では、仮想アドレスに対して、物理アドレスの対応付け(マッピング)はまだ行われない。
次に、受信制御部82は、移行元ノード16から移行対象プロセスの第1領域のデータを受信する。そして、受信制御部82は、受信した第1領域のデータが格納された物理ページを対象プロセスの仮想ページに割り当てる。すなわち、受信制御部82は、受信したデータをメモリ62の空き領域に格納してページテーブル85を更新する。ページテーブル85の更新では、受信制御部82は、受信したデータの仮想ページに対して、そのデータを格納した物理ページをマッピングする。これにより、ページテーブル85の仮想ページと物理ページのマッピングについて、移行元ノード16と移行先ノード17とで同じ環境を形成することができる。ページテーブル85の更新の詳細については、後ほど説明する。
ここで、実施形態の説明では、「データの転送が完了した」とは、受信制御部82が移行元ノード16からデータを受信して、そのデータを物理メモリ62に格納し、上記のようにページテーブル85を更新したことまでを指すものとする。
第1領域のすべてのデータの転送が完了したら、受信制御部82は、生成した対象プロセスを実行状態に遷移させる(再開する)。第1領域のすべてのデータの転送が完了したか否かの判定は、受信したページテーブル45に基づいて行われる。具体的には、受信制御部82は、ページテーブル45のアクセスビットが「1」である領域のすべてのデータの転送が完了したか否かを判定する。
対象プロセスを実行状態に遷移させる一方で、受信制御部82は、並行して第2領域のデータを受信する。そして、受信制御部82は、受信した第2領域のデータが格納された物理ページを対象プロセスの仮想ページにマッピングする。すなわち、受信制御部82は、受信したデータをメモリ62の空き領域に格納してページテーブル85を更新する。
対象プロセスの実行再開後は、対象プロセスによるメモリアクセスが発生する可能性が生じることとなる。対象プロセスは、既に転送済みの領域に対するアクセスについては目的のデータにアクセスすることができるが、未転送の第2領域に対するアクセスについては目的のデータにアクセスできない。この場合、対象プロセスは休眠状態に遷移させられ、未転送の第2領域のデータの転送が完了した後に、対象プロセスが起床されるように制御される。対象プロセスのメモリアクセスの詳細は、後ほど説明する。
第2領域のデータの転送が完了したら、受信制御部82は、コンテキスト情報86の転送状態情報88の値を、「転送中」から「転送完了」に更新する。そして、受信制御部82は、対象プロセスが休眠している場合には、対象プロセスを起床させる。
(転送されたデータに対するページテーブルの更新処理)
次に、移行元ノード16からデータを受信したときのページテーブル85の更新処理について説明する。
受信制御部82は、移行元ノード16からデータを受信すると、受信したデータをメモリ62の空き領域のうちの物理ページに格納する。そして、受信制御部82は、データを格納した物理ページを、対象プロセスの仮想ページにマッピングする。ここで、受信制御部82は、移行元ノード16におけるページテーブル45と、移行先ノード17におけるページテーブル85とで、仮想ページと物理ページのマッピングが同じになるようにマッピングする。このマッピングは、受信したページテーブル45、及び、受信したデータが移行元ノード16においてどの物理ページまたは仮想ページに格納されていたかを示す情報に基づいて行われる。具体的には、例えば、受信制御部82は、対象プロセスのページテーブル85のPTEの「物理アドレス」に、受信したデータを格納した物理ページのアドレスを格納する。尚、PTEの「Pビット」及び「Aビット」については、ページテーブル45に基づいて、移行元と移行先で同じになるように更新される。例えば、移行元ノード16において、仮想アドレスAに物理アドレスBがマッピングされていたとする。そして、物理アドレスBに格納されていたデータCが、移行先ノード17において物理アドレスB´に格納されたとする。この場合、受信制御部82は、移行先ノード17において、仮想アドレスAに物理アドレスB´がマッピングされるように、ページテーブル85のPTEを更新する。
(メモリアクセス時の動作)
次に、移行先ノード17において、メモリアクセスが発生した場合の動作について説明する。
対象プロセスのメモリアクセスについて、MMU72の動作は、移行元ノード16のMMU32の動作と同じである。すなわち、MMU72は、演算部71から入力された仮想アドレスに対して、アドレス変換処理を行う。また、MMU72は、物理ページが割り当てられていない仮想ページに対するアクセスが行われた場合等には、ページフォルトを発生させる。
ここで、対象プロセスが実行状態に遷移してから、すべての第2領域のデータの転送が完了するまでの間は、第2領域の仮想ページの中には未転送のページが存在することとなる。ページテーブル85における仮想ページと物理ページのマッピングは、転送が完了した場合に行われるものであり、未転送のページについてはマッピングが未だ行われていない。MMU72は、マッピングが行われていない仮想ページに対するアクセスが発生した場合には、ページフォルトを発生させて演算部71に通知する。従って、MMU72は、転送が完了していない第2領域へのアクセスが行われた場合にも、物理ページが割り当てられていない仮想ページに対するアクセスが行われたと判定し、ページフォルトを演算部71に通知する。
ページフォルトが通知されると、OSにおいてページフォルトハンドラが起動される。移行先ノード17では、ページフォルトハンドラは、ページフォルトを発生させたアクセスにおけるアクセス対象のページが、第2領域の未転送のページであるか否かを判定する。アクセス対象のページが未転送のページである場合、ページフォルトハンドラは、対象プロセスを休眠状態に遷移させる。ここで休眠させた対象プロセスは、すべての第2領域のデータの転送が完了した後に、受信制御部82により起こされる。一方、アクセス対象のページが第2領域の未転送のページではない場合、ページフォルトハンドラは、移行元ノード16と同様に、上述したページフォルト解決処理を実行する。
ページフォルトハンドラの具体的な処理について説明する。
ページフォルトハンドラは、先ず、ページフォルトが発生した対象プロセスについて、すべての第2領域のデータの転送が完了済みであるか否かを判定する。具体的には、ページフォルトハンドラは先ず、コンテキスト情報86の転送状態情報88を参照する。転送状態情報88の値が「転送中」である場合には、ページフォルトハンドラは、移行対象プロセスのメモリ空間の何れかのデータの転送が完了していないと判定する。また、転送状態情報88の値が「転送完了」である場合には、ページフォルトハンドラは、移行対象プロセスのメモリ空間のすべてのデータの転送が完了済みであると判定する。
すべての第2領域のデータの転送が完了している場合、データが未転送であることが原因で発生するページフォルトは存在しないため、ページフォルトハンドラは、移行元ノード16と同様のページフォルト解決処理を行う。
一方、いずれかの第2領域のデータの転送が完了していない場合、ページフォルトハンドラは、アクセス対象の仮想ページが、転送対象の仮想ページのうちの未転送のページであるか否かを判定する。具体的には、ページフォルトハンドラは、先ず、移行元ノード16から受信したページテーブル45を参照して、アクセス対象の仮想ページが転送対象の仮想ページであるか否かを判定する。転送対象の仮想ページは、第1領域または第2領域の仮想ページである。第1領域または第2領域の仮想ページは、移行元ノード16から受信したページテーブル45において、物理ページとのマッピングが行われている仮想ページである。従って、ページフォルトハンドラは、アクセス対象の仮想アドレスが、移行元ノード16から受信したページテーブル45において、物理アドレスとのマッピングが行われているか否かを判定することで、アクセス対象の仮想ページが転送対象であるか否かを判定する。アクセス対象の仮想ページが転送対象の仮想ページではないと判定した場合、ページフォルトハンドラは、移行元ノード16と同様のページフォルト解決処理を行う。
アクセス対象の仮想ページが転送対象の仮想ページであると判定した場合、ページフォルトハンドラは、移行先ノード17の対象プロセスのページテーブル85を参照して、アクセス対象の仮想アドレスに物理アドレスがマッピングされているか否かを判定する。転送が完了した仮想アドレスは物理ページとのマッピングが済んでいる。したがって、ページフォルトハンドラは、アクセス対象の仮想アドレスに物理アドレスがマッピングされているかを判定することで、アクセス対象のページが未転送のページであるか否かを判定する。アクセス対象のデータが既に転送が完了しているデータの場合、ページフォルトハンドラは、移行元ノード16と同様のページフォルト解決処理を行う。
一方、アクセス対象のページが未転送のページである場合、ページフォルトハンドラは、対象プロセスを休眠状態に遷移させる。休眠された対象プロセスは、未転送ページのデータの転送が完了後に、受信制御部82により起こされる。
対象プロセスが再開されると、ページフォルトハンドラは、対象プロセスに対して再度ページフォルトが発生した仮想ページへのアクセスを実行するところから処理を再開させる。
(移行元ノードのマイグレーション処理のフロー)
図6は、送信制御部による、移行元ノードのマイグレーション処理の詳細を図解したフローチャートの一例である。
図6において、送信制御部42は、先ず、移行対象のプロセスのマイグレーションを指示する移行元処理要求を受信する(S101)。マイグレーション要求を受信すると、送信制御部42は、移行対象プロセスの通信を停止する(S102)。次いで、送信制御部42は、移行対象プロセスを停止する(S103)。
次に、送信制御部42は、移行対象プロセスのコンテキスト情報46を移行先ノード17に転送する(S104)。尚、転送されるコンテキスト情報46は、移行対象プロセスの停止時点の状態を示す情報である。
次いで、送信制御部42は、移行対象プロセスのページテーブル45を移行先ノード17に転送する(S105)。
次に、送信制御部42は、移行対象プロセスに割り当てられたメモリ空間のうち、第1領域を特定する(S106)。すなわち、送信制御部42は、ページテーブル45において、「Aビット」の値が「1」であるPTEの「物理アドレス」で示される物理ページの集合を第1領域として特定する。第2領域は移行対象アドレスのメモリ空間のうち第1領域以外の領域であるので、第1領域が特定されると第2領域も特定されることとなる。尚、送信制御部42は、ページテーブル45において、「Aビット」の値が「0」であるPTEの「物理アドレス」で示される物理ページの集合を第2領域として特定してもよい。尚、第2領域に対応するPTEには、物理アドレスにマッピングが行われていないPTEは含まない。
次に、送信制御部42は、特定した第1領域に格納されたデータを移行先ノード17に転送する(S107)。
第1領域のすべてのデータの転送が完了したら、送信制御部42は、第2領域のデータを移行先ノードに転送する(S108)。
そして処理は終了する。尚、S104、S105の処理は、S103の処理後S107の処理が完了するまでの間に行われるならば、順序が前後してもよい。
(移行先ノードのマイグレーション処理のフロー)
図7は、受信制御部による、移行先ノードのマイグレーション処理の詳細を図解したフローチャートの一例である。
図7において、先ず、受信制御部82は、プロセスのマイグレーションにおける移行先ノードでの処理要求を受信する(S201)。この処理要求を受信すると、受信制御部82は、新規の対象プロセスを生成し、生成した対象プロセスを停止状態に遷移させる(S202)。対象プロセスの生成とともに、対象プロセスに対応するコンテキスト情報86とページテーブル85が生成される。
次に、受信制御部82は、移行元ノード16から移行対象プロセスのコンテキスト情報46を受信する(S203)。そして、受信制御部82は、受信したコンテキスト情報46に基づいて、対象プロセスのコンテキスト情報86を移行対象プロセスのコンテキスト情報の内容に更新(コピー)する(S204)。これにより、コンテキスト情報について、新規作成した対象プロセスを移行対象プロセスと同じ状態とすることができる。尚、更新において、コンテキスト情報のうち環境依存の情報については、移行先ノードの環境に応じて適宜変更されてもよい。
次に、受信制御部82は、移行元ノード16から移行対象プロセスのページテーブル45を受信する(S205)。そして、受信制御部82は、受信したページテーブル45に基づいて、対象プロセスのページテーブル85を更新し初期化する(S206)。更新において受信制御部82は、対象プロセスに移行対象プロセスの仮想アドレス空間と同じ仮想アドレス空間が割り当てられていることを示すように対象プロセスのページテーブル85を更新する。尚、この時点では、ページテーブル85において、仮想アドレスに対する物理アドレスの対応付け(マッピング)は行われていない。
次に、受信制御部82は、移行元ノード16から第1領域のデータを受信する(S207)。そして、受信制御部82は、受信した第1領域のデータに対応する仮想ページの割り当てを行う(S208)。すなわち、受信制御部82は、受信したデータをメモリ62の空き物理ページに格納し、その物理ページと受信したデータに対応する仮想ページとをマッピングしてページテーブル85のPTEに記録する。
次に、受信制御部82は、第1領域の全てのデータの転送が完了したか否かを判定する(S209)。具体的には、例えば、受信制御部82は、先ず、受信したページテーブル45において「Aビット」の値が「1」であるすべてのPTEを特定する。そして、受信制御部82は、特定したPTEに対応する全ての仮想ページのデータについて、ページテーブル85を参照し、転送が完了したか否かを判定する。尚、転送が完了したか否かは、ページテーブル85において、第1領域の仮想アドレスと物理アドレスのマッピングが行われているか否かにより判定される。
第1領域の何れかのデータの転送が完了していないと判定された場合(S209でNo)、処理はS207に再度遷移する。一方、第1領域のすべてのデータの転送が完了したと判定した場合(S209でYes)、受信制御部82は、対象プロセスのコンテキスト情報86において、転送状態情報88の値を「転送中」に変更する(S210)。
次に、受信制御部82は、対象プロセスを実行状態に遷移させる(S211)。
次に、受信制御部82は、移行元ノード16から第2領域のデータを受信する(S212)。そして、受信制御部82は、受信した第2領域のデータに対応する仮想ページの割り当てを行う(S213)。すなわち、受信制御部82は、受信したデータをメモリ62の空き物理ページに格納し、その物理ページと受信したデータに対応する仮想ページとをマッピングしてページテーブル85に記録する。
次に、受信制御部82は、第2領域の全てのデータの転送が完了したか否かを判定する(S214)。具体的には、例えば、受信制御部82は、先ず、受信したページテーブル45において「Aビット」の値が「0」であり、物理アドレスのマッピングが行われているすべてのPTEを特定する。そして、受信制御部82は、特定したPTEに対応する全ての仮想ページのデータについて、ページテーブル85を参照し、転送が完了したか否かを判定する。尚、転送が完了したか否かは、ページテーブル85において、第2領域の仮想アドレスと物理アドレスのマッピングが行われているか否かにより判定される。
第2領域の何れかのデータの転送が完了していないと判定された場合(S214でNo)、処理はS212に再度遷移する。一方、第2領域のすべてのデータの転送が完了したと判定した場合(S214でYes)、受信制御部82は、対象プロセスのコンテキスト情報86において、転送状態情報88の値を「転送完了」に変更する(S215)。
次に、受信制御部82は、対象プロセスが休眠状態であるか否かを判定する(S216)。対象プロセスが休眠状態ではないと判定された場合には(S216でNo)、処理は終了する。一方、対象プロセスが休眠状態であると判定した場合には(S216でYes)、受信制御部82は、対象プロセスを起床させる(S217)。そして、処理は終了する。
尚、S203は、S201の後であってS204の前であれば実行順序は限定されない。S205は、S201の後であってS206の前であれば実行順序は限定されない。S204は、S202及びS203の後であってS211の前であれば実行順序は限定されない。また、S206は、S202及びS205の後であってS211の前であれば実行順序は限定されない。また、S210は、S201の後であってS211の前であれば実行順序は限定されない。
また、S209において、第1領域のすべてのデータの転送が完了したか否かの判定においては、例えば、以下のように実現してもよい。すなわち、移行元ノード16が第1領域のデータの送信が完了した場合に、第1領域のデータの送信が完了したことを示す完了情報を送信し、移行先ノード17は、完了情報に基づいて、第1領域のすべてのデータの転送が完了したことを判定してもよい。S214の第2領域についての判定も同様に実現してもよい。
(移行先ノードのページフォルトハンドラの処理フロー)
図8は、移行先ノードにおけるページフォルトハンドラの詳細を図解したフローチャートの一例である。
図8において、先ず、ページフォルトハンドラは、ページフォルトが発生した対象プロセスについて、すべての第2領域のデータの転送が完了済みであるか否かを判定する(S301)。具体的には、ページフォルトハンドラは、コンテキスト情報86の転送状態情報88の値が「転送完了」であるか否かを判定する。すべての第2領域のデータの転送が完了済みであると判定した場合(S301でYes)、ページフォルトハンドラは、ページフォルト解決処理を行う(S302)。そして処理は終了する。
一方、第2領域の何れかのデータの転送が完了していないと判定した場合(S301でNo)、ページフォルトハンドラは、アクセス対象の仮想ページが、第2領域の未転送のページであるか否かを判定する(S303)。
アクセス対象の仮想ページが、第2領域の未転送のページでないと判定された場合(S303でNo)、処理はS302に遷移する。一方、アクセス対象の仮想ページが、転送対象の仮想ページのうちの未転送のページであると判定した場合(S303でYes)、ページフォルトハンドラは、対象プロセスを休眠状態に遷移させる(S304)。対象プロセスが休眠している間は、受信制御部82により第2領域のデータが受信されて、第2領域のデータに対応する仮想ページの割当処理がなされる(図7のS213)。ここで休眠させた対象プロセスは、第2領域のすべてのデータの受信が完了した時点で、受信制御部82により起床される(図7のS217)。
対象プロセスが再開されると、ページフォルトハンドラは、対象プロセスに対して再度ページフォルトが発生した仮想ページへのアクセスを実行するように指示する(S305)。そして処理は終了する。
(ノードのハードウェア構成)
次に、実施形態に係る移行元ノード16及び移行先ノード17のハードウェア構成の一例を説明する。図9は、実施形態に係る移行元ノード16及び移行先ノード17のハードウェア構成の一例を示す。
図9において、移行元ノード16及び移行先ノード17は、CPU91、メモリ92、記憶装置93、読取装置94、及び通信インターフェース95を含む。CPU91、メモリ92、記憶装置93、読取装置94、及び通信インターフェース95はバス96または通信ネットワーク等を介して接続される。
CPU91は、MMU97を含む。また、CPU91は、メモリ92を利用して上述のフローチャートの手順を記述したプログラムを実行することにより、演算部31、71の一部または全部の機能を提供する。CPU91は、CPU21、61の一例である。MMU97は、MMU32、72の一例である。
メモリ92は、例えば半導体メモリであり、Random Access Memory(RAM)領域およびRead Only Memory(ROM)領域を含んで構成される。メモリ92は、メモリ22、62の一例である。
記憶装置93は、例えばハードディスクである。なお、記憶装置93は、フラッシュメモリ等の半導体メモリであってもよい。また、記憶装置93は、外部記憶装置であってもよい。記憶装置93は、記憶装置23、63の一例である。
読取装置94は、CPU91の指示に従って着脱可能記憶媒体99にアクセスする。着脱可能記憶媒体99は、たとえば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD−ROM、DVD等)などにより実現される。尚、読取装置94は、移行元ノード16及び移行先ノード17に含まれなくてもよい。
通信インターフェース95は、CPU91の指示に従って他のノードと通信する。通信インターフェース95は、通信インターフェース24、64の一例である。
実施形態のプログラムは、例えば、下記の形態で移行元ノード16及び移行先ノード17に提供される。
(1)記憶装置93に予めインストールされている。
(2)着脱可能記憶媒体99により提供される。
(3)プログラムサーバ(図示せず)から通信インターフェース95を介して提供される。
さらに、実施形態1の移行元ノード16及び移行先ノード17の一部は、ハードウェアで実現してもよい。或いは、実施形態の移行元ノード16及び移行先ノード17は、ソフトウェアおよびハードウェアの組合せで実現してもよい。
移行元ノード16と移行先ノード17のメモリ92は、共有されてもよい。移行元ノード16と移行先ノード17の記憶装置93は、共有されてもよい。
また、移行元ノード16及び移行先ノード17は、同じ物理サーバ上もしくは異なる物理サーバ上で動作する仮想マシンであってもよい。その場合、移行元ノード16と移行先ノード17の間では、CPU91、メモリ92、記憶装置93、読取装置94、及び通信インターフェース95が共有されてもよい。
また、実施形態では移行対象はプロセスであるとして説明したが、移行対象はVMや種々のソフトウェアでもよい。
尚、実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
1 並列計算システム
2 第1ノード
3 第2ノード
4 記憶部
5 停止制御部
6 送信部
7 受信部
8 再開制御部
9 休眠制御部
10 起床制御部
15 情報処理システム
16 移行元ノード
17 移行先ノード
21 CPU
22 メモリ
23 記憶装置
24 通信インターフェース
31 演算部
32 MMU
41 処理部
42 送信制御部
43 アクセス制御部
44 キャッシュ
45 ページテーブル
46 コンテキスト情報
47 物理ページ
61 CPU
62 メモリ
63 記憶装置
64 通信インターフェース
71 演算部
72 MMU
81 処理部
82 受信制御部
83 アクセス制御部
84 キャッシュ
85 ページテーブル
86 コンテキスト情報
87 物理ページ
88 転送状態情報
91 CPU
92 メモリ
93 記憶装置
94 読取装置
95 通信インターフェース
96 バス
97 MMU
99 着脱可能記憶媒体
特開2005−327279号公報 特開2008−269000号公報 国際公開第2012/063334号

Claims (7)

  1. プロセスを実行する処理実行単位であるノードのうち、第1ノードで実行中の対象プロセスを第2ノードに移行する並列計算システムであって、
    前記第1ノードは、
    前記対象プロセスに割り当てられた記憶領域のうち、直近の所定期間内に前記対象プロセスによりアクセスされた第1領域を示すアクセス領域情報を記憶する記憶部と、
    前記対象プロセスの移行指示を受信した場合、前記対象プロセスを停止する停止制御部と、
    停止時点の前記対象プロセスの状態を示す状態情報を送信し、前記アクセス領域情報に基づいて、前記第1領域に格納された第1データを送信する送信部と、
    を備え、
    前記第2ノードは、
    前記状態情報と前記第1データとを受信する受信部と、
    前記状態情報に基づいて前記対象プロセスを生成し、前記第1データを用いて、前記対象プロセスを再開する再開制御部と、
    を備える
    ことを特徴とする並列計算システム。
  2. 前記送信部は、前記第1データの送信の完了後に、前記記憶領域のうちの前記第1領域以外の第2領域に格納された第2データを送信し、
    前記受信部は、前記対象プロセスの実行中に、前記第2データを受信する
    ことを特徴とする請求項1に記載の並列計算システム。
  3. 前記アクセス領域情報は、前記対象プロセスを実行する中央演算処理装置に搭載されたメモリ管理ユニットにより、前記対象プロセスのページテーブルに記録された情報である
    ことを特徴とする請求項1または2に記載の並列計算システム。
  4. 前記第2ノードは、さらに、
    前記対象プロセスにより、前記第2領域のうちデータの受信が完了していない領域に対するアクセスが発生した場合、前記対象プロセスを休眠させる休眠制御部と、
    前記受信が完了していない領域のデータを受信した場合、休眠された前記対象プロセスを起床させる起床制御部と、
    を有することを特徴とする請求項2に記載の並列計算システム。
  5. プロセスを実行する処理実行単位であるノードのうち、第1ノードで実行中の対象プロセスを停止し、
    停止時点の前記対象プロセスの状態を示す状態情報を前記第1ノードから第2ノードに転送し、
    前記第1ノードの記憶領域であって、前記対象プロセスに割り当てられた該記憶領域のうち、直近の所定期間内に前記対象プロセスによりアクセスされた第1領域を示すアクセス領域情報を記憶する記憶部に記憶された前記アクセス領域情報に基づいて、前記第1領域に格納された第1データを前記第1ノードから前記第2ノードに転送し、
    前記第2ノードにおいて、転送された前記状態情報に基づいて対象プロセスを生成し、転送された前記第1データを用いて、前記対象プロセスを再開する、
    処理をコンピュータが実行することを特徴とするマイグレーション方法。
  6. コンピュータに、
    実行中の対象プロセスの移行指示を受信した場合、前記対象プロセスを停止し、
    停止時点の前記対象プロセスの状態を示す状態情報を送信し、前記対象プロセスに割り当てられた記憶領域のうち、直近の所定期間内に前記対象プロセスによりアクセスされた第1領域を示すアクセス領域情報を記憶する記憶部に格納された前記アクセス領域情報に基づいて、前記第1領域に格納された第1データを送信する、
    処理を実行させることを特徴とするマイグレーションプログラム。
  7. コンピュータに、
    実行中の対象プロセスの移行指示を受信した場合に前記対象プロセスを停止するノードから、停止時点の前記対象プロセスの状態を示す状態情報と、前記対象プロセスに割り当てられた前記ノードの記憶領域のうち、直近の所定期間内に前記対象プロセスによりアクセスされた第1領域に格納されていた第1データとを受信し、
    前記状態情報に基づいて前記対象プロセスを生成し、前記第1データを用いて、前記対象プロセスを再開する、
    処理を実行させることを特徴とするマイグレーションプログラム。
JP2015153972A 2015-08-04 2015-08-04 並列計算システム、マイグレーション方法、及びマイグレーションプログラム Pending JP2017033375A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015153972A JP2017033375A (ja) 2015-08-04 2015-08-04 並列計算システム、マイグレーション方法、及びマイグレーションプログラム
US15/202,034 US10341177B2 (en) 2015-08-04 2016-07-05 Parallel computing system and migration method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015153972A JP2017033375A (ja) 2015-08-04 2015-08-04 並列計算システム、マイグレーション方法、及びマイグレーションプログラム

Publications (1)

Publication Number Publication Date
JP2017033375A true JP2017033375A (ja) 2017-02-09

Family

ID=57988121

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015153972A Pending JP2017033375A (ja) 2015-08-04 2015-08-04 並列計算システム、マイグレーション方法、及びマイグレーションプログラム

Country Status (2)

Country Link
US (1) US10341177B2 (ja)
JP (1) JP2017033375A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11444866B2 (en) * 2016-07-22 2022-09-13 Intel Corporation Methods and apparatus for composite node creation and management through SDI partitions
US10609130B2 (en) 2017-04-28 2020-03-31 Microsoft Technology Licensing, Llc Cluster resource management in distributed computing systems
US11595464B2 (en) * 2021-07-23 2023-02-28 Vmware, Inc. Migration of network file copy operations between host computing devices

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134710A (ja) * 2008-12-04 2010-06-17 Ntt Data Corp 仮想マシンの移行方法、サーバ、及び、プログラム
JP2014052725A (ja) * 2012-09-05 2014-03-20 Nec Corp 移行処理装置、情報処理システム、移行処理方法、および、プログラム

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760815B1 (en) * 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
US7065541B2 (en) * 2001-10-10 2006-06-20 International Business Machines Corporation Database migration
WO2003073311A1 (en) * 2002-02-21 2003-09-04 Bea Systems, Inc. System and method for message driven bean service migration
US6788963B2 (en) * 2002-08-08 2004-09-07 Flarion Technologies, Inc. Methods and apparatus for operating mobile nodes in multiple a states
US7257811B2 (en) * 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
US9286109B1 (en) * 2005-08-26 2016-03-15 Open Invention Network, Llc Method and system for providing checkpointing to windows application groups
US7523344B2 (en) * 2006-05-08 2009-04-21 Sun Microsystems, Inc. Method and apparatus for facilitating process migration
JP2008269000A (ja) 2007-04-16 2008-11-06 Fuji Xerox Co Ltd 画像処理装置
US9473598B2 (en) * 2007-12-18 2016-10-18 International Business Machines Corporation Network connection failover during application service interruption
US8069190B2 (en) * 2007-12-27 2011-11-29 Cloudscale, Inc. System and methodology for parallel stream processing
US8200771B2 (en) * 2008-10-10 2012-06-12 International Business Machines Corporation Workload migration using on demand remote paging
US8752048B1 (en) * 2008-12-15 2014-06-10 Open Invention Network, Llc Method and system for providing checkpointing to windows application groups
US7970913B2 (en) * 2008-12-31 2011-06-28 International Business Machines Corporation Virtualizing sockets to enable the migration of a system environment
US9594582B2 (en) * 2009-01-05 2017-03-14 International Business Machines Corporation Detection and management of dynamic migration of virtual environments
CN102474332B (zh) * 2009-07-17 2015-04-01 飞思卡尔半导体公司 分集式接收器和收发器
US8850426B2 (en) * 2009-12-13 2014-09-30 International Business Machines Corporation Managing remote deployment of a virtual machine and service request to be processed by the virtual machines based on network bandwith and storage connectivity
JP5524606B2 (ja) * 2009-12-28 2014-06-18 キヤノン株式会社 仮想化環境におけるモジュール間の通信方法、情報処理装置およびその制御方法、クライアント装置、情報処理システム、プログラム
US8799418B2 (en) * 2010-01-13 2014-08-05 Vmware, Inc. Cluster configuration
US8171349B2 (en) * 2010-06-18 2012-05-01 Hewlett-Packard Development Company, L.P. Associating a monitoring manager with an executable service in a virtual machine migrated between physical machines
WO2012063334A1 (ja) 2010-11-10 2012-05-18 株式会社日立製作所 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ
US20120198431A1 (en) * 2011-01-30 2012-08-02 Lin Qiangmin Method for upgrading hypervisor component and computer system
JP5678778B2 (ja) * 2011-03-31 2015-03-04 富士通株式会社 システムおよびマイグレーション方法
CN102317914B (zh) * 2011-08-01 2013-10-09 华为技术有限公司 虚拟资源管理方法、系统及装置
US10025638B2 (en) * 2012-07-02 2018-07-17 Vmware, Inc. Multiple-cloud-computing-facility aggregation
GB2506177A (en) * 2012-09-25 2014-03-26 Ibm Method of migrating an operating system executing an application
US9148765B2 (en) * 2012-11-27 2015-09-29 Alcatel Lucent Push service without persistent TCP connection in a mobile network
US9110722B2 (en) * 2013-02-28 2015-08-18 International Business Machines Corporation Data processing work allocation
US9569480B2 (en) * 2013-05-02 2017-02-14 Aspen Technology, Inc. Method and system for stateful recovery and self-healing
US9626180B2 (en) * 2013-12-16 2017-04-18 International Business Machines Corporation Live operating system update mechanisms
US9626212B2 (en) * 2014-06-28 2017-04-18 Vmware, Inc. Live migration of virtual machines with memory state sharing
US10015266B1 (en) * 2014-09-22 2018-07-03 Symantec Corporation Live migration of massive numbers of network connections, including long lived connections
US9722873B2 (en) * 2014-12-04 2017-08-01 Microsoft Technology Licensing, Llc Zero-downtime, reversible, client-driven service migration

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134710A (ja) * 2008-12-04 2010-06-17 Ntt Data Corp 仮想マシンの移行方法、サーバ、及び、プログラム
JP2014052725A (ja) * 2012-09-05 2014-03-20 Nec Corp 移行処理装置、情報処理システム、移行処理方法、および、プログラム

Also Published As

Publication number Publication date
US10341177B2 (en) 2019-07-02
US20170041191A1 (en) 2017-02-09

Similar Documents

Publication Publication Date Title
US10552337B2 (en) Memory management and device
US8788739B2 (en) Hypervisor-based management of local and remote virtual memory pages
US9767036B2 (en) Page state directory for managing unified virtual memory
US9229878B2 (en) Memory page offloading in multi-node computer systems
US10061526B2 (en) Frame buffer access tracking via a sliding window in a unified virtual memory system
JP6652646B2 (ja) 選択的リソースマイグレーションを用いるネットワーク接続型メモリ
US11392428B2 (en) Fork handling in application operations mapped to direct access persistent memory
TWI614669B (zh) 遷移異構處理器之間不同大小的分頁
US20160266923A1 (en) Information processing system and method for controlling information processing system
TW201502781A (zh) 解決記憶體存取錯誤時重播記憶體交易
JP6337902B2 (ja) ストレージシステムとノード装置とキャッシュ制御方法並びにプログラム
JP2018088134A (ja) マイグレーションプログラム、情報処理装置およびマイグレーション方法
US10430221B2 (en) Post-copy virtual machine migration with assigned devices
US20150095576A1 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments
KR20220000422A (ko) 인공 신경망(ann) 애플리케이션을 위한 서비스로서의 메모리
US20150143055A1 (en) Virtual machine backup
KR20220000415A (ko) 서비스로서의 메모리에 기초한 분산 컴퓨팅
US10341177B2 (en) Parallel computing system and migration method
US11687359B2 (en) Hybrid memory management apparatus and method for many-to-one virtualization environment
KR20230162100A (ko) 계층형 메모리 관리를 오프로드하기 위한 방법들 및 장치들
JP2023538241A (ja) メモリロケーションに記憶されたデータが修正されたかどうかを識別するためのメモリロケーションの監視

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190205

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20190206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20190207

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190521