JP6696315B2 - 並列処理装置及びメモリキャッシュ制御方法 - Google Patents

並列処理装置及びメモリキャッシュ制御方法 Download PDF

Info

Publication number
JP6696315B2
JP6696315B2 JP2016121212A JP2016121212A JP6696315B2 JP 6696315 B2 JP6696315 B2 JP 6696315B2 JP 2016121212 A JP2016121212 A JP 2016121212A JP 2016121212 A JP2016121212 A JP 2016121212A JP 6696315 B2 JP6696315 B2 JP 6696315B2
Authority
JP
Japan
Prior art keywords
cache
server
node
data
client
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.)
Expired - Fee Related
Application number
JP2016121212A
Other languages
English (en)
Other versions
JP2017224253A (ja
Inventor
山田 雅彦
雅彦 山田
剛 橋本
剛 橋本
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 JP2016121212A priority Critical patent/JP6696315B2/ja
Priority to US15/597,550 priority patent/US20170366612A1/en
Publication of JP2017224253A publication Critical patent/JP2017224253A/ja
Application granted granted Critical
Publication of JP6696315B2 publication Critical patent/JP6696315B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2885Hierarchically arranged intermediate devices, e.g. for hierarchical caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、並列処理装置及びメモリキャッシュ制御方法に関する。
ファイルサーバが記憶するファイルをネットワークを介してクライアントがアクセスする場合、クライアントのメインメモリにファイルキャッシュが記憶される。図22は、ファイルキャッシュがクライアントのメインメモリに記憶される場合を示す図である。
図22では、ファイルサーバ8のファイル管理部81が、ネットワーク8cを介したクライアント9からのファイルアクセスを処理する。クライアント9で動作するクライアントアプリケーション91は、RPC(Remote Procedure Call)プロトコルを用いてファイルサーバ8が記憶するファイルにアクセスする。
このとき、クライアント9のメインメモリは一次キャッシュとしてファイルキャッシュ92を記憶し、クライアントアプリケーション91は、ファイルキャッシュ92にアクセスすることによって、ファイルサーバ8が記憶するファイルにアクセスする。
一次キャッシュがあふれた場合には、キャッシュサーバに二次キャッシュが配置される。図23は、キャッシュサーバに配置される二次キャッシュを示す図である。図23に示すように、ネットワーク8cに接続されたキャッシュサーバ9aのメインメモリにクライアントキャッシュ93が二次キャッシュとして配置される。クライアントアプリケーション91によってファイルキャッシュ92に書き込みが行われると、書き込みがクライアントキャッシュ93に反映され、クライアントキャッシュ93の内容がファイルサーバ8に反映される。
また、ファイルサーバ8におけるファイルのアクセスを高速化するために、ファイルの複製がキャッシュサーバにサーバキャッシュとして配置される。図24は、キャッシュサーバに配置されるサーバキャッシュを示す図である。図24に示すように、ネットワーク8cに接続されたキャッシュサーバ8aのメインメモリにサーバキャッシュ82が配置される。クライアントアプリケーション91によってファイルキャッシュ92に書き込みが行われると、書き込みがサーバキャッシュ82に反映され、サーバキャッシュ82の内容がファイルサーバ8に反映される。
なお、複数のノードを含むシステムにおいて、第1ノードの記憶装置に格納されたデータに対するアクセス特性を示す特性データを取得し、取得した特性データに基づきキャッシュに割り当てる資源を決定することで、適切にキャッシュを配置する技術がある。
また、データ格納手段から取得される元データをキャッシュとして格納し、データ取得要求を受け付けると、キャッシュを利用可能か否かを判定する前に、データ格納手段に格納された元データに対する更新を制限することで、データ取得の効率化を図る技術がある。
また、ネットワークを介してクライアントとストレージが通信する場合、クライアントとストレージ間にキャッシュストレージを設けることで、性能の劣化を防ぐ技術がある。
特開2013−205891号公報 特開2008−146380号公報 特開2004−342071号公報
キャッシュサーバを利用するシステムで、ジョブAでクライアントキャッシュ93に配置されたファイルの内容が次のジョブBでも使用される場合、ジョブAの終了時にクライアントキャッシュ93の内容がファイルサーバ8のディスク装置に書き込まれる。そして、ジョブBでファイルサーバ8のディスク装置からファイルが読み出されてサーバキャッシュ82としてキャッシュサーバ8aのメインメモリに読み出されて使用される。
すなわち、ジョブAでクライアントキャッシュ93として使用されたメインメモリの内容は、ディスク装置に書き込まれた後サーバキャッシュ82として再度メインメモリに読み出される。このため、ジョブBの実行前にディスク装置への無駄な書き込みとディスク装置からの無駄な読み出しが発生するという問題がある。特に、スーパコンピュータで関連する一連のジョブが実行される場合、前のジョブで使用されたファイルが次のジョブで使用されることが多く、無駄な書き込みと読み出しが多く発生する。
本発明は、1つの側面では、ディスク装置に対する無駄な書き込みと読み出しをなくすことを目的とする。
1つの態様では、並列処理装置は、複数のノードを有する。第1ノードは、第1データを記憶する第1記憶装置と、送信部と、クライアントキャッシュとして記憶した前記第1データをサーバキャッシュに切り替える切替部とを有する。第2ノードは、前記第1記憶装置より低速な記憶装置であって前記第1データを記憶する第2記憶装置を有する。また、前記第2ノードは、前記第1データを前記第1ノードが前記第1記憶装置に記憶中であることを示すデータ管理情報を記憶する管理情報記憶部を有する。また、前記第2ノードは、第3ノードから前記第1データの送信要求を受信する受信部を有する。また、前記第2ノードは、前記切替部が前記第1データをサーバキャッシュに切り替えた場合に、前記受信部が前記送信要求を受信すると、前記データ管理情報を参照し前記第1データが前記第1ノードの前記第1記憶装置に記憶されていた場合は、前記第1ノードに前記第1データを前記第3ノードに送信するように指示を行う制御部を有する。
1つの側面では、ディスク装置に対する無駄な書き込みと読み出しをなくすことができる。
図1は、実施例に係る並列処理装置の構成を示す図である。 図2は、ノードのハードウェア構成を示す図である。 図3は、ノードへのサーバの割当を説明するための図である。 図4は、サーバキャッシュとクライアントキャッシュの関係を示す図である。 図5は、実施例に係るネットワークファイルシステムの機能構成を示す図である。 図6は、クライアントキャッシュ及びサーバキャッシュを示す図である。 図7は、スレーブ管理表及びCPUメモリ位置情報のデータ構造を示す図である。 図8は、リモートキャッシュ管理表及びCPUメモリ位置情報のデータ構造を示す図である。 図9は、キャッシュ管理部によるスレーブ管理表の処理のフローを示すフローチャートである。 図10は、空きノード検索処理のフローを示すフローチャートである。 図11は、クライアントによるファイル管理処理のフローを示すフローチャートである。 図12は、ファイルサーバによるファイル管理処理のフローを示すフローチャートである。 図13は、キャッシュ管理部によるクライアントキャッシュ管理処理のフローを示すフローチャートである。 図14は、バッキングストア管理部による処理のフローを示すフローチャートである。 図15は、スレーブ管理部によるスレーブメモリキャッシュサーバへのメモリキャッシュ操作指示処理のフローを示すフローチャートである。 図16は、マスター対応部による処理のフローを示すフローチャートである。 図17は、フレンド対応部による処理のフローを示すフローチャートである。 図18は、切替マスターデーモンによる切替処理のフローを示すフローチャートである。 図19は、切替サブデーモンによる切替処理のフローを示すフローチャートである。 図20は、クライアントキャッシュとして使用できる領域の使用状態に基づいてサーバキャッシュへの切替を制御する切替マスターデーモンの切替処理のフローを示すフローチャートである。 図21は、クライアントキャッシュとして使用できる領域の使用状態に基づいてサーバキャッシュ切替を制御する切替サブデーモンの切替処理のフローを示すフローチャートである。 図22は、ファイルキャッシュがクライアントのメインメモリに記憶される場合を示す図である。 図23は、キャッシュサーバに配置される二次キャッシュを示す図である。 図24は、キャッシュサーバに配置されるサーバキャッシュを示す図である。
以下に、本願の開示する並列処理装置及びメモリキャッシュ制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
まず、実施例に係る並列処理装置について説明する。図1は、実施例に係る並列処理装置の構成を示す図である。図1に示すように、並列処理装置7は、l、m及びnを正の整数として、x軸方向にl個、y軸方向にm個、z軸方向にn個のノード10がトーラス状に接続されて構成される。なお、図1では、ノード10が3次元に配置される場合を示すが、ノード10は、2次元、6次元等の他の次元で配置されてもよい。また、ノード10は、メッシュ状に配置されてもよい。
ノード10は、情報処理を行う情報処理装置である。ユーザのジョブは、複数のノード10により並列処理される。図2は、ノードのハードウェア構成を示す図である。図2に示すように、ノード10は、CPU10aと、メインメモリ10bと、インターコネクト部10cとを有する。
CPU10aは、メインメモリ10bからプログラムを読み出して実行する中央処理装置である。メインメモリ10bは、プログラムやプログラムの実行途中結果などを記憶するメモリである。インターコネクト部10cは、他のノード10と通信を行う通信装置である。
インターコネクト部10cは、RDMA(Remote Direct Memory Access)機能を有する。すなわち、インターコネクト部10cは、メインメモリ10bが記憶するデータをCPU10aを介することなく他のノード10へ転送し、他のノード10から受信したデータをCPU10aを介することなくメインメモリ10bに書き込むことができる。
次に、ノード10へのサーバの割当について説明する。図3は、ノード10へのサーバの割当を説明するための図である。図3に示すように、1台のノード10は、ディスク装置2aを有し、ファイルサーバ2として動作する。ファイルサーバ2は、ディスク装置2aにファイルを記憶し、他のノード10が使用するデータを記憶する。
ノード10には、ジョブで使用されているものと、ジョブで使用されていないものがある。図3では、(1,1,1)から(1,M,1)のM個のノード10がジョブで使用されているノード10すなわちジョブを起動したノード10であり、(1,1,2)から(1,M,M)のM×(M−1)個のノード10が、ジョブで使用されていない空きノード10である。
ジョブを起動したノード10の近傍の空きノード10にマスターメモリキャッシュサーバと複数のスレーブメモリキャッシュサーバが割り当てられる。ここで、近傍とは、ホップ数が1から3までを表す。
スレーブメモリキャッシュサーバは、メモリキャッシュをメインメモリ10bに記憶する。メモリキャッシュには、クライアントキャッシュとサーバキャッシュがある。マスターメモリキャッシュサーバは、スレーブメモリキャッシュサーバが記憶するメモリキャッシュを管理する。
図4は、サーバキャッシュとクライアントキャッシュの関係を示す図である。サーバキャッシュは、ファイルサーバ2の高速化のために、ファイルサーバ2上のファイルの複製を別なノード10のメインメモリ10b上に配置したものである。サーバキャッシュには、通常、読み出し専用のデータが格納されている。サーバキャッシュは、負荷分散と冗長化のために、複数のノード10にあってもよい。
クライアントキャッシュは、クライアント上のファイルキャッシュの複製を別のノード10のメインメモリ10b上に配置したものである。ここで、クライアントは、ジョブを起動したノード10である。クライアントキャッシュは、負荷分散と冗長化のために、複数のノード10にあってもよい。
実施例に係るメモリキャッシュ制御は、クライアントキャッシュの多段の複製を行った場合、クライアントキャッシュをサーバキャッシュと同等とみなして、クライアントにファイルの内容のファイルサーバ2への書き込みが完了したことが通知する。ここで、クライアントキャッシュの多段の複製とは、書き込みが行われたファイルブロックを他のクライアントキャッシュ又はファイルサーバ2のファイルキャッシュへ複製することである。また、クライアントキャッシュをサーバキャッシュと同等とみなすということは、クライアントキャッシュをサーバキャッシュに変更することである。クライアントキャッシュをサーバキャッシュに変更することで、データが次のジョブで使用される場合に、ファイルサーバ2への書き込みとその後のファイルサーバ2からの読み出しが不要になる。
サーバキャッシュに既にクライアントキャッシュと同じファイルブロックが存在する場合、実施例に係るメモリキャッシュ制御は、クライアントにファイルサーバ2への書き込みが完了したことを通知した時点で、サーバキャッシュのファイルブロックを破棄する。なお、ファイルサーバへの書き込み完了通知以降は、ファイルサーバ2のディスク装置2aへの実際のファイルの書き戻しのタイミングは、ファイルサーバ2により制御される。
次に、実施例に係るネットワークファイルシステムの機能構成について説明する。図5は、実施例に係るネットワークファイルシステムの機能構成を示す図である。図5に示すように、実施例に係るネットワークファイルシステムは、クライアント1と、ファイルサーバ2と、マスターメモリキャッシュサーバ3と、主スレーブメモリキャッシュサーバ4と、他スレーブメモリキャッシュサーバ5と、ジョブスケジューラ6とを有する。
クライアント1は、ジョブを起動したノード10である。ファイルサーバ2は、クライアント1が使用するファイルをディスク装置2aに記憶する。マスターメモリキャッシュサーバ3は、スレーブメモリキャッシュサーバが記憶するクライアントキャッシュ及びサーバキャッシュを管理する。なお、図5では1台のクライアント1のみを示すが、クライアント1は複数台ある。
主スレーブメモリキャッシュサーバ4及び他スレーブメモリキャッシュサーバ5は、クライアントキャッシュ及びサーバキャッシュを記憶するスレーブメモリキャッシュサーバである。通常は、主スレーブメモリキャッシュサーバ4がスレーブメモリキャッシュサーバとして用いられる。他スレーブメモリキャッシュサーバ5は、主スレーブメモリキャッシュサーバ4が使用できない場合に、スレーブメモリキャッシュサーバとして用いられる。他スレーブメモリキャッシュサーバ5は、複数ある。
図6は、主スレーブメモリキャッシュサーバ4及び他スレーブメモリキャッシュサーバ5が記憶するクライアントキャッシュ及びサーバキャッシュを示す図である。図6に示すように、主スレーブメモリキャッシュサーバ4及び他スレーブメモリキャッシュサーバ5は、それぞれ複数のクライアントキャッシュ40c及びサーバキャッシュ40dを記憶する。なお、クライアントキャッシュ40c及びサーバキャッシュ40dはスレーブメモリキャッシュサーバの記憶部40に記憶される。
ジョブスケジューラ6は、ジョブの実行のスケジューリングを行う。ジョブスケジューラ6は、ジョブをノード10に割り当て、資源割当マップ61を作成し、マスターメモリキャッシュサーバ3へ通知する。
マスターメモリキャッシュサーバ3は、記憶部30と、キャッシュ管理部31と、切替マスターデーモン32と、スレーブ管理部33と、バッキングストア管理部34とを有する。
記憶部30は、メモリキャッシュを管理するための情報を記憶する。具体的には、記憶部30は、スレーブ管理表30aと、CPUメモリ位置情報30bと、リモートキャッシュ管理表30cとを記憶する。記憶部30は、図2に示したメインメモリ10bに対応する。
スレーブ管理表30aには、スレーブメモリキャッシュサーバに配置されるメモリキャッシュをスレーブメモリキャッシュサーバ毎に管理するための情報が登録される。CPUメモリ位置情報30bは、メインメモリ10b上のファイルブロックに関する情報である。
図7は、スレーブ管理表30a及びCPUメモリ位置情報30bのデータ構造を示す図である。図7に示すように、スレーブ管理表30aは、キャッシュメモリ毎のエントリが双方向ポインタで接続された表である。エントリには、スレーブメモリキャッシュサーバのネットワークアドレス、メモリキャッシュ用に管理する全メモリブロック数、メモリキャッシュ用に管理する空きメモリブロック数、CPUメモリ位置情報へのポインタが含まれる。また、エントリには、次のエントリへのポインタ、前のエントリへのポインタが含まれる。
CPUメモリ位置情報30bは、ファイルブロック毎のエントリが双方向ポインタで接続された情報である。エントリには、CPUのネットワークアドレス、メインメモリ10b上のファイルブロックの先頭アドレス、メインメモリ10b上のファイルブロックのサイズ、ファイルブロックの状態すなわちCLEAN又はDIRTYが含まれる。ここで、CLEANはメインメモリ10b上のファイルブロックに書き込みが行われていないことを示し、DIRTYはメインメモリ10b上のファイルブロックに書き込みが行われたことを示す。また、エントリには、次のエントリへのポインタ、前のエントリへのポインタが含まれる。
リモートキャッシュ管理表30cは、ファイルブロックがどのノード10のメインメモリ10b上の何処のアドレス位置にメモリキャッシュとして配置されているかを管理するための情報である。
図8は、リモートキャッシュ管理表30c及びCPUメモリ位置情報30bのデータ構造を示す図である。図8に示すように、リモートキャッシュ管理表30cは、ファイルブロック毎のエントリが双方向ポインタで接続された表である。エントリには、ファイルブロックの先頭アドレス、ファイルブロックのサイズ、CPUメモリ位置情報へのポインタ、メモリキャッシュの用途すなわちクライアント又はサーバ、メモリキャッシュの状態すなわちシリアライズ又は並列が含まれる。また、エントリには、次のエントリへのポインタ、前のエントリへのポインタが含まれる。
キャッシュ管理部31は、メモリキャッシュの割当、解放、書き込み及び読み出しを管理する。キャッシュ管理部31は、クライアント1からクライアントキャッシュ40cの要求、又はファイルサーバ2からサーバキャッシュ40dの要求を受け付け、スレーブ管理部33へスレーブメモリキャッシュサーバへのキャッシュメモリ操作指示を行うように要求する。
また、キャッシュ管理部31は、スレーブ管理表30a及びリモートキャッシュ管理表30cを更新する。そして、キャッシュ管理部31は、メモリキャッシュの割当、解放又は書き込みが行われた場合には、定期的にリモートキャッシュ管理表30cをクライアント1、ファイルサーバ2及びスレーブメモリキャッシュサーバへ送信し、更新させる。
リモートキャッシュ管理表30cの送信では、キャッシュ管理部31は、各クライアント1、ファイルサーバ2及び各スレーブメモリキャッシュサーバに対して、同時にRDMA転送を行う。このRDMA転送には、キャッシュ管理部31は、MPI(Message Passing Interface:メッセージパッシングインタフェース)の集団通信インタフェース(MPI_BCAST)を利用する。
また、キャッシュ管理部31は、RDMA転送の通信完了を確認するため、CPU10aを利用したメモリ内容のロックなしに、2つのノード10間のメモリ内容の一致を確認する。この確認には、キャッシュ管理部31は、MPIのREDUCEインタフェース(MPI_REDUCE)の排他的論理和(EXOR)の演算を利用する。
また、キャッシュ管理部31は、ジョブスケジューラ6から資源割当マップ61を受信すると、スレーブ管理表30aを参照し、スレーブメモリキャッシュサーバにジョブが割り当てられたか否かを判定する。そして、スレーブメモリキャッシュサーバにジョブが割り当てられた場合には、空きノード10を探し、ジョブが割り当てられたスレーブメモリキャッシュサーバの空きノード10への移動をスレーブ管理部33に要求し、スレーブ管理表30aを更新する。
また、キャッシュ管理部31は、空きノード10が見つからなかった場合には、ジョブが割り当てられたスレーブメモリキャッシュサーバからファイルサーバ2への退避をスレーブ管理部33に要求する。
切替マスターデーモン32は、スレーブメモリキャッシュサーバの切替サブデーモン41と連携してクライアントキャッシュ40cからサーバキャッシュ40dへの切替を行う。切替マスターデーモン32は、クライアントキャッシュ40cからサーバキャッシュ40dへの切替を行ったメモリキャッシュについてリモートキャッシュ管理表30cを更新する。
スレーブ管理部33は、キャッシュ管理部31の要求に基づいて、スレーブメモリキャッシュサーバにキャッシュメモリの割当又は解放を指示する。また、スレーブ管理部33は、キャッシュ管理部31の要求に基づいて、スレーブメモリキャッシュサーバの空きノード10への移動、又は、スレーブメモリキャッシュサーバからファイルサーバ2への退避を指示する。
ここで、スレーブメモリキャッシュサーバの空きノード10への移動とは、スレーブメモリキャッシュサーバのメモリキャッシュの内容を空きノード10へ移動することである。また、スレーブメモリキャッシュサーバからファイルサーバ2への退避とは、スレーブメモリキャッシュサーバのメモリキャッシュの内容をファイルサーバ2のディスク装置2aに書き込むことである。
バッキングストア管理部34は、ファイルサーバ2のディスク装置2aに記憶されたバッキングストア管理表2bを更新する。ここで、バッキングストア管理表2bは、キャッシュメモリとディスク装置2aとの間のデータの読み書きを管理するための表である。
主スレーブメモリキャッシュサーバ4と他スレーブメモリキャッシュサーバ5は、スレーブメモリキャッシュサーバとして同様の機能構成を有する。そこで、ここでは、スレーブメモリキャッシュサーバの機能構成を説明する。スレーブメモリキャッシュサーバは、記憶部40と、切替サブデーモン41と、クライアント対応部42と、サーバ対応部43と、バッキングストアアクセス部44と、マスター対応部45と、フレンド対応部46とを有する。
記憶部40は、リモートキャッシュ管理表40aとCPUメモリ位置情報40bを記憶する。リモートキャッシュ管理表40aのデータ構造は、リモートキャッシュ管理表30cのデータ構造と同じである。CPUメモリ位置情報40bのデータ構造は、CPUメモリ位置情報30bのデータ構造と同じである。なお、図6に示したように、記憶部40は、クライアントキャッシュ40c及びサーバキャッシュ40dを記憶する。記憶部40は、図2に示したメインメモリ10bに対応する。
切替サブデーモン41は、マスターメモリキャッシュサーバ3の切替マスターデーモン32と連携してクライアントキャッシュ40cからサーバキャッシュ40dへの切替を行う。切替サブデーモン41は、クライアントキャッシュ40cの使用が終了し、クライアントキャッシュ40cの内容がファイルサーバ2に送信されると、クライアントキャッシュ40cからサーバキャッシュ40dへの切替を行う。
クライアント対応部42は、クライアントキャッシュ40cに対する書き込み要求及び読み出し要求をクライアント1から受信し、クライアントキャッシュ40cへのデータの書き込み及びクライアントキャッシュ40cからのデータの読み出しを行う。
サーバ対応部43は、サーバキャッシュ40dに対する書き込み要求及び読み出し要求をファイルサーバ2から受信し、サーバキャッシュ40dへのデータの書き込み及びサーバキャッシュ40dからのデータの読み出しを行う。
バッキングストアアクセス部44は、ディスク装置2aのファイルを読み出して送信すようにファイルサーバ2に要求し、送信されたファイルをメモリキャッシュに書き込む。また、バッキングストアアクセス部44は、クライアントキャッシュ40cの内容をファイルサーバ2に送信し、クライアントキャッシュ40cの内容をディスク装置2aに書き込むようにファイルサーバ2に要求する。
バッキングストアアクセス部44は、クライアントキャッシュ40cの内容をファイルサーバ2に送信する際に、MPIの集団通信インタフェース(MPI_BCAST)を利用して、ファイルサーバ2にRDMA転送を行う。また、バッキングストアアクセス部44は、RDMA転送の通信完了を確認する際に、CPU10aを利用したメモリ内容のロックはしない。バッキングストアアクセス部44は、MPIのREDUCEインタフェース(MPI_REDUCE)の排他的論理和(EXOR)の演算を利用して、ファイルサーバ2との間でメモリ内容の一致を確認する。
マスター対応部45は、スレーブ管理部33からの割当指示又は解放指示に基づいて、フレンド対応部46を用いて、キャッシュメモリの割当又は解放を行う。また、マスター対応部45は、スレーブ管理部33からの移動指示に基づいて、フレンド対応部46へスレーブメモリキャッシュサーバの空きノード10への移動を指示する。また、マスター対応部45は、スレーブ管理部33からの退避指示に基づいて、バッキングストアアクセス部44へスレーブメモリキャッシュサーバからファイルサーバ2への退避を指示する。
フレンド対応部46は、他のスレーブメモリキャッシュサーバのフレンド対応部46と連携してメモリキャッシュの複製に関する処理を行う。具体的には、フレンド対応部46は、マスター対応部45の割当指示に基づいて、他のスレーブメモリキャッシュサーバにメモリキャッシュの複製を作成する。
フレンド対応部46は、他のスレーブメモリキャッシュサーバにメモリキャッシュの複製を作成する際に、MPIの集団通信インタフェース(MPI_BCAST)を利用して、複数の他のスレーブメモリキャッシュサーバに対して、同時にRDMA転送を行う。また、フレンド対応部46は、RDMA転送の通信完了を確認する際に、CPU10aを利用したメモリ内容のロックはしない。フレンド対応部46は、MPIのREDUCEインタフェース(MPI_REDUCE)の排他的論理和(EXOR)の演算を利用して、他のスレーブメモリキャッシュサーバとの間でメモリ内容の一致を確認する。
また、フレンド対応部46は、他のスレーブメモリキャッシュサーバのフレンド対応部46の指示に基づいてメモリキャッシュを割り当てる。
また、フレンド対応部46は、マスター対応部45の解放指示に基づいて、他のスレーブメモリキャッシュサーバのフレンド対応部46へメモリキャッシュの解放を指示する。また、フレンド対応部46は、他のスレーブメモリキャッシュサーバのフレンド対応部46からの指示に基づいて、メモリキャッシュの解放を行う。
また、フレンド対応部46は、マスター対応部45の移動指示に基づいて、移動元のノード10から移動先のノード10へ全てのメモリキャッシュの内容を複製する。複製を作成する際に、フレンド対応部46は、MPIの集団通信インタフェース(MPI_BCAST)を利用して、複数の移動先のノード10に対して、RDMA転送を行う。また、フレンド対応部46は、RDMA転送の通信完了を確認する際に、CPU10aを利用したメモリ内容のロックはしない。フレンド対応部46は、MPIのREDUCEインタフェース(MPI_REDUCE)の排他的論理和(EXOR)の演算を利用して、移動先のノード10との間でメモリ内容の一致を確認する。
また、フレンド対応部46は、マスター対応部45の退避指示に基づいて、他のスレーブメモリキャッシュサーバのフレンド対応部46へ全てのメモリキャッシュの解放を指示する。
クライアント1では、OS11が動作し、OS11には、ファイルの管理を行うファイル管理部11aと、他のノード10と通信を行うリモートドライバ11bを有する。ファイル管理部11aは、記憶部11cを有する。
記憶部11cは、リモートメモリ仮想ディスク11dを有する。リモートメモリ仮想ディスク11dはファイルキャッシュを記憶する領域である。また、記憶部11cは、リモートキャッシュ管理表11eとCPUメモリ位置情報11fを記憶する。リモートキャッシュ管理表11eのデータ構造は、リモートキャッシュ管理表30cのデータ構造と同じである。CPUメモリ位置情報11fのデータ構造は、CPUメモリ位置情報30bのデータ構造と同じである。記憶部11cは、図2に示したメインメモリ10bに対応する。
ファイルサーバ2では、OS21が動作し、OS21には、ファイルの管理を行うファイル管理部21aと、他のノード10と通信を行うリモートドライバ21bを有する。ファイル管理部21aは、記憶部21cと、受信部21gと、制御部21hとを有する。
記憶部21cは、リモートメモリ仮想ディスク21dを有する。リモートメモリ仮想ディスク21dはファイルキャッシュを記憶する領域である。また、記憶部21cは、リモートキャッシュ管理表21eとCPUメモリ位置情報21fを記憶する。リモートキャッシュ管理表21eのデータ構造は、リモートキャッシュ管理表30cのデータ構造と同じである。CPUメモリ位置情報21fのデータ構造は、CPUメモリ位置情報30bのデータ構造と同じである。記憶部21cは、図2に示したメインメモリ10bに対応する。
受信部21gは、データの送信要求をクライアント1から受信すると、リモートキャッシュ管理表21eを参照し、スレーブメモリキャッシュサーバにデータのサーバキャッシュ40dがあるか否かを判定する。
制御部21hは、受信部21gがスレーブメモリキャッシュサーバにサーバキャッシュ40dあると判定すると、スレーブメモリキャッシュサーバにサーバキャッシュ40dのデータをクライアント1に送信するように指示する。
次に、マスターメモリキャッシュサーバ3のキャッシュ管理部31によるスレーブ管理表30の処理のフローについて説明する。図9は、キャッシュ管理部31によるスレーブ管理表30aの処理のフローを示すフローチャートである。図9に示すように、キャッシュ管理部31は、ジョブスケジューラ6から資源割当マップ61を受信する(ステップS1)と、スレーブ管理表30aの内容を確認する(ステップS2)。
そして、キャッシュ管理部31は、スレーブ管理表30aにスレーブメモリキャッシュサーバが登録されているか否かを判定し(ステップS3)、登録されていない場合には、ステップS5へ進む。一方、登録されている場合には、キャッシュ管理部31は、登録されているノード10は資源割当マップ61でジョブが割り当てられているか否かを判定し(ステップS4)、ジョブが割り当てられていない場合には、ステップS1に戻る。
一方、ジョブが割り当てられている場合には、キャッシュ管理部31は、スレーブメモリキャッシュサーバの移動先の空きノード10を探すために、空きノード10を検索する空きノード検索処理を行う(ステップS5)。そして、キャッシュ管理部31は、空きノード10があるか否かを判定し(ステップS6)、空きノード10がある場合には、空きノード10からスレーブメモリキャッシュサーバを選択し、スレーブ管理表30aに登録する(ステップS7)。
そして、キャッシュ管理部31は、ジョブが割り当てられたノード10から空きノード10へのスレーブメモリキャッシュサーバの移動をスレーブ管理部33へ指示する(ステップS8)。
一方、空きノード10がない場合には、キャッシュ管理部31は、ジョブが割り当てられたノード10からファイルサーバ2へのスレーブメモリキャッシュサーバの退避をスレーブ管理部33へ指示する(ステップS9)。
図10は、空きノード検索処理のフローを示すフローチャートである。図10に示すように、キャッシュ管理部31は、空きノード10はあるか否かを判定し(ステップS11)、空きノード10がない場合には、処理を終了する。
一方、空きノード10がある場合には、キャッシュ管理部31は、開始時間と終了時間の間でジョブから空きノード10へのホップ数をチェックする(ステップS12)。そして、キャッシュ管理部31は、ジョブから空きノード10へのホップ数は1か否かを判定し(ステップS13)、1である場合には、空きノード10を1個選択する(ステップS14)。
一方、ジョブから空きノード10へのホップ数が1でない場合には、キャッシュ管理部31は、ジョブから空きノード10へのホップ数は2か否かを判定し(ステップS15)、2である場合には、空きノード10を1個選択する(ステップS16)。
一方、ジョブから空きノード10へのホップ数が2でない場合には、キャッシュ管理部31は、ジョブから空きノード10へのホップ数は3か否かを判定し(ステップS17)、3である場合には、空きノード10を1個選択する(ステップS18)。
一方、ジョブから空きノード10へのホップ数が3でない場合には、キャッシュ管理部31は、ジョブから空きノード10へのホップ数が4以上のため、空きノード10を選択しない(ステップS19)。
このように、キャッシュ管理部31は、スレーブメモリキャッシュサーバにジョブが割り当てられると、空きノード10へのスレーブメモリキャッシュサーバの移動をスレーブ管理部33へ指示するので、ジョブの実行への悪影響をなくすことができる。
次に、クライアント1によるファイル管理処理のフローについて説明する。図11は、クライアント1によるファイル管理処理のフローを示すフローチャートである。図11に示すように、クライアント1は、リモートドライバ11bでマスターメモリキャッシュサーバ3にクライアントキャッシュ40cの割当又は解放を要求する(ステップS21)。
そして、クライアント1は、マスターメモリキャッシュサーバ3からの応答を待ち、マスターメモリキャッシュサーバ3から応答を受信する(ステップS22)。そして、クライアント1は、クライアントキャッシュ40cの割当を要求した場合には、リモートドライバ11bでスレーブメモリキャッシュサーバのクライアント対応部42へクライアントキャッシュ40cの書き込み又は読み出しを依頼する(ステップS23)。
このように、クライアント1は、マスターメモリキャッシュサーバ3にクライアントキャッシュ40cの割当又は解放を要求することで、クライアントキャッシュ40cを利用することができる。
次に、ファイルサーバ2によるファイル管理処理のフローについて説明する。図12は、ファイルサーバ2によるファイル管理処理のフローを示すフローチャートである。図12に示すように、ファイルサーバ2は、リモートドライバ21bでマスターメモリキャッシュサーバ3にサーバキャッシュ40dの割当又は解放を要求する(ステップS26)。
そして、ファイルサーバ2は、マスターメモリキャッシュサーバ3からの応答を待ち、マスターメモリキャッシュサーバ3から応答を受信する(ステップS27)。そして、ファイルサーバ2は、サーバキャッシュ40dの割当を要求した場合には、リモートドライバ21bでスレーブメモリキャッシュサーバのサーバ対応部43へサーバキャッシュ40dの書き込み又は読み出しを依頼する(ステップS28)。
このように、ファイルサーバ2は、マスターメモリキャッシュサーバ3にサーバキャッシュ40dの割当又は解放を要求することで、サーバキャッシュ40dを利用することができる。
次に、マスターメモリキャッシュサーバ3のキャッシュ管理部31によるクライアントキャッシュ管理処理のフローについて説明する。図13は、キャッシュ管理部31によるクライアントキャッシュ管理処理のフローを示すフローチャートである。
図13に示すように、キャッシュ管理部31は、クライアントキャッシュ40cの割当要求又は解放要求を受信する(ステップS31)。そして、キャッシュ管理部31は、スレーブ管理部33へスレーブメモリキャッシュサーバへのクライアントキャッシュ40cの割当又は解放を要求する(ステップS32)。
そして、キャッシュ管理部31は、スレーブ管理表30a及びリモートキャッシュ管理表21eを更新し(ステップS33)、クライアント1のリモートドライバ11bへ割当又は解放を応答する(ステップS34)。そして、キャッシュ管理部31は、バッキングストア管理部34へバッキングストア管理表2bの更新を依頼する(ステップS35)。
このように、キャッシュ管理部31は、スレーブ管理部33を介してスレーブメモリキャッシュサーバへクライアントキャッシュ40cの割当又は解放を要求することで、クライアントキャッシュ40cの割当又は解放を行うことができる。
次に、バッキングストア管理部34による処理のフローについて説明する。図14は、バッキングストア管理部34による処理のフローを示すフローチャートである。図14に示すように、バッキングストア管理部34は、ファイルサーバ2のバッキングストア管理DBへアクセスしてバッキングストア管理表2bを更新する(ステップS36)。
このように、バッキングストア管理部34がファイルサーバ2のバッキングストア管理DBへアクセスしてバッキングストア管理表2bを更新することで、ファイルサーバ2はバッキングストアを確実に行うことができる。
次に、スレーブ管理部33によるスレーブメモリキャッシュサーバへのメモリキャッシュ操作指示処理のフローについて説明する。図15は、スレーブ管理部33によるスレーブメモリキャッシュサーバへのメモリキャッシュ操作指示処理のフローを示すフローチャートである。なお、スレーブ管理部33は、キャッシュ管理部31から、図13に示したステップS32の処理において割当又は解放を要求され、図9に示したステップS8の処理において移動を指示され、図9に示したステップS9の処理において退避を指示される。
図15に示すように、スレーブ管理部33は、キャッシュ管理部31からの要求が割当か否かを判定し(ステップS41)、割当である場合には、スレーブメモリキャッシュサーバのマスター対応部45へメモリキャッシュの割当を指示する(ステップS42)。
一方、キャッシュ管理部31からの要求が割当でない場合には、スレーブ管理部33は、キャッシュ管理部31からの要求が解放か否かを判定する(ステップS43)。そして、キャッシュ管理部31からの要求が解放である場合には、スレーブ管理部33は、スレーブメモリキャッシュサーバのマスター対応部45へメモリキャッシュの解放を指示する(ステップS44)。
一方、キャッシュ管理部31からの要求が解放でない場合には、スレーブ管理部33は、キャッシュ管理部31からの要求が移動か否かを判定する(ステップS45)。そして、キャッシュ管理部31からの要求が移動である場合には、スレーブ管理部33は、スレーブメモリキャッシュサーバのマスター対応部45へ、指定された2つのノード10間でのメモリキャッシュの移動を指示する(ステップS46)。
一方、キャッシュ管理部31からの要求が移動でない場合には、スレーブ管理部33は、キャッシュ管理部31からの要求が退避か否かを判定し(ステップS47)、退避でない場合には、処理を終了する。一方、キャッシュ管理部31からの要求が退避である場合には、スレーブ管理部33は、スレーブメモリキャッシュサーバのマスター対応部45へ、指定されたノード10からファイルサーバ2へのメモリキャッシュの退避を指示する(ステップS48)。
このように、スレーブ管理部33がキャッシュ管理部31からの要求に基づいてメモリキャッシュの操作をスレーブメモリキャッシュサーバのマスター対応部45へ指示することで、マスターメモリキャッシュサーバ3はメモリキャッシュの操作を行うことができる。
次に、スレーブメモリキャッシュサーバのマスター対応部45による処理のフローについて説明する。図16は、マスター対応部45による処理のフローを示すフローチャートである。
図16に示すように、マスター対応部45は、スレーブ管理部33からの指示が割当か否かを判定する(ステップS51)。その結果、割当である場合には、マスター対応部45は、メモリキャッシュを割り当て、ファイルサーバ2からスレーブメモリキャッシュサーバ上のメモリキャッシュへのファイル読み出しをバッキングストアアクセス部44へ指示する(ステップS52)。そして、マスター対応部45は、メモリキャッシュの内容を他のスレーブメモリキャッシュサーバへ反映するようにフレンド対応部46へ指示する(ステップS53)。
一方、スレーブ管理部33からの指示が割当でない場合には、マスター対応部45は、スレーブ管理部33からの指示が解放か否かを判定する(ステップS54)。そして、指示が解放である場合には、マスター対応部45は、スレーブメモリキャッシュサーバ上のメモリキャッシュからファイルサーバ2のメモリキャッシュへのファイル書き出しをバッキングストアアクセス部44へ指示する(ステップS55)。そして、書き出しが完了したら、マスター対応部45は、メモリキャッシュを解放し、メモリキャッシュの解放指示を他のスレーブメモリキャッシュサーバへ行うようフレンド対応部46へ指示する(ステップS56)。
一方、スレーブ管理部33からの指示が解放でない場合には、マスター対応部45は、スレーブ管理部33からの指示が移動か否かを判定する(ステップS57)。そして、スレーブ管理部33からの指示が移動である場合には、マスター対応部45は、指定された2つのノード10間でのメモリキャッシュの移動をフレンド対応部46へ指示する(ステップS58)。
一方、スレーブ管理部33からの指示が移動でない場合には、マスター対応部45は、スレーブ管理部33からの指示が退避か否かを判定し(ステップS59)、退避でない場合には、処理を終了する。一方、スレーブ管理部33からの指示が退避である場合には、マスター対応部45は、スレーブメモリキャッシュサーバの全てのメモリキャッシュからファイルサーバ2へのファイルの書き出しをバッキングストアアクセス部44へ指示する(ステップS60)。そして、マスター対応部45は、書き出しが完了したら、全てのメモリキャッシュを解放し、他のスレーブメモリキャッシュサーバへ全てのメモリキャッシュの解放指示を行うようにフレンド対応部46へ指示する(ステップS61)。
このように、マスター対応部45がスレーブ管理部33からの指示に基づいてメモリキャッシュの操作を行うことで、マスターメモリキャッシュサーバ3はメモリキャッシュの操作を行うことができる。
次に、フレンド対応部46による処理のフローについて説明する。図17は、フレンド対応部46による処理のフローを示すフローチャートである。図17に示すように、フレンド対応部46は、マスター対応部45からの指示が割当か否かを判定する(ステップS71)。
その結果、割当である場合には、フレンド対応部46は、他のスレーブメモリキャッシュサーバのフレンド対応部46へメモリキャッシュの割当を指示する(ステップS72)。そして、フレンド対応部46は、MPI_BCASTとMPI_REDUCE(EXOR)インタフェースを用いてインターコネクト部10cにメモリキャッシュの内容をコピーして内容の一致を確認するよう指示する(ステップS73)。
一方、マスター対応部45からの指示が割当でない場合には、フレンド対応部46は、マスター対応部45からの指示が解放か否かを判定する(ステップS74)。そして、指示が解放である場合には、フレンド対応部46は、他のスレーブメモリキャッシュサーバのフレンド対応部46へメモリキャッシュの解放を指示する(ステップS75)。
一方、マスター対応部45からの指示が解放でない場合には、フレンド対応部46は、マスター対応部45からの指示が移動か否かを判定する(ステップS76)。そして、マスター対応部45からの指示が移動である場合には、フレンド対応部46は、以下の処理を行う。すなわち、フレンド対応部46は、指定された2つのノード10間で全てのメモリキャッシュの内容をコピーして内容の一致を確認するようにMPI_BCASTとMPI_REDUCE(EXOR)インタフェースを用いてインターコネクト部10cに指示する(ステップS77)。
一方、マスター対応部45からの指示が移動でない場合には、フレンド対応部46は、マスター対応部45からの指示が退避か否かを判定し(ステップS78)、退避でない場合には、処理を終了する。一方、マスター対応部45からの指示が退避である場合には、フレンド対応部46は、他のスレーブメモリキャッシュサーバのフレンド対応部46へ全てのメモリキャッシュの解放を指示する(ステップS79)。
このように、フレンド対応部46がマスター対応部45からの指示に基づいて他のスレーブメモリキャッシュサーバのメモリキャッシュの操作を行うことで、スレーブメモリキャッシュサーバはメモリキャッシュの冗長性及び負荷分散を実現することができる。
次に、マスターメモリキャッシュサーバ3の切替マスターデーモン32とスレーブメモリキャッシュサーバの切替サブデーモン41が連携してクライアントキャッシュ40cをサーバキャッシュ40dに切り替える切替処理のフローについて説明する。
図18は、切替マスターデーモン32による切替処理のフローを示すフローチャートである。図18に示すように、切替マスターデーモン32は、切替サブデーモン41からのクライアントキャッシュ使用済の通知を待ち、切替サブデーモン41からクライアントキャッシュ使用済の通知を受信する(ステップS81)。
そして、切替マスターデーモン32は、使用済となったクライアントキャッシュ40cをサーバキャッシュ40dとして管理できるようにリモートキャッシュ管理表11eを更新する(ステップS82)。そして、切替マスターデーモン32は、使用済となったクライアントキャッシュ40cをサーバキャッシュ40dに変更するように切替サブデーモン41に指示し(ステップS83)、ステップS81へ戻る。
図19は、切替サブデーモン41による切替処理のフローを示すフローチャートである。図19に示すように、切替サブデーモン41は、クライアントキャッシュ40c用の領域の使用状況を確認する(ステップS91)。そして、切替サブデーモン41は、使用済となったクライアントキャッシュ40cについて、クライアントキャッシュ使用済の通知を切替マスターデーモン32に送信する(ステップS92)。
そして、切替サブデーモン41は、切替マスターデーモン32からの指示を待ち、切替マスターデーモン32からの指示を受信する(ステップS93)。そして、切替サブデーモン41は、クライアントキャッシュ40cは主スレーブメモリキャッシュサーバ4で使用されているものか否かを判定する(ステップS94)。その結果、主スレーブメモリキャッシュサーバ4で使用されているものでない場合は、切替サブデーモン41は、クライアントキャッシュ40cの領域を解放し(ステップS95)、ステップS91へ戻る。
一方、クライアントキャッシュ40cが主スレーブメモリキャッシュサーバ4で使用されているものである場合には、切替サブデーモン41は、MPI_BCASTとMPI_REDUCE(EXOR)インタフェースを用いて以下の処理を実行する。すなわち、切替サブデーモン41は、クライアントキャッシュ40cの内容をサーバキャッシュ40d及びファイルサーバ2のファイルキャッシュにコピーして内容の一致を確認するようインターコネクト部10cに指示する(ステップS96)。そして、切替サブデーモン41は、使用済となったクライアントキャッシュ40cを書き込み内容は保持した状態でサーバキャッシュ40dに用途を変更し(ステップS97)、ステップS91へ戻る。
このように、切替マスターデーモン32と切替サブデーモン41が連携してクライアントキャッシュ40cをサーバキャッシュ40dに切り替えることで、ディスク装置2aに対する無駄な書き込みと読み出しをなくすことができる。
上述してきたように、実施例では、スレーブメモリキャッシュサーバが、クライアントキャッシュ40cをメインメモリ10bに記憶する。そして、スレーブメモリキャッシュサーバは、クライアントキャッシュ40cが使用済になると、クライアントキャッシュ40cの内容をファイルサーバ2のファイルキャッシュにコピーする。また、ファイルサーバ2は、クライアントキャッシュ40cされるデータをディスク装置2aに記憶し、スレーブ管理表30a及びリモートキャッシュ管理表21eを記憶部21cに記憶する。
そして、マスターメモリキャッシュサーバ3は、クライアントキャッシュ40cが使用済になったことを切替サブデーモン41から通知されると、使用済のクライアントキャッシュ40cをサーバキャッシュ40dとして管理できるようにリモートキャッシュ管理表11eを更新する。また、マスターメモリキャッシュサーバ3は、更新したリモートキャッシュ管理表11eをファイルサーバ2に送信する。そして、切替マスターデーモン32は、使用済のクライアントキャッシュ40cをサーバキャッシュ40dに変更するように切替サブデーモン41に指示する。
そして、ファイルサーバ2は、サーバキャッシュ40dに変更されたデータの送信要求をクライアント1から受信すると、リモートキャッシュ管理表11eを参照し、スレーブメモリキャッシュサーバにデータがあるか否かを判定する。そして、スレーブメモリキャッシュサーバにデータがあると判定すると、ファイルサーバ2は、スレーブメモリキャッシュサーバにサーバキャッシュ40dに変更されたデータをクライアント1に送信するように指示する。
したがって、並列処理装置7は、前のジョブのクライアントキャッシュ40cを次のジョブのサーバキャッシュ40dとして利用することができる。このため、クライアントキャッシュ40cのディスク装置2aへの書き込みとサーバキャッシュ40dのディスク装置2aからの読み出しを不要とすることができる。なお、ファイルサーバ2のファイルキャッシュにコピーされたデータは、別途、ファイルサーバ2により、ディスク装置2aに書き込まれる。
また、実施例では、スレーブメモリキャッシュサーバは、クライアントキャッシュ40cの内容をファイルサーバ2に送信する際に、MPIの集団通信インタフェース(MPI_BCAST)を利用して、ファイルサーバ2にRDMA転送を行う。したがって、スレーブメモリキャッシュサーバは、クライアントキャッシュ40cの内容をファイルサーバ2に送信する際に、CPU10aの負荷の増加を防ぐことができる。
また、実施例では、スレーブメモリキャッシュサーバは、RDMA転送の通信完了を確認する際に、CPU10aを利用したメモリ内容のロックはしない。スレーブメモリキャッシュサーバは、MPIのREDUCEインタフェース(MPI_REDUCE)の排他的論理和(EXOR)の演算を利用して、ファイルサーバ2との間でメモリ内容の一致を確認する。したがって、スレーブメモリキャッシュサーバは、CPU10aに悪影響を与えることなく、ファイルサーバ2との間でメモリ内容の一致を確認することができる。
なお、実施例では、クライアントキャッシュ40cが使用済になるとクライアントキャッシュ40cをサーバキャッシュ40dに切り替える場合について説明した。しかし、クライアントキャッシュ40cとして使用できる領域の使用状態に基づいてサーバキャッシュ40dへの切替を制御することもできる。そこで、クライアントキャッシュ40cとして使用できる領域の使用状態に基づいてサーバキャッシュ40dへの切替を制御する切替マスターデーモン32及び切替サブデーモン41について説明する。
図20は、クライアントキャッシュ40cとして使用できる領域の使用状態に基づいてサーバキャッシュ40dへの切替を制御する切替マスターデーモン32の切替処理のフローを示すフローチャートである。図20に示すように、切替マスターデーモン32は、切替サブデーモン41からのクライアントキャッシュ用領域の使用済の通知を待ち、切替サブデーモン41からクライアントキャッシュ用領域の使用済の通知を受信する(ステップS101)。
そして、切替マスターデーモン32は、クライアントキャッシュ40c用に割り当てた各ノード10の状態を確認する(ステップS102)。そして、切替マスターデーモン32は、クライアントキャッシュ40c用に割り当てたノード10の内、80%以上のノード10がクライアントキャッシュ40c用の空き領域が少ない状態であるか否かを判定する(ステップS103)。
ここで、クライアントキャッシュ40c用の空き領域が少ない状態であるとは、例えば、クライアントキャッシュ40c用の領域の80%以上が使用されている状態である。また、80%以上のノード10がクライアントキャッシュ40c用の空き領域が少ない状態であるか否かを判定する場合の80%は一例であり、他の値でもよい。
そして、80%以上のノード10がクライアントキャッシュ40c用の空き領域が少ないという状態でない場合には、切替マスターデーモン32は、クライアントキャッシュ40c用に領域を割り当てるように、切替サブデーモン41に指示する(ステップS104)。
一方、80%以上のノード10がクライアントキャッシュ40c用の空き領域が少ない状態である場合には、切替マスターデーモン32は、クライアントキャッシュ40cをサーバキャッシュ40dとして管理できるようにリモートキャッシュ管理表11eを更新する(ステップS105)。そして、切替マスターデーモン32は、クライアントキャッシュ40cからサーバキャッシュ40dに変更するように切替サブデーモン41に指示する(ステップS106)。
その後、切替マスターデーモン32は、切替サブデーモン41からのクライアントキャッシュ用領域の割当可能通知を待ち、切替サブデーモン41からクライアントキャッシュ用領域の割当可能通知を受信する(ステップS107)。そして、切替マスターデーモン32は、クライアントキャッシュ40c用に割り当てた各ノード10の状態を確認する(ステップS108)。
そして、切替マスターデーモン32は、クライアントキャッシュ40c用に割り当てたノード10の内、60%未満のノード10がクライアントキャッシュ40c用の空き領域が少ない状態であるか否かを判定する(ステップS109)。ここで、60%は一例であり、他の値でもよい。
そして、切替マスターデーモン32は、60%未満のノード10がクライアントキャッシュ40c用の空き領域が少ない状態である場合には、以下の処理を行う。すなわち、切替マスターデーモン32は、クライアントキャッシュ40cをサーバキャッシュ40dに変更する処理を停止するように切替サブデーモン41に指示する(ステップS110)。そして、切替マスターデーモン32は、ステップS101に戻る。
一方、60%未満のノード10がクライアントキャッシュ40c用の空き領域が少ないという状態でない場合には、切替マスターデーモン32は、クライアントキャッシュ40cをサーバキャッシュ40dに変更するように切替サブデーモン41に指示する(ステップS111)。そして、切替マスターデーモン32は、ステップS101に戻る。
図21は、クライアントキャッシュ40cとして使用できる領域の使用状態に基づいてサーバキャッシュ40d切替を制御する切替サブデーモン41の切替処理のフローを示すフローチャートである。図21に示すように、切替サブデーモン41は、クライアントキャッシュ40c用の領域の使用状況を確認する(ステップS121)。
そして、切替サブデーモン41は、クライアントキャッシュ40c用の空き領域が少ない状態であるか否かを判定する(ステップS122)。ここで、クライアントキャッシュ40c用の空き領域が少ない状態であるとは、例えば、クライアントキャッシュ40c用の領域の80%以上が使用されている状態である。そして、クライアントキャッシュ40c用の空き領域が少ないという状態でない場合には、切替サブデーモン41は、クライアントキャッシュ40c用に領域の割当が可能であるとし(ステップS123)、ステップS121に戻る。
一方、クライアントキャッシュ40c用の空き領域が少ない状態である場合には、切替サブデーモン41は、クライアントキャッシュ40c用の領域の使用済を切替マスターデーモン32に通知する(ステップS124)。そして、切替サブデーモン41は、切替マスターデーモン32からの指示を待ち、切替マスターデーモン32からの指示を受信する(ステップS125)。
そして、切替サブデーモン41は、クライアントキャッシュ40cの状態を確認し(ステップS126)、クライアントキャッシュ40cはもっとも最近まで書き込まれていたものか否かを判定する(ステップS127)。そして、クライアントキャッシュ40cがもっとも最近まで書き込まれていたものである場合には、切替サブデーモン41は、使用済となったクライアントキャッシュ40cをクライアントキャッシュ40cとして残し(ステップS128)、ステップS121に戻る。
一方、クライアントキャッシュ40cがもっとも最近まで書き込まれていたものでない場合には、切替サブデーモン41は、クライアントキャッシュ40cは主スレーブメモリキャッシュサーバ4で使用されているものか否かを判定する(ステップS129)。その結果、主スレーブメモリキャッシュサーバ4で使用されているものでない場合は、切替サブデーモン41は、クライアントキャッシュ40cの領域を解放し(ステップS130)、ステップS133へ進む。
一方、クライアントキャッシュ40cが主スレーブメモリキャッシュサーバ4で使用されているものである場合には、切替サブデーモン41は、MPI_BCASTとMPI_REDUCE(EXOR)インタフェースを用いて以下の処理を実行する。すなわち、切替サブデーモン41は、インターコネクト部10cにクライアントキャッシュ40cの内容をサーバキャッシュ40d及びファイルサーバ2のファイルキャッシュにコピーして内容の一致を確認するよう指示する(ステップS131)。そして、切替サブデーモン41は、使用済となったクライアントキャッシュ40cを書き込み内容は保持した状態でサーバキャッシュ40dに用途を変更する(ステップS132)。
そして、切替サブデーモン41は、クライアントキャッシュ40c用の空き領域が十分ある状態であるか否かを判定する(ステップS133)。ここで、クライアントキャッシュ40c用の空き領域が十分ある状態とは、例えば、クライアントキャッシュ40c用の領域の60%未満が使用されている状態である。そして、クライアントキャッシュ40c用の空き領域が十分という状態でない場合には、切替サブデーモン41は、クライアントキャッシュ40cの領域を使用済のままとし(ステップS134)、ステップS121に戻る。
一方、クライアントキャッシュ40c用の空き領域が十分ある状態である場合には、切替サブデーモン41は、クライアントキャッシュ40c用の領域を割当可能な状態に戻す(ステップS135)。そして、切替サブデーモン41は、切替マスターデーモン32にクライアントキャッシュ40c用の領域を割当可能な状態に戻したことを通知する(ステップS136)。
そして、切替サブデーモン41は、切替マスターデーモン32からの指示を待ち、切替マスターデーモン32からの指示を受信すると(ステップS137)、指示に基づく状態にする(ステップS138)。ここで、指示に基づく状態には、クライアントキャッシュ40cからサーバキャッシュ40dに変更する状態又はクライアントキャッシュ40cからサーバキャッシュ40dへの変更を停止する状態である。
このように、クライアントキャッシュ40c用の空き領域の状態に基づいてクライアントキャッシュ40cからサーバキャッシュ40dへの切替を制御することで、クライアントキャッシュ40c用の空き領域の状態に適した切替を行うことができる。
1,9 クライアント
2,8 ファイルサーバ
2a ディスク装置
3 マスターメモリキャッシュサーバ
4 主スレーブメモリキャッシュサーバ
5 他スレーブメモリキャッシュサーバ
6 ジョブスケジューラ
7 並列処理装置
8a キャッシュサーバ
8c ネットワーク
9a キャッシュサーバ
10 ノード
10a CPU
10b メインメモリ
10c インターコネクト部
11 OS
11a ファイル管理部
11b リモートドライバ
11c 記憶部
11d メモリ仮想ディスク
11e リモートキャッシュ管理表
11f CPUメモリ位置情報
21 OS
21a,81 ファイル管理部
21b リモートドライバ
21c 記憶部
21d リモートメモリ仮想ディスク
21e リモートキャッシュ管理表
21f CPUメモリ位置情報
21g 受信部
21h 制御部
30 記憶部
30a スレーブ管理表
30b CPUメモリ位置情報
30c リモートキャッシュ管理表
31 キャッシュ管理部
32 切替マスターデーモン
33 スレーブ管理部
34 バッキングストア管理部
40 記憶部
40a リモートキャッシュ管理表
40b CPUメモリ位置情報
40c,93 クライアントキャッシュ
40d,82 サーバキャッシュ
41 切替サブデーモン
42 クライアント対応部
43 サーバ対応部
44 バッキングストアアクセス部
45 マスター対応部
46 フレンド対応部
61 資源割当マップ
91 クライアントアプリケーション
92 ファイルキャッシュ

Claims (6)

  1. 複数のノードを有する並列処理装置において、
    第1ノードは、
    第1データを記憶する第1記憶装置と、
    送信部と
    クライアントキャッシュとして記憶した前記第1データをサーバキャッシュに切り替える切替部と
    を有し、
    第2ノードは、
    前記第1記憶装置より低速な記憶装置であって前記第1データを記憶する第2記憶装置と、
    前記第1データを前記第1ノードが前記第1記憶装置に記憶中であることを示すデータ管理情報を記憶する管理情報記憶部と、
    第3ノードから前記第1データの送信要求を受信する受信部と、
    前記切替部が前記第1データをサーバキャッシュに切り替えた場合に、前記受信部が前記送信要求を受信すると、前記データ管理情報を参照し、前記第1データが前記第1ノードの前記第1記憶装置に記憶されていた場合は、前記第1ノードに前記第1データを前記第3ノードに送信するように指示を行う制御部と
    を有することを特徴とする並列処理装置。
  2. 前記送信部は、MPIの集団通信インタフェースを利用してRDMA転送により前記第1データを前記第2ノードに送信することを特徴とする請求項に記載の並列処理装置。
  3. 前記送信部は、MPIのREDUCEインタフェースの排他的論理和の演算を利用して前記第1データの前記第1ノードと前記第2ノードとの間の一致を確認することを特徴とする請求項に記載の並列処理装置。
  4. 前記切替部は、前記第1データの前記第1ノードと前記第2ノードとの間の一致が確認されると、前記第1データをサーバキャッシュに切り替えることを特徴とする請求項に記載の並列処理装置。
  5. 前記切替部は、前記第1ノードに割り当てられたクライアントキャッシュ用の空き領域の割合が所定の閾値より小さくなった場合に、前記第1データをサーバキャッシュに切り替えることを特徴とする請求項に記載の並列処理装置。
  6. 第1ノードは、第1データを第1記憶装置に記憶し、
    前記第1ノードは、クライアントキャッシュとして記憶した前記第1データをサーバキャッシュに切り替え、
    第2ノードは、前記第1データを前記第1記憶装置より低速な第2記憶装置に記憶し、
    前記第2ノードは、前記第1データを前記第1ノードが前記第1記憶装置に記憶中であることを示すデータ管理情報を記録し、
    前記第2ノードは、第3ノードから前記第1データの送信要求を受信し、
    前記第2ノードは、前記第1ノードが前記第1データをサーバキャッシュに切り替えた場合に、前記データ管理情報を参照し、前記第1データが前記第1ノードの前記第1記憶装置に記憶されていた場合は、前記第1ノードに前記第1データを前記第3ノードに送信するように指示を行う
    ことを特徴とするメモリキャッシュ制御方法。
JP2016121212A 2016-06-17 2016-06-17 並列処理装置及びメモリキャッシュ制御方法 Expired - Fee Related JP6696315B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016121212A JP6696315B2 (ja) 2016-06-17 2016-06-17 並列処理装置及びメモリキャッシュ制御方法
US15/597,550 US20170366612A1 (en) 2016-06-17 2017-05-17 Parallel processing device and memory cache control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016121212A JP6696315B2 (ja) 2016-06-17 2016-06-17 並列処理装置及びメモリキャッシュ制御方法

Publications (2)

Publication Number Publication Date
JP2017224253A JP2017224253A (ja) 2017-12-21
JP6696315B2 true JP6696315B2 (ja) 2020-05-20

Family

ID=60660540

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016121212A Expired - Fee Related JP6696315B2 (ja) 2016-06-17 2016-06-17 並列処理装置及びメモリキャッシュ制御方法

Country Status (2)

Country Link
US (1) US20170366612A1 (ja)
JP (1) JP6696315B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108920092B (zh) * 2018-05-07 2021-07-20 北京奇艺世纪科技有限公司 内存数据的数据操作方法、装置及电子设备
KR102126896B1 (ko) * 2018-10-25 2020-06-25 상명대학교산학협력단 메모리 중심 컴퓨터를 위한 mpi 프로그램 변환 방법 및 장치
US10963323B2 (en) 2018-10-25 2021-03-30 Sangyung University Industry-Academy Cooperation Foundation Method and apparatus for transformation of MPI programs for memory centric computers
CN111198662B (zh) * 2020-01-03 2023-07-14 腾讯云计算(长沙)有限责任公司 一种数据存储方法、装置和计算机可读存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3831587B2 (ja) * 2000-07-31 2006-10-11 日本電信電話株式会社 キャッシング手段を用いた配信システム
WO2004027625A1 (ja) * 2002-09-20 2004-04-01 Fujitsu Limited ストレージ制御装置、ストレージ制御プログラムおよびストレージ制御方法
US20050166086A1 (en) * 2002-09-20 2005-07-28 Fujitsu Limited Storage control apparatus, storage control method, and computer product
US20110078410A1 (en) * 2005-08-01 2011-03-31 International Business Machines Corporation Efficient pipelining of rdma for communications
US8065503B2 (en) * 2006-12-15 2011-11-22 International Business Machines Corporation Iteratively processing data segments by concurrently transmitting to, processing by, and receiving from partnered process
WO2009032711A1 (en) * 2007-08-29 2009-03-12 Nirvanix, Inc. Policy-based file management for a storage delivery network
US8799367B1 (en) * 2009-10-30 2014-08-05 Netapp, Inc. Using logical block addresses with generation numbers as data fingerprints for network deduplication
JP5491932B2 (ja) * 2010-03-30 2014-05-14 株式会社インテック ネットワーク・ストレージ・システム、方法、クライアント装置、キャッシュ装置、管理サーバ、及びプログラム
US8621446B2 (en) * 2010-04-29 2013-12-31 International Business Machines Corporation Compiling software for a hierarchical distributed processing system
JP5900088B2 (ja) * 2012-03-27 2016-04-06 富士通株式会社 並列計算機、並列計算機の制御方法及び制御プログラム
US8869168B2 (en) * 2012-05-14 2014-10-21 International Business Machines Corporation Scheduling synchronization in association with collective operations in a parallel computer
US9772793B2 (en) * 2013-09-20 2017-09-26 Oracle International Corporation Data block movement offload to storage systems
US9311230B2 (en) * 2013-04-23 2016-04-12 Globalfoundries Inc. Local direct storage class memory access
US9851919B2 (en) * 2014-12-31 2017-12-26 Netapp, Inc. Method for data placement in a memory based file system

Also Published As

Publication number Publication date
JP2017224253A (ja) 2017-12-21
US20170366612A1 (en) 2017-12-21

Similar Documents

Publication Publication Date Title
JP6696315B2 (ja) 並列処理装置及びメモリキャッシュ制御方法
US9218299B2 (en) Recovering data segment contents in a distributed shared memory
US20050234867A1 (en) Method and apparatus for managing file, computer product, and file system
EP3580649B1 (en) Optimizing content storage through stubbing
JP2021012476A (ja) 分散ストレージシステム、分散ストレージシステムの制御方法及び記憶媒体
EP1465072A2 (en) Computer system with distributed file system for managing distributed files
JP2007279898A (ja) ストレージシステム及び同システムに適用されるアクセス処理方法
KR20000048772A (ko) 중간 데이타 기억장치 시스템을 사용한 파일 전송 유틸리티
EP2144167B1 (en) Remote file system, terminal device, and server device
KR100423225B1 (ko) 클러스터링된 컴퓨터 시스템을 위한 통합 프로토콜
WO2006020045A1 (en) Role-based node specialization within a distributed processing system
WO2015118865A1 (ja) 情報処理装置、情報処理システム及びデータアクセス方法
US11609716B2 (en) Implementing coherency and page cache support for a storage system spread across multiple data centers
CN111124255A (zh) 数据存储方法、电子设备和计算机程序产品
JP6406027B2 (ja) 情報処理システム、情報処理装置、メモリアクセス制御方法
JP2004302556A (ja) 複数の計算機システム間でのデータ共有方法およびディスク制御装置
CN107577733B (zh) 一种数据复制的加速方法及系统
JP5182162B2 (ja) 計算機システム及びi/o制御方法
JP2006164218A (ja) ストレージシステム及びそのキャッシュ制御方法
EP2090976A2 (en) Method of substituting process in storage system
JP7435735B2 (ja) 分散処理システム、分散処理システムの制御方法、及び、分散処理システムの制御装置
CN113568749B (zh) 基于Elasticsearch集群的shard分配方法
JP2005352833A (ja) 共有排他制御方法
JP4343056B2 (ja) ストレージ装置割当て方法ならびにそのための管理サーバおよびプログラム
CN113434290A (zh) 基于raft协议的数据处理方法和设备,及计算机存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190311

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200311

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200324

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200406

R150 Certificate of patent or registration of utility model

Ref document number: 6696315

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees