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

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

Info

Publication number
JP2016224855A
JP2016224855A JP2015113164A JP2015113164A JP2016224855A JP 2016224855 A JP2016224855 A JP 2016224855A JP 2015113164 A JP2015113164 A JP 2015113164A JP 2015113164 A JP2015113164 A JP 2015113164A JP 2016224855 A JP2016224855 A JP 2016224855A
Authority
JP
Japan
Prior art keywords
memory
job
node
index value
value
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.)
Granted
Application number
JP2015113164A
Other languages
English (en)
Other versions
JP6459784B2 (ja
Inventor
温 二宮
Atsushi Ninomiya
温 二宮
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 JP2015113164A priority Critical patent/JP6459784B2/ja
Priority to US15/143,654 priority patent/US10019164B2/en
Priority to EP16170797.1A priority patent/EP3101548A1/en
Publication of JP2016224855A publication Critical patent/JP2016224855A/ja
Application granted granted Critical
Publication of JP6459784B2 publication Critical patent/JP6459784B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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
    • 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/0815Cache consistency protocols
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】 メモリの再配置に伴うキャッシュメモリにおけるスラッシングを抑制する並列計算機、マイグレーションプログラム、及び、マイグレーション方法を提供する。【解決手段】 複数のメモリ領域を有するメモリ及びキャッシュメモリを、それぞれ有する第1、第2のノードと、第1のノードが実行中のジョブを第2のノードに移行して前記ジョブの実行を継続する際に、前記ジョブがアクセスするデータが記憶された前記第1のノードの第1の複数のメモリ領域のアドレスに対応する、前記キャッシュメモリのインデックス値の組を取得し、前記第2のノードが、前記インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、非使用状態の第2の複数のメモリ領域を有するか否かを判定し、前記非使用状態の第2の複数のメモリ領域を有する場合に、前記データを前記第2の複数のメモリ領域に移動する処理部と、を有する。【選択図】図12

Description

本発明は、並列計算機、マイグレーションプログラム、及び、マイグレーション方法に関する。
CPU(Central Processing Unit:CPU)コア及びメモリを、複数有する情報処理装置がある。このような情報処理装置のOS(Operating System:OS)やOS上で動作するソフトウェアは、実行中のジョブをマイグレーションする際に、ジョブに割り当てたハードウェア資源(CPUコア、メモリ)の再配置を行う。
ハードウェア資源の再配置を行うソフトウェア(以下、再配置プログラムと称する)は、実行中のジョブのプロセスを実行するCPUコアを変更することによって、CPUコアの再配置を行う。また、再配置プログラムは、実行中のジョブのプロセスがアクセスするデータが記憶されているメモリ領域を変更することによって、メモリの再配置を行う。
一方、情報処理装置のキャッシュメモリは、キャッシュラインと呼ばれる単位のデータを複数有するデータアレイと、インデックス値に応じて、対応するキャッシュラインの情報を有するタグアレイ(キャッシュタグともいう)とを有する。CPUコアは、インデックス値に基づいて、キャッシュタグを参照し、アクセス対象のメモリ領域のキャッシュミスヒット判定を行う。
また、キャッシュメモリには、アクセス対象のメモリ領域のアドレスに基づいて、メモリ領域のデータを記憶するキャッシュラインを定めるキャッシュメモリがある。このようなキャッシュメモリによると、CPUコアは、アクセス対象のメモリ領域のアドレスに基づいて、インデックス値を取得する。
キャッシュメモリに関する技術については、特許文献1〜4に記載される。
特開2009−87139号公報 特開2000−66899号公報 特開平8−77068号公報 特開平10−207850号公報
再配置プログラムが、実行中のジョブのプロセスがアクセスするデータが記憶されたメモリ領域を再配置した場合、アクセス対象のメモリ領域のアドレスが変化する。アドレスの変化に伴い、メモリ領域のデータを記憶するキャッシュラインが変化する場合がある。
実行中のジョブが複数のメモリ領域にアクセスする場合、アドレスの変化に伴い、複数のメモリ領域のデータを記憶するキャッシュラインが重複する場合がある。キャッシュラインの重複により、ジョブの実行中に、同一のキャッシュラインに対する書き換えが頻繁に発生し、キャッシュメモリのスラッシングが発生する場合がある。スラッシングの発生により、メモリアクセスの処理時間のレイテンシが増加し、ジョブの実行時間が長くなる。
1つの側面は、本発明は、メモリの再配置に伴うキャッシュメモリにおけるスラッシングの発生を抑制する並列計算機、マイグレーションプログラム、及び、マイグレーション方法を提供することを目的とする。
第1の側面によれば、複数のメモリ領域を有するメモリ及びキャッシュメモリを、それぞれ有する第1、第2のノードと、第1のノードが実行中のジョブを第2のノードに移行して前記ジョブの実行を継続する際に、前記ジョブがアクセスするデータが記憶された前記第1のノードの第1の複数のメモリ領域のアドレスに対応する、前記キャッシュメモリのインデックス値の組を取得し、前記第2のノードが、前記インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、非使用状態の第2の複数のメモリ領域を有するか否かを判定し、前記非使用状態の第2の複数のメモリ領域を有する場合に、前記データを前記第2の複数のメモリ領域に移動する処理部と、を有する。
第1の側面によれば、ジョブ実行時のメモリの再配置に伴う、キャッシュメモリにおけるスラッシングの発生を抑制する。
本実施の形態における情報処理装置の一例を説明する図である。 ジョブに対するジョブ資源の割り当てを模式的に説明する図である。 ジョブA〜ジョブEが要求するジョブ資源、及び、ジョブA〜ジョブEに指定されるメモリmmに関するNUMAポリシーを説明する表図である。 再配置を行わない場合の、ジョブ資源の割り当てを模式的に説明する図である。 再配置を行わない場合の、ジョブA〜ジョブEに対するメモリページmpの割り当て状態を時系列(タイミングt1〜t7)に示す表図である。 図5に示したタイミングt7の、ジョブC〜ジョブEのジョブ資源の割り当て状態を示す図である。 再配置を行う場合の、ジョブA〜ジョブEに対するメモリページmpの割り当て状態を時系列(タイミングt1〜t7)に示す表図である。 図7に示したタイミングt6の、ジョブC及びジョブDのジョブ資源の割り当て状態を示す図である。 図7に示したタイミングt7の、ジョブC〜ジョブEのジョブ資源の割り当て状態を示す図である。 本実施の形態のキャッシュメモリ103の構成の一例を示す図である。 メモリの再配置に伴う、スラッシングの発生を模式的に説明する図である。 第1の実施の形態の並列計算機の処理の概要を説明するフローチャート図である。 第1の実施の形態の並列計算機ndのハードウェア構成を示す図である。 図13に示した並列計算機ndのソフトウェアブロックを説明する図である。 図13、図14に示した、ジョブ使用メモリ情報122の一例を示す図である。 図13、図14に示す、メモリ再配置モジュール131の処理の詳細を説明するフローチャート図である。 図16のフローチャート図の工程S23に示した、条件1(k=0)を満たすインデックス値の組を説明する図である。 図16のフローチャート図の工程S23の処理を説明するフローチャート図である。 図16のフローチャート図の工程S25に示した、条件1(k≠0)を満たすインデックス値の組を説明する図である。 図16のフローチャート図の工程S25の処理を説明するフローチャート図である。 図16のフローチャート図の工程S27の処理を説明するフローチャート図である。 メモリ獲得ルーチン133の処理を説明するフローチャート図である。 第2の実施の形態の情報処理装置10の一例を説明する図である。 第2の実施の形態の並列計算機ndのハードウェア構成図である。 図24に示した、並列計算機ndのソフトウェアブロックを説明する図である。 図24、図25に示した、第2の実施の形態のジョブ使用メモリ情報122の一例を説明する図である。 図24、図25に示した、メモリ使用状態情報124の一例を説明する図である。 図24、図25に示す、メモリ再配置モジュール131の処理の詳細を説明するフローチャート図である。 図28の工程S81の処理の詳細を説明するフローチャート図である。 図28の工程S84の処理の詳細を説明するフローチャート図である。 図28の工程S86の処理の詳細を説明するフローチャート図である。 図28の工程S87の処理の詳細を説明するフローチャート図である。 図28の工程S88の処理の詳細を説明するフローチャート図である。 図28の工程S91の処理の詳細を説明するフローチャート図である。 評価値算出ルーチン134の処理の詳細を説明するフローチャート図である。
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
[情報処理装置]
図1は、本実施の形態における情報処理装置の一例を説明する図である。図1に例示する情報処理装置10は、NUMA(Non-Uniform Memory Access:NUMA)アーキテクチャを採用する情報処理装置10である。
図1に示す情報処理装置10は、複数のビルディングブロックnd1〜nd4を有する。以下、ビルディングブロックnd1〜nd4のそれぞれを、ノードと称する。複数のノードnd1〜nd4(ノードndともいう)は、グローバルクロスバースイッチやLAN(Local Area Network:LAN)等の高速のインターコネクト20にしたがって、相互に接続する。なお、情報処理装置10が有するノードndの数は、図1の例に限定されるものではない。
各ノードndは、複数のCPUコアcp1a〜cp4d(CPUコアcpともいう)、及び、メモリmm1〜mm4(メモリmmともいう)等を有する。各ノードndのハードウェア構成の詳細は、図13にしたがって後述する。図1は、説明を簡略化するため、各ノードndがCPUコアcp及びメモリmmを有する場合を例示する。なお、各ノードndが有するCPUコアcp及びメモリmmの数は、図1の例に限定されるものではない。また、図1に図示していないが、メモリmmのそれぞれは、複数のメモリ領域を有する。
各ノードnd(例えば、ノードnd1)は、当該ノードndが有するメモリ(ローカルメモリともいう)mm1、及び、他のノードnd(例えば、ノードnd2〜nd4)が有するメモリ(リモートメモリともいう)mm2〜mm4にアクセスする。つまり、各ノードndは、互いに、メモリmmを共有する。なお、あるノードnd(例えば、ノードnd1)によるリモートメモリmm2〜mm4に対するアクセスは、ローカルメモリmm1に対するアクセスに対して遅い。
図1に示す情報処理装置10は、複数のジョブを実行する。ジョブは、1つまたは複数のプロセスにより構成され、協働して1つの処理を行うプロセスグループである。また、ジョブは、例えば、アプリケーションプログラムの実行単位である。
情報処理装置10で動作するオペレーションシステム(図示せず)は、実行対象のジョブが要求するジョブ資源(CPUコアcp、メモリmm)をジョブに割り当てることによって、ジョブを実行する。即ち、オペレーションシステムは、ジョブが要求する、CPUコアcpの数及びメモリ領域の数をジョブに割り当てることによって、ジョブを実行する。例えば、HPC(high performance computing:HPC)を行う情報処理装置10は、プロセスの実行に1つのCPUコアcpを使用する。
[ジョブ資源の割り当て]
図2は、ジョブに対するジョブ資源の割り当てを模式的に説明する図である。図2は、図1に示した情報処理装置10が、5つのジョブ(ジョブA〜ジョブE)を実行する場合を例示する。
図2に示すように、ノードnd1及びノードnd2は、1つのジョブ(ジョブA)または複数のジョブ(ジョブB、ジョブC)を実行する。ジョブAは、例えば、ノードnd1の4つのCPUコアcp1a〜cp1d、及び、ノードnd1のメモリmm1を占有して処理を実行する。一方、ジョブBは、ノードnd2の2つのCPUコアcp2a、cp2b、及び、ノードnd2のメモリmm2を使用して処理を実行する。ジョブCも、ジョブBと同様である。
また、ノードnd3とノードnd4は、協働してジョブ(ジョブD、ジョブE)を実行する。ジョブDは、ノードnd3の2つのCPUコアcp3a、cp3bと、ノードnd4の2つのCPUコアcp4a、cp4b、及び、各ノードnd3、nd4のメモリmm3、mm4を使用して処理を実行する。ジョブEも、ジョブDと同様である。
前述したとおり、図1に示す情報処理装置10は、NUMAアーキテクチャを採用する。したがって、情報処理装置10のオペレーションシステムは、ジョブに指定されたNUMAポリシーに基づいて、各ジョブにジョブ資源を割り当てる。次に、NUMAポリシーを説明する。
[NUMAポリシー]
NUMAポリシーは、ジョブ資源の割り当て方法を指定する設定値である。ユーザは、ジョブを示すプログラムに、オペレーティングシステムが提供するNUMAアーキテクチャのAPI(Application Programming Interface:API)を指定することによって、NUMAポリシーを指定する。ユーザは、例えば、ジョブの処理内容の特性に応じて、ジョブにNUMAポリシーを指定する。
ここで、CPUコアcpの割り当ての指定に関するNUMAポリシー、及び、メモリmmの割り当ての指定に関するNUMAポリシーの一例を説明する。
CPUコアcpの割り当ての指定に関するNUMAポリシーには、例えば、ポリシー「PACK」、ポリシー「UNPACK」、ポリシー「CPUBIND=X」等がある。ポリシー「PACK」は、ジョブのプロセスを、単一のノードndのCPUコアcpに割り当てる指定を示す。ポリシー「UNPACK」は、ジョブのプロセスを、複数のノードndのCPUコアcpに割り当てる指定を示す。ポリシー「CPUBIND=X」は、ジョブのプロセスを、X番目のノードndのCPUコアcpに割り当てる指定を示す。
メモリmmの割り当ての指定に関するNUMAポリシーには、例えば、ポリシー「LOCAL」、ポリシー「BIND=X」、ポリシー「PREFER=X」、ポリシー「INTERLEAVE」等がある。
ポリシー「LOCAL」は、ジョブのプロセスがアクセスするデータを記憶するメモリmmを、プロセスが動作するCPUコアcpが属するノードndのメモリmmに割り当てる指定を示す。ポリシー「BIND=X」は、メモリmmを、強制的にX番目のノードndのメモリmmから割り当てる指定を示す。ポリシー「PREFER=X」は、メモリmmを、可能な限り、X番目のノードndのメモリmmから割り当てる指定を示す。ポリシー「INTERLEAVE」は、ラウンドロビン方式にしたがって、各ノードndのメモリmmに割り当てる指定を示す。
このように、ジョブは、NUMAポリシーの指定を有する場合がある。しかしながら、要求するジョブ資源をジョブに割り当てる際に、ジョブのNUMAポリシーを満たせない状態が生じ得る。したがって、オペレーティングシステムは、実行中のジョブがNUMAポリシーを満たすように、実行中のジョブをマイグレーションし、当該ジョブが使用しているジョブ資源を再配置する。
または、オペレーションシステムは、各ノードndのジョブ資源をより効率的に利用するために、実行中のジョブをマイグレーションし、当該ジョブが使用しているジョブ資源を再配置する。
[ジョブ資源の再配置]
オペレーションシステムは、ジョブのプロセスを実行しているCPUコアcpを、別のCPUコアcpに変更することによって、CPUコアcpの再配置を行う。または、オペレーションシステムは、ジョブのプロセスがアクセスするデータが記憶されたメモリ領域を、別のメモリ領域に変更することによって、メモリmmの再配置を行う。
次に、図3〜図9にしたがって、実行中のジョブが使用しているジョブ資源の再配置の一例を説明する。図3〜図9は、2つのノードnd1、nd2が、5つのジョブ(ジョブA〜ジョブE)を実行する場合を例示する。まず、図4〜図6にしたがって、再配置を行わない場合のジョブ資源の割り当て例を、次に、図7〜図9にしたがって、再配置を行う場合のジョブ資源の割り当て例を説明する。以下、メモリmmが有する複数のメモリ領域を、メモリページと称する。
図3は、ジョブA〜ジョブEが要求するジョブ資源、及び、ジョブA〜ジョブEに指定されるメモリmmに関するNUMAポリシーを説明する表図である。図3に示す表HJによると、ジョブA、ジョブB、及び、ジョブEは、ジョブの実行に、4つのCPUコアcp及び4つのメモリページを要求する。また、ジョブC、及び、ジョブDは、ジョブの実行に、2つのCPUコアcp及び2つのメモリページとを要求する。
また、ジョブA、ジョブBに指定されたNUMAポリシーは、ポリシー「BIND」(使用するメモリページを、ジョブを実行するノードndのメモリページから割り当てる)である。また、ジョブC〜ジョブEに指定されたNUMAポリシーは、ポリシー「INTERLEAVE」(使用するメモリページを、各ノードndのメモリページに割り当てる)である。
(再配置を行わない場合)
図4は、再配置を行わない場合の、ジョブ資源の割り当てを模式的に説明する図である。図4において、図1、図2で示したものと同一のものは、同一の記号で示す。オペレーションシステムは、ジョブA〜ジョブEの順に、ジョブ資源の空き状況に応じて、各ジョブにジョブ資源を割り当てる。
図1、図2で前述したとおり、図4に示すノードnd1、nd2のそれぞれは、4つのCPUコアcp(cp1a〜cp1d、cp2a〜cp2d)を有する。また、各ノードndのメモリmmのそれぞれは、4つのメモリページp11〜p14、p21〜p24(メモリページmpともいう)を有する。
図4は、ジョブA、ジョブBの実行時のジョブ資源の割り当て状態を示す。オペレーションシステムは、ジョブAが要求するジョブ資源(図3)に基づいて、ジョブAに、ノードnd1の4つのCPUコアcp1a〜cp1dを割り当てる。また、オペレーションシステムは、ジョブAに4つのメモリページmpを割り当てる際に、ポリシー「BIND」に基づいて、ノードnd1の4つのメモリページp11〜p14を割り当てる。
次に、オペレーションシステムは、ジョブBが要求するジョブ資源(図3)に基づいて、ジョブBに、ノードnd2の4つのCPUコアcp2a〜cp2dを割り当てる。また、オペレーションシステムは、ポリシー「BIND」に基づいて、ジョブBに、ノードnd2の4つのメモリページp21〜p24を割り当てる。このように、オペレーションシステムは、ジョブが要求するジョブ資源を、NUMAポリシーにしたがって、ジョブに割り当てる。
図5は、再配置を行わない場合の、ジョブA〜ジョブEに対するメモリページmpの割り当て状態を時系列(タイミングt1〜t7)に示す表図である。
図5に示す表H1によると、タイミングt2にジョブAが終了しノードnd1のジョブ資源が解放されたことにより、タイミングt4に、オペレーションシステムはジョブCの実行を開始する。ジョブBがノードnd2のジョブ資源を占有しているため、オペレーションシステムは、ジョブCに、ノードnd1の2つのCPUコアcp、及び、2つのメモリページmpを割り当てる。この場合、ジョブCは、1つのノードnd1のメモリページmpのみを使用するため、ポリシー「INTERLEAVE」を満たしていない。
次に、タイミングt5に、オペレーションシステムは、ジョブDに、ノードnd1の2つのCPUコアcp、及び、2つのメモリページmpを割り当てる。ジョブDも同様にして、1つのノードnd1のメモリページmpのみを使用するため、ポリシー「INTERLEAVE」を満たしていない。
そして、タイミングt5に、ジョブBが終了しノードnd2のジョブ資源が解放されたことにより、タイミングt7に、オペレーションシステムはジョブEの実行を開始する。オペレーションシステムは、ジョブEに、ノードnd2の、4つのCPUコアcp及び4つのメモリページmpを割り当てる。ただし、ジョブEも同様にして、1つのノードnd2のメモリページのみを使用するため、ポリシー「INTERLEAVE」を満たしていない。
図5の表H1内に示す記号「!」は、ジョブがNUMAポリシーを満たしていないことを示す。したがって、図5の表H1は、タイミングt4〜t7に、ジョブC〜ジョブEの実行がNUMAポリシーを満たしていないことを示す記号「!」を有する。
図6は、図5に示したタイミングt7の、ジョブC〜ジョブEのジョブ資源の割り当て状態を示す図である。図6において、図1、図2で示したものと同一のものは、同一の記号で示す。
図5で前述したとおり、タイミングt7に、ジョブC及びジョブDのそれぞれは、ノードnd1の、2つのCPUコアcp及び2つのメモリページmpを使用する。また、ジョブEは、ノードnd2の、4つのCPUコアcp及び4つのメモリページmpを使用する。即ち、ジョブC〜ジョブEのそれぞれは、1つのノードndのメモリページmpのみを使用する。
(再配置を行う場合)
図7は、再配置を行う場合の、ジョブA〜ジョブEに対するメモリページmpの割り当て状態を時系列(タイミングt1〜t7)に示す表図である。図7において、図5で示したものと同一のものは、同一の記号で示す。また、図7に示す表H1は、図5に示した表H1と同様である。
図7の表H2は、タイミングt6に、メモリの再配置を行った場合における、メモリページmpの割り当て状態を示す。ノードnd2のジョブ資源が解放されると、オペレーションシステムは、タイミングt6に、NUMAポリシーを満たすために、実行中のジョブC、ジョブDが使用しているメモリページmpを、ノードnd1及びノードnd2のメモリページmpに再配置する。
また、タイミングt7に、ノードnd1及びノードnd2のそれぞれの、2つのCPUコアcp及び2つのメモリページmpが空き状態になる。したがって、オペレーションシステムは、NUMAポリシーを満たすために、ジョブEに、ノードnd1及びノードnd2のそれぞれの、2つのCPUコアcp及び2つのメモリページmpを割り当てる。
図8は、図7に示したタイミングt6の、ジョブC及びジョブDのジョブ資源の割り当て状態を示す図である。図8において、図5で示したものと同一のものは、同一の記号で示す。
図7で前述したとおり、タイミングt6に、ジョブC及びジョブDのそれぞれは、ノードnd1及びノードnd2の、2つのCPUコアcp及び2つのメモリページmpを使用する。即ち、ジョブC及びジョブDのそれぞれは、各ノードndのメモリページmpを使用するため、ポリシー「INTERLEAVE」を満たす。
図9は、図7に示したタイミングt7の、ジョブC〜ジョブEのジョブ資源の割り当て状態を示す図である。図9において、図5で示したものと同一のものは、同一の記号で示す。
図7で前述したとおり、タイミングt7に、ジョブC〜ジョブEのそれぞれは、各ノードnd1、nd2のメモリページmpを使用する。したがって、ジョブC〜ジョブEは、ポリシー「INTERLEAVE」を満たす。
図7〜図9に示すように、実行中のジョブC、ジョブDに割り当て済みのメモリページmpを再配置したことに伴い、ジョブC〜ジョブEは、NUMAポリシーを満たす。オペレーションシステムは、メモリページmpを再配置する場合、ジョブが使用するメモリページmpに記憶されているデータを、再配置先のメモリページmpに複写し、再配置先のメモリページmpをジョブに割り当てる。したがって、メモリページmpの再配置に伴い、ジョブのプロセスがアクセス(使用)する、メモリページmpの物理アドレスが変化する。なお、この場合、ジョブのプロセスがアクセスする仮想メモリのアドレスは、変化しない。
各ノードndのCPUコアcpは、キャッシュメモリを介して、メモリページmpにアクセスする。図7〜図9で説明したメモリページmpの再配置に伴い、ジョブのプロセスがアクセスするメモリページmpの物理アドレスが変化する。メモリページmpの物理アドレスの変化により、キャッシュメモリにおけるスラッシングが発生する場合がある。
次に、図10にしたがって、本実施の形態のキャッシュメモリの構成を説明するとともに、図11にしたがって、図10で説明したキャッシュメモリにおけるスラッシングの発生を説明する。
[キャッシュメモリの構成]
図10は、本実施の形態のキャッシュメモリ103の構成の一例を示す図である。図10は、図1、図2に示す各ノードndが有するキャッシュメモリ103と、メモリmmとを示す。図10に示すメモリmmは、12個のメモリページp0〜p11(mp、メモリ領域)を有する。
キャッシュメモリ103は、タグアレイtaとデータアレイdaとを有する。データアレイdaは、所定のサイズの、複数のデータ領域(以下、キャッシュライン)da−1〜da−4を有する。タグアレイ(キャッシュタグともいう)taは、インデックス値に応じて、対応するキャッシュラインda−1〜da−4の情報をそれぞれ有する、タグta−1〜ta−4を有する。
インデックス値「0」のタグta−1は、1番目のキャッシュラインda−1に対応する。同様にして、インデックス値「1」のタグta−2は、2番目のキャッシュラインda−2に対応する。他のインデックス値のタグta−3、ta−4についても同様である。
図10に示すキャッシュメモリ103によると、メモリページp0〜p11の物理アドレスに基づいて、各メモリページp0〜p11に記憶されているデータを記憶する対象の、キャッシュライン(即ち、インデックス値)が定まる。メモリページp0〜p11の物理アドレスに基づいてインデックス値が定まるキャッシュメモリ103を、物理アドレスキャッシュと称する。
プロセス間で共有するサイズの大きいキャッシュメモリ(Level2、Level3キャッシュ等)103は、物理アドレスキャッシュを採用する場合が多い。物理アドレスキャッシュの方式の一例に、セットアソシアティブ方式やダイレクトマッピング方式がある。
図10に示すキャッシュメモリ103は、2ウェイ/4ラインのセットアソシアティブ方式のキャッシュメモリを示す。したがって、図10に示すように、キャッシュメモリ103は、配列数が4つのタグアレイta及びデータアレイdaを、2セット有する。
CPUコアcpは、アクセス対象のメモリページp0〜p11の物理アドレス(先頭アドレス)に基づいて、インデックス値を取得する。CPUコアcpは、インデックス値に基づいて、対応するキャッシュタグtaを参照し、アクセス対象のメモリページmpのキャッシュミスヒット判定を行う。
例えば、CPUコアcpは、アドレスを、キャッシュライン数とキャッシュラインのサイズとの乗算値にしたがって除算した場合の剰余を、インデックス値として算出する。本実施の形態では、メモリページp0〜p11のアドレス「上位アドレス+下位アドレス」のうち、下位アドレスがインデックス値に対応する。
図10の例によると、メモリページp0のアドレスは、例えば、値「0/0(上位アドレス/下位アドレス)」である。下位アドレス「0」は、インデックス値「0」に対応する。同様にして、メモリページp1のアドレスは値「0/1」であって、インデックス値「1」に対応する。同様にして、メモリページp2のアドレスは値「0/2」であって、インデックス値「2」に対応する。
また、メモリページp4のアドレスは値「1/0」であって、インデックス値「0」に対応する。このように、下位アドレスが同一のメモリページp0、p4は、同一のインデックス値「0」に対応する。即ち、メモリページp0、p4のデータは、同一のキャッシュラインda−1に記憶される。
各タグta−1〜ta−4は、対応するキャッシュラインda−1〜da−4に記憶されたメモリページp0〜p11の上位アドレス等の情報を有する。CPUコアcpは、アクセス対象のメモリページp0〜p11の上位アドレスと、インデックス値のタグta−1〜ta−4が有する上位アドレスとを比較し、キャッシュミスヒットの判定を行う。
上位アドレスが一致する場合、CPUコアcpは、アクセス対象のメモリページp0〜p11のデータが、キャッシュメモリ103に記憶されている旨、判定する(キャッシュヒット)。一方、上位アドレスが一致しない場合、CPUコアcpは、アクセス対象のメモリページp0〜p11のデータが、キャッシュメモリ103に記憶されていない旨、判定する(キャッシュミス)。
次に、図11にしたがって、キャッシュメモリ103におけるスラッシングの概要を説明する。キャッシュメモリ103におけるスラッシングは、図10に示した、同一のキャッシュラインda−1〜da−4に対するデータの書き換えが頻繁に発生する事象を示す。ジョブがアクセスする複数のメモリページp0〜p11が同一のインデックス値に対応する場合、ジョブの実行中に、当該キャッシュラインda−1〜da−4に対するデータの書き換えが頻繁に発生する。
[キャッシュメモリにおけるスラッシング]
図11は、メモリの再配置に伴う、スラッシングの発生を模式的に説明する図である。図11の(A)は再配置前の状態を示し、図11の(B)は再配置後の状態を示す。図11において、図10で示したものと同一のものは、同一の記号で示す。図11の(A)(B)に示すキャッシュメモリ103は、図10に対して、タグアレイta及びメモリmmを抜粋して表す。
図11の(A)の例によると、あるジョブは、複数のメモリページp0、p2、p5、p11(mp)を使用(アクセス)する。図10で前述したとおり、メモリページp0はインデックス値「0」に対応し、メモリページp2はインデックス値「2」に対応する。同様にして、メモリページp5はインデックス値「1」に対応し、メモリページp11はインデックス値「3」に対応する。
図11の(A)によると、ジョブが使用する各メモリページp0、p2、p5、p11に対応するインデックス値「0〜3」は互いに重複しない。したがって、ジョブの実行中に、複数のメモリページp0、p2、p5、p11の間で、同一のキャッシュラインに対するデータの書き換え(即ち、スラッシング)は発生しない。
本実施の形態において、図11の(A)に示すように、ジョブのプログラムは、例えば、予め、ジョブ実行時のスラッシングを抑制するように生成される。即ち、ジョブのプログラムは、ジョブが使用する複数のメモリページmpに対応する、インデックス値の組が重複しないように、生成される。したがって、図11の(A)に示すように、例えば、メモリページmpの再配置前、ジョブが使用する複数のメモリページmpに対応する、インデックス値の組は互いに重複しない。
図11の(B)は、図11の(A)の状態から、メモリページmpを再配置した場合のキャッシュメモリ103の状態を示す。図11の(B)の例によると、オペレーションシステムは、ジョブが使用するメモリページp0、p2、p5、p11を、ノードnd2のメモリページp1、p5、p8、p10に再配置する。メモリページmpの再配置に伴い、ジョブが使用するメモリページmpのアドレス(物理アドレス)は変化する。図11の(B)に示すように、アドレスの変化に伴い、再配置後のメモリページp1及びメモリページp5のアドレスは、同一のインデックス値「1」に対応する。
また、図11のキャッシュメモリ103は、2ウェイのキャッシュメモリである。したがって、仮に、別のプロセスがインデックス値「1」のキャッシュラインda−2を使用している場合、ジョブの実行時に、キャッシュラインda−2に対するデータの書き換え処理が頻繁に発生し、キャッシュメモリ103におけるスラッシングが生じる。スラッシングが発生すると、メモリアクセスの処理時間のレイテンシが増加し、ジョブの実行時間が長くなる。
このように、再配置の際に、ジョブが使用する複数のメモリページmp(p0〜p11)が、同一のインデックス値に対応するメモリページmpに再配置され、スラッシングが発生する場合がある。オペレーションシステムは、スラッシングの発生を考慮することなく、NUMAポリシーやジョブが要求するジョブ資源のみに基づいてメモリの再配置を行う。
[第1の実施の形態]
したがって、並列計算機は、第1のノードndが実行中のジョブを第2のノードndに移行してジョブの実行を継続する際に、ジョブがアクセスするデータが記憶された第1のノードndの第1の複数のメモリページmpに対応するインデックス値を取得する。第1、第2のノードndは、複数のメモリページ(メモリ領域)mp、及び、キャッシュメモリ103を、それぞれ有する。
そして、並列計算機は、第2のノードndが、取得したインデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、非使用状態の第2の複数のメモリページmpを有するか否かを判定する。第2の複数のメモリページmpを有する場合、並列計算機は、データを第2の複数のメモリページmpに移動する。
図12は、第1の実施の形態の並列計算機の処理の概要を説明するフローチャート図である。図12のフローチャートは、第1のノード(再配置元ノード)ndが実行しているジョブを第2のノード(再配置先ノード)ndに移行して、ジョブの実行を継続する場合における、メモリページmpの再配置処理を説明する。
本実施の形態における並列計算機は、例えば、図1、図2に示すノードndのひとつである。また、本実施の形態は、実行中のジョブが使用しているメモリページmpを、ノードnd1からノードnd2に再配置する場合を例示する。したがって、本実施の形態では、第1のノードを第1のノードnd1と称し、第2のノードを第2のノードnd2と称する。
S11:並列計算機ndは、移行する対象のジョブがアクセスするデータが記憶された、第1のノードnd1の複数のメモリページmpのアドレス(先頭アドレス)に基づいて、インデックス値の組を取得する。
S12:並列計算機ndは、第2のノードnd2が、取得したインデックス値の組と同一、または、取得したインデックス値の組と相対位置関係を有するインデックス値の組に対応する、非使用状態の複数のメモリページmpを有するか否かを判定する。
S13:非使用状態の複数のメモリページmpを有する場合(S12のYes)、並列計算機ndは、対象のジョブがアクセスするデータを、第1のノードnd1から、第2のノードnd2に移動する。一方、非使用状態の複数のメモリページmpを有していない場合(S12のNo)、並列計算機ndは、第2のノードnd2にジョブを移行しない。
前述したとおり、ジョブのプログラムは、例えば、ジョブの実行時に、スラッシングの発生を抑制するように生成される。つまり、ジョブのプログラムは、ジョブがアクセスする複数のメモリページmpに対応するインデックス値の重複を抑えるように生成される。したがって、本実施の形態の並列計算機ndは、再配置前にジョブがアクセスするデータが記憶されている複数のメモリページmpに対応するインデックス値の組の相関関係を維持するように、メモリページmpを再配置する。
言い換えると、並列計算機ndは、キャッシュメモリ103におけるスラッシングの発生を抑制する、インデックス値の変化の許容範囲を判定する。そして、並列計算機ndは、第2のノードnd2が、非使用状態の、許容範囲内のインデックス値の組に対応するメモリページmpを有する場合に、再配置後にスラッシング発生しない旨、判定する。
これにより、ジョブが使用する複数のメモリページmpが、再配置に伴って、同一のキャッシュラインに対応することを回避可能になり、キャッシュメモリ103におけるスラッシングの発生を抑制可能になる。これにより、並列計算機ndは、スラッシングの発生に起因する、ジョブのメモリアクセス性能の低下を抑制できる。
また、並列計算機ndは、メモリページmpの再配置の際に、ジョブが使用しているメモリページmpに対応するインデックス値の組の相関関係を変更しない。つまり、再配置の際に、ユーザが意図しない、インデックス値の組の間の相関関係の変更が発生しない。これにより、ベンチマークテスト等のテストの実行時に、再配置に伴うスラッシングの発生の有無に応じて、テスト結果が変動することを回避可能になり、テストの結果が安定する。これにより、ユーザは、安定したテスト結果に基づいて、分析や改良等を適切に行うことができる。
なお、本実施の形態における並列計算機ndの再配置処理は、NUMA環境における再配置処理に限定されるものではない。また、第1、第2のノードnd1、nd2は、例えば、仮想マシンであってもよいし、異なる物理マシンであってもよい。
次に、図13にしたがって、第1の実施の形態における並列計算機ndのハードウェア構成を、図14にしたがって、並列計算機ndのソフトウェアブロック図を説明する。前述したとおり、並列計算機ndは、例えば、図1、図2に示す情報処理装置10が有するノードndのひとつを示す。なお、並列計算機ndは、情報処理装置10が有するノードndとは、別の装置であってもよい。
[並列計算機のハードウェア構成]
図13は、第1の実施の形態の並列計算機ndのハードウェア構成を示す図である。図13に示す並列計算機ndは、CPUユニット101とメモリユニット102とを有する。CPUユニット101は、複数のCPUコアcp1a〜cp1d(cp)と、キャッシュメモリ103、通信インタフェース部104等を有する。CPUユニット101の各部は、バス106を介して相互に接続する。
複数のCPUコアcpは、キャッシュメモリ103を介して、メモリユニット102等と接続する。通信インタフェース部104は、図1、図2に示した他のノードndと接続し、データの送受信を行う。図13に示す、キャッシュメモリ103は、例えば、L2(Level2)キャッシュである。
メモリユニット102は、例えば、RAM(Random Access Memory:RAM)や不揮発性メモリ等を示す。メモリユニット102は、CPUコアcpが処理を行うデータ等を記憶する。また、メモリユニット102は、データ領域を示すメモリmmと、プログラム領域ppとを有する。メモリmmは、静的領域やヒープ領域等を有し、プログラムの実行時に使用する領域である。前述したとおり、メモリmmは、複数のメモリページ(メモリ領域)mpを有する。
また、プログラム領域ppは、機械語に翻訳されたプログラムを格納する領域である。プログラム領域ppは、例えば、オペレーションシステム格納領域120、ジョブプログラム格納領域123を有する。また、オペレーションシステム格納領域120は、再配置プログラム格納領域121と、ジョブ使用メモリ情報格納領域122とを有する。
オペレーションシステム格納領域120のオペレーションシステム(以下、オペレーションシステム120)は、CPUコアcpの実行によって、並列計算機ndで動作するオペレーションシステムの処理を実現する。再配置プログラム格納領域121の再配置プログラム(以下、再配置プログラム121)は、実行中のジョブの、ジョブ資源の再配置処理を行う。再配置プログラム121の詳細は、図14にしたがって後述する。
ジョブ使用メモリ情報格納領域122のジョブ使用メモリ情報(以下、ジョブ使用メモリ情報122と称する)は、各ジョブがアクセスするデータが記憶されたメモリページmpの情報を有する。ジョブ使用メモリ情報122の詳細は、図15にしたがって後述する。
ジョブプログラム格納領域123のジョブプログラム(以下、ジョブプログラム123)は、CPUコアcpの実行によって、オペレーションシステム120上のジョブの実行を実現する。ジョブは、例えば、大規模な計算処理や、データの分析処理等である。ジョブプログラム123は、実行するジョブに応じて異なる。
[並列計算機のソフトウェアブロック]
図14は、図13に示した並列計算機ndのソフトウェアブロックを説明する図である。図13に示した再配置プログラム121は、メモリ再配置モジュール131と、CPU再配置モジュール132とを有する。また、メモリ再配置モジュール131は、メモリ獲得ルーチン133を有する。
メモリ再配置モジュール131は、ジョブ使用メモリ情報122(図13)を参照し、実行中のジョブが使用するメモリページmpの情報を取得する。そして、メモリ再配置モジュール131は、メモリ獲得ルーチン133を呼び出す。
メモリ獲得ルーチン133は、第2のノードnd2が、メモリページmpに対応するインデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、非使用状態のメモリページmpを有するか否かを判定する。
メモリページmpを有する場合に、メモリ再配置モジュール131は、メモリページmpを第2のノードnd2に再配置する。メモリ再配置モジュール131の処理の詳細を、図16のフローチャート図にしたがって後述する。
CPU再配置モジュール132は、実行中のジョブが使用しているCPUコアcpを、別のノードndのCPUコアcpに再配置する。例えば、CPU再配置モジュール132は、第2のノードnd2が、ジョブに指定されたNUMAポリシーを満たす場合に、ジョブが使用するCPUコアcpを、第2のノードnd2のCPUコアcpに変更する。
[ジョブ使用メモリ情報]
図15は、図13、図14に示した、ジョブ使用メモリ情報122の一例を示す図である。ジョブ使用メモリ情報122は、実行中のジョブがアクセスするデータが記憶されたメモリページmp、即ち、実行中のジョブが使用しているメモリページmpの情報を有する。
図15に示すジョブ使用メモリ情報122は、図11の(A)に示す、メモリページmpの情報を有する。具体的に、図15に示すジョブ使用メモリ情報122は、実行中のジョブがアクセスするデータが記憶されたメモリページmpが、メモリページp0、p2、p5、p11であることを示す。
なお、ノードndが複数のジョブを実行している場合、ジョブ使用メモリ情報122は、ジョブ毎に、ジョブが使用しているメモリページmpの情報を有する。
次に、図16〜図22にしたがって、図13、図14に示すメモリ再配置モジュール131の処理の詳細を説明する。図16は、メモリ再配置モジュール131の処理の流れを示し、図17〜図22は、図16に示す工程の一部の処理の詳細を示す。
[メモリ再配置モジュールの処理]
図16は、図13、図14に示す、メモリ再配置モジュール131の処理の詳細を説明するフローチャート図である。
S21:メモリ再配置モジュール131は、ジョブ使用メモリ情報122(図15)を参照し、移行対象のジョブがアクセスするデータが記憶された第1のノードnd1の複数のメモリページmpの情報を取得する。そして、メモリ再配置モジュール131は、取得した、複数のメモリページmpのアドレスに対応する、インデックス値の組を取得する。
具体的に、メモリ再配置モジュール131は、対象ジョブがアクセスするデータが記憶された、第1のノードnd1のメモリページmpのアドレス「M={m1,m2,m3,…mN}(アドレス「M」ともいう)」を取得する。図11の(A)の例によると、アドレス「M」は、値「0(=m1),2(=m2),5(=m3),11(=m4)」を示す。
そして、メモリ再配置モジュール131は、アドレス「M」に対応する、インデックス値「I={I(m1),I(m2),…,I(mN)}(インデックス値「I」ともいう)」を取得する。図11の(A)の例によると、インデックス値「I」は、値「0(=I(0)),2(=I(2)),1(=I(5)),3(=I(11))」を示す。
前述したとおり、メモリ再配置モジュール131は、例えば、式「mi%(K×s)」に基づいて、インデックス値「I(mi)」を算出する。値「K」はキャッシュラインの数を示し、値「s」はキャッシュラインのサイズを示す。メモリ再配置モジュール131は、キャッシュラインの数「K」、及び、キャッシュラインのサイズ「s」をハードウェアから取得可能である。
S22:メモリ再配置モジュール131は、インデックス値毎に、対象ジョブのプロセスが使用しているメモリページmpの数「P={P(1),P(2),P(3),…,P(K)}(メモリページ数「P」ともいう)」を算出する。値「P(r)(0≦r<K)」は、r番目のインデックス値のメモリページ数の累計を示す。
つまり、メモリ再配置モジュール131は、工程S21で算出した各インデックス値「I(mi)」を累計し、インデックス値「r」毎のメモリページ数を算出する。図11の(A)の例によると、メモリページ数「P」は、値「1(=P(1)), 1(=P(2)), 1(=P(3)), 1(=P(0))」を示す。即ち、図11の(A)の例によると、各インデックス値のメモリページ数は、1ページである。
S23:メモリ再配置モジュール131は、条件1(k=0)を満たすインデックス値の組に対応する、第2のノードnd2の複数のメモリページmpを取得(獲得)する。第2のノードnd2が、条件1(k=0)を満たすインデックス値の組に対応する複数のメモリページmpを有する場合、複数のメモリページmpを獲得可能であることを示す。メモリページmpを獲得できた場合(S23のYes)、メモリ再配置モジュール131は、獲得した複数のメモリページmpのアドレスを、リスト「L(r)」に追加する。
条件1(k=0)を満たすインデックス値の組は、図17にしたがって説明する。また、工程S23の処理の詳細は、図18のフローチャート図にしたがって後述する。
S24:メモリ再配置モジュール131は、工程S23の処理の結果、メモリページmpの獲得に成功したか否かを判定する。
S25:メモリページmpの獲得に失敗した場合(S24のNo)、メモリ再配置モジュール131は、条件1(k≠0)を満たすインデックス値の組に対応する、第2のノードnd2の複数のメモリページmpを取得(獲得)する。第2のノードnd2が、条件1(k≠0)を満たすインデックス値の組に対応する複数のメモリページmpを有する場合、複数のメモリページmpを獲得可能であることを示す。
メモリページmpを獲得できた場合(S25のYes)、メモリ再配置モジュール131は、獲得した複数のメモリページmpのアドレスをリスト「L(r)」に追加する。条件1(k≠0)を満たすインデックス値の組を、図19にしたがって説明する。また、工程S25の処理の詳細を、図20のフローチャート図にしたがって後述する。
S26:メモリ再配置モジュール131は、工程S25の処理の結果、メモリページmpの獲得に成功したか否かを判定する。
S27:メモリページmpの獲得に失敗した場合(S26のNo)、メモリ再配置モジュール131は、条件2(k=0)(k≠0)を満たすインデックス値の組に対応する、第2のノードnd2の複数のメモリページmpを取得(獲得)する。第2のノードnd2が、条件2(k=0)(k≠0)を満たすインデックス値の組に対応する複数のメモリページmpを有する場合、複数のメモリページmpを獲得可能であることを示す。
メモリページmpを獲得できた場合(S27のYes)、メモリ再配置モジュール131は、獲得したメモリページmpのアドレスをリスト「L(r)」に追加する。条件2(k=0)(k≠0)を満たすインデックス値の組、及び、工程S27の処理の詳細を、図21のフローチャート図にしたがって後述する。
S28:メモリ再配置モジュール131は、工程S27の処理の結果、メモリページmpの獲得に成功したか否かを判定する。
S29:メモリページmpの獲得に成功した場合(S24のYes、S26のYes、S28のYesのいずれか)、メモリ再配置モジュール131は、リスト「L(r)」から、獲得したメモリページmpのアドレス「M'」を取得する。そして、メモリ再配置モジュール131は、再配置先の第2のノードnd2の、メモリページmpの物理アドレス「M'={m1',m2',m3',…mN'}(アドレス「M'」ともいう)」を決定する。
メモリ再配置モジュール131は、第1のノードnd1のアドレス「M」のメモリページmpに記憶されたデータを、第2のノードnd2のアドレス「M'」のメモリページmpに複写する。そして、メモリ再配置モジュール131は、対象ジョブのプロセスに割り当てるメモリページmpのアドレスを、アドレス「M」からアドレス「M'」に変更する。変更後、メモリ再配置モジュール131は、アドレス「M」のメモリページmpを開放する。
なお、メモリページmpの獲得に失敗した場合(S28のNo)、メモリ再配置モジュール131は、第2のノードnd2にジョブを移行しない。メモリ再配置モジュール131は、例えば、別のノードndを対象として、図16のフローチャート図の処理を行う。即ち、メモリ再配置モジュール131は、実行中のジョブの、インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、非使用状態のメモリページmpを有する別のノードndを検索する。
[工程S23:条件1(k=0)を満たすインデックス値の組]
図17は、図16のフローチャート図の工程S23に示した、条件1(k=0)を満たすインデックス値の組を説明する図である。条件1(k=0)を満たすインデックス値の組は、ジョブがアクセスするデータが記憶された、第1のノードnd1のメモリページmpに対応するインデックス値の組と同一のインデックス値の組を示す。即ち、条件1(k=0)を満たすインデックス値の組は、工程S22で取得したインデックス値「I」と同一のインデックス値の組を示す。
図17の(A)によると、ジョブが使用している、第1のノードnd1のメモリページmpのアドレス「M」に対応するインデックス値「I」は、値「0,2,1,3」である。したがって、条件1(k=0)に対応するインデックス値の組は、インデックス値「0,2,1,3」を示す。
次に、図18にしたがって、条件1(k=0)を満たすインデックス値の組に対応する、第2のノードnd2の複数のメモリページmpの取得処理(工程S23)の詳細を説明する。
[図16の工程S23]
図18は、図16のフローチャート図の工程S23の処理を説明するフローチャート図である。
S31:メモリ再配置モジュール131は、インデックス値「r(0≦r<K)」を対象として、工程S32〜S34の処理を繰り返す。
S32:メモリ再配置モジュール131は、インデックス値「r」と、当該インデックス値のメモリページ数「P(r)」を入力として、メモリ獲得ルーチン133を呼び出す。メモリ獲得ルーチン133は、インデックス値「r」に対応するメモリページmpを、メモリページ数「p(r)」分、獲得する処理を行う。メモリ獲得ルーチン133の処理の詳細は、図22にしたがって後述する。
図17の(A)の例によると、メモリ再配置モジュール131は、インデックス値「r=0」の場合、インデックス値「r=0」と、メモリページ数「P(r)=1」とを入力として、メモリ獲得ルーチン133を呼び出す。同様にして、メモリ再配置モジュール131は、インデックス値「r=1」の場合、インデックス値「r=1」と、メモリページ数「P(r)=1」とを入力として、メモリ獲得ルーチン133を呼び出す。
S33:メモリ再配置モジュール131は、メモリ獲得ルーチン133にしたがって、メモリページmpを獲得できたか否かを判定する。メモリページmpを獲得できなかった場合(S33のNo)、メモリ再配置モジュール131は、工程S23の処理を終了(失敗)する。
S34:メモリページmpを獲得できた場合(S33のYes)、メモリ再配置モジュール131は、インデックス値「r」が値「K−1」と一致するか否か、即ち、全てのインデックス値を対象としてメモリページmpを獲得したか否かを判定する。
S35:変数「r」が値「K−1」と一致する場合(S34のYes)、メモリ再配置モジュール131はループを終了し、工程S23の処理を終了(成功)する。このように、メモリ再配置モジュール131は、インデックス値「0」からインデックス値「K−1」まで順に、メモリページ数「P(r)」の数のメモリページを獲得する。
これにより、図17の(B)に示すように、メモリ再配置モジュール131は、インデックス値の組「0,2,1,3」に対応する、第2のノードnd2のメモリページp4、p10、p9、p3(mp)を獲得する。獲得した、メモリページp4、p10、p9、p3(mp)のアドレス「4(=m1')、10(=m2')、9(=m3')、3(=m4')」は、インデックス値の組「0,2,1,3」を示す。
図17、図18によると、再配置の前後で、ジョブが使用する複数のメモリページmpに対応するインデックス値の組は、変化しない。したがって、再配置前に、ジョブ内でスラッシングが発生しないようにメモリページmpのアドレスが制御されている場合、同一のインデックス値の組を維持するようにメモリページmpを再配置することにより、再配置に伴うスラッシングの発生を抑制可能になる。
[工程S25:条件1(k≠0)を満たすインデックス値の組]
図19は、図16のフローチャート図の工程S25に示した、条件1(k≠0)を満たすインデックス値の組を説明する図である。図19において、図17で示したものと同一のものは、同一の記号で示す。また、図19の(A)に示す、再配置前の、ジョブが使用している複数のメモリページmpは、図17の(A)と同様である。
条件1(k≠0)を満たすインデックス値の組は、メモリページmpのアドレス「M」に対応するインデックス値の組と相対位置関係を有するインデックス値の組を示す。即ち、条件1(k≠0)を満たすインデックス値の組は、アドレス「M」に対応するインデックス値の組を、一律に同程度、シフトしたインデックス値の組を示す。
図19の(A)によると、アドレス「M」に対応するインデックス値「I」は、値「0,2,1,3」である。条件1(k≠0)を満たすインデックス値の組は、インデックス値「I+k(k≠0)」となるインデックス値の組を示す。つまり、条件1(k≠0)を満たすインデックス値の組は、組「I={1,3,2,0}」、組「I={2,0,3,1}」、組「I={3,1,0,2}」のいずれかである。
次に、図20にしたがって、条件1(k≠0)を満たすインデックス値の組に対応する、第2のノードnd2のメモリページmpの取得処理(工程S25)の詳細を説明する。
[図16の工程S25]
図20は、図16のフローチャート図の工程S25の処理を説明するフローチャート図である。
S41:メモリ再配置モジュール131は、シフトする相対位置を示す相対値「k(0<k<K−1)」を対象として、工程S42〜S47の処理を繰り返す。
S42:メモリ再配置モジュール131は、インデックス値「r(0≦r<K)」を対象として、工程S43〜S45の処理を繰り返す。
S43:メモリ再配置モジュール131は、インデックス値「r」と、当該インデックス値に対応するメモリページ数「p((r+k)%K)」を入力として、メモリ獲得ルーチン133を呼び出す。つまり、メモリ獲得ルーチン133は、インデックス値「r」に対応するメモリページmpを、相対値「k」シフトしたインデックス値に対応するメモリページ数分、獲得する処理を行う。
具体的に、メモリ再配置モジュール131は、相対値「k=1」の場合、インデックス値「r={1,2,3,...,K−1}」と、メモリページ数「p(1),P(2),P(3),...,P(0)」とを入力として、メモリ獲得ルーチン133を呼び出す。また、メモリ再配置モジュール131は、相対値「k=2」の場合、インデックス値「r={1,2,3,...,K−1}」と、メモリページ数「P(2),P(3),P(0),...,P(1)」とを入力として、メモリ獲得ルーチン133を呼び出す。
S44:メモリ再配置モジュール131は、メモリ獲得ルーチン133にしたがって、メモリページmpを獲得できたか否かを判定する。
S45:メモリページmpを獲得できた場合(S44のYes)、メモリ再配置モジュール131は、インデックス値「r」が値「K−1」と一致するか否か、即ち、全てのインデックス値に対応するメモリページmpを獲得したか否かを判定する。
S46:インデックス値「r」が値「K−1」と一致する場合(S45のYes)、全てのインデックス値のメモリページmpを獲得できた場合を示す。したがって、メモリ再配置モジュール131はループを終了し、工程S25の処理を終了(成功)する。一方、変数「r」が値「K−1」と一致しない場合(S45のNo)、インデックス値「r」をインクリメントし、工程S45の処理を行う。
S47:一方、メモリページmpを獲得できなかった場合(S44のNo)、メモリ再配置モジュール131は、相対値「k」が値「K−2」と一致するか否か、即ち、全ての相対値を対象として、メモリ獲得処理を試みたか否かを判定する。相対値「k」が値「K−2」と一致しない場合(S47のNo)、メモリ再配置モジュール131は、相対値「k」をインクリメントし、工程S42〜S46の処理を行う。
S48:相対値「k」が値「K−2」と一致する場合(S47のYes)、全ての相対値を対象としてメモリ獲得処理を試みたものの、メモリの獲得処理に成功しなかった場合を示す。したがって、メモリ再配置モジュール131はループを終了し、工程S25の処理を終了(失敗)する。
これにより、図19の(B)に示すように、メモリ再配置モジュール131は、インデックス値の組「0,2,1,3」を一律に相対値「k」シフトした、インデックス値の組に対応するメモリページmpの組を獲得する。図19の(B)の例によると、メモリ再配置モジュール131は、インデックス値の組「0,2,1,3」を相対値「k=1」シフトしたインデックス値の組「1,3,2,0」に対応する、メモリページp9、p7、p10、p4(mp)を獲得する。
図19、図20によると、再配置の前後に、ジョブが使用する複数のメモリページmpに対応するインデックス値の組は変化するものの、インデックス値の組は一律にシフトする。したがって、再配置前に、ジョブ内でスラッシングが発生しないようにメモリページmpのアドレスが制御されている場合、再配置後に、メモリページmpの間でインデックス値が重複することを回避可能になる。つまり、インデックス値の組が一律にシフトするようにメモリページmpを再配置することにより、再配置に伴うスラッシングの発生を抑制可能になる。
[条件2(k=0)(k≠0)を満たすインデックス値の組]
次に、図21にしたがって、条件2(k=0)(k≠0)を満たすインデックス値の組に対応する、第2のノードnd2のメモリページmpの取得処理(工程S27)の詳細を説明する。
条件2(k=0)(k≠0)を満たすインデックス値の組は、図17、図19で説明したインデックス値の組と同様である。ただし、条件2によると、再配置前後で、メモリページmpとインデックス値の組が異なってもよい。図17、図19に基づいて、具体的に説明する。
図17の(A)(B)によると、再配置前のメモリページp0は、再配置後のメモリページp4に対応する。したがって、再配置前のメモリページp0に対応するインデックス値「0」は、対応する再配置後のメモリページp4に対応するインデックス値「0」は同一である。他のメモリページmpについても同様である。
これに対し、条件2によると、再配置前のメモリページmpに対応するインデックス値は、対応する再配置後のメモリページmpに対応するインデックス値と異なっていてもよい。例えば、再配置前のメモリページp0が、インデックス値「2」に対応する再配置後のメモリページp10に対応してもよい。この場合、例えば、再配置前の他のメモリページp2、p5、p11が、再配置後のメモリページp4に対応する。
同様にして、図19の(A)(B)によると、再配置前のメモリページp0は、インデックス値を相対値「1」シフトした、再配置後のメモリページp9に対応する。したがって、再配置前のメモリページp0に対応するインデックス値「0」は、対応する再配置後のメモリページp4に対応するインデックス値「0」を相対値「1」シフトした値である。他のメモリページmpについても同様である。
これに対し、条件2によると、再配置前のメモリページmpに対応するインデックス値は、対応する再配置後のメモリページmpに対応するインデックス値を相対値シフトした値と異なっていてもよい。例えば、再配置前のメモリページp0が、インデックス値「3」に対応する再配置後のメモリページp7に対応し、再配置前のメモリページp2が、再配置前と同一のインデックス値「2」に対応する再配置後のメモリページp10に対応してもよい。
[図16の工程S27]
図21は、図16のフローチャート図の工程S27の処理を説明するフローチャート図である。
S51:メモリ再配置モジュール131は、インデックス値のカウンタを示す変数「i(1≦k≦K)」を対象として、工程S52〜S58の処理を繰り返す。
S52:メモリ再配置モジュール131は、各インデックス値のメモリページ数「p(r)(0≦r<K)」のうち、i番目に大きいメモリページmp数を選択し、変数「Pi」にセットする。
S53:メモリ再配置モジュール131は、前述した条件1(k=0)(k≠0)を満たすインデックス値の組を示す変数「s(0≦s<K)」を対象として、工程S54〜S55の処理を繰り返す。なお、変数「i=2」回目以降は、メモリ再配置モジュール131は、メモリページmpを獲得済みのインデックス値「s」を除外した、インデックス値「s」を選択する。
S54:メモリ再配置モジュール131は、インデックス値「s」と、当該インデックス値に対応するメモリページ数「P(i)」を入力として、メモリ獲得ルーチン133を呼び出す。つまり、メモリ再配置モジュール131は、メモリページ数の多い順に、当該メモリページ数を獲得可能なインデックス値「s」のメモリページmpを順次、獲得する。
図17及び図19の例によると、各インデックス値のメモリページ数は値「1」である。図19の例において、仮にインデックス値「0」に対応するメモリページ数が値「2」の場合、メモリ再配置モジュール131は、インデックス値「0,1,2,3」から、メモリページ数「2」を獲得可能なインデックス値を探索する。
S55:メモリ再配置モジュール131は、メモリ獲得ルーチン133にしたがって、メモリページmpを獲得できたか否かを判定する。
S56:メモリページmpを獲得できなかった場合(S55のNo)、メモリ再配置モジュール131は、インデックス値「s」が値「K−1」と一致するか否かを判定する。
インデックス値「s」が値「K−1」と一致しない場合(S56のNo)、メモリ再配置モジュール131は、インデックス値「s」をインクリメントし、工程S54、工程S55を繰り返す。一方、インデックス値「s」が値「K−1」と一致する場合(S56のYes)、メモリページ数「Pi」を獲得可能なインデックス値が存在しない場合を示す。したがって、メモリ再配置モジュール131は、工程S27の処理を終了(失敗)する。
S57:一方、メモリページmpを獲得できた場合(S55のYes)、メモリ再配置モジュール131は、インデックス値「s」のループを終了する。
S58:メモリ再配置モジュール131は、カウンタを示す変数「i」が値「K」と一致するか否か、即ち、全てのインデックス値を対象として、メモリ獲得処理を試みたか否かを判定する。
S59:変数「i」が値「K」と一致する場合(S58のYes)、全てのインデックス値を対象としてメモリ獲得処理を試みたことを示す。したがって、メモリ再配置モジュール131はループを終了し、工程S25の処理を終了(成功)する。一方、変数「i」が値「K」と一致しない場合(S58のNo)、メモリ再配置モジュール131は、インデックスの相対値「i」をインクリメントし、工程S52〜S58の処理を行う。
これにより、メモリ再配置モジュール131は、例えば、図19に示した、第2のノードnd2のメモリページp9、p7、p10、p4を獲得する。ただし、条件2によると、再配置前のメモリページp0、p2、p5、p11と、再配置後の第2のノードnd2のメモリページp9、p7、p10、p4との組合せはいずれの組合せであってもよい。
図21の例によると、再配置の前後で、ジョブが使用する複数のメモリページmpに対応するインデックス値の組は同一、または、一律にシフトする。したがって、再配置前に、ジョブ内でスラッシングが発生しないようにメモリページmpのアドレスが制御されている場合、前述したとおり、再配置に伴うスラッシングの発生を抑制可能になる。
[メモリ獲得ルーチンの処理]
図22は、メモリ獲得ルーチン133の処理を説明するフローチャート図である。メモリ獲得ルーチン133の第1のパラメータである値「r」は獲得対象のメモリページmpに対応するインデックス値を示し、第2のパラメータである値「P(r)」は獲得対象のメモリページ数を示す。
S61:メモリ獲得ルーチン133は、メモリページmpの先頭アドレスを示す変数「m」に、パラメータである値「r」に対応する、メモリページmpの最小アドレスをセットする。
S62:メモリ獲得ルーチン133は、アドレス「m」が、第2のノードnd2のメモリmmのアドレス範囲内であるか否かを判定する。アドレス範囲を超える場合(S62のNo)、メモリ獲得ルーチン133は、処理を終了(失敗)する。この場合、メモリ獲得ルーチン133は、リスト「L(r)」に無効なアドレス「NULL」をセットし、メモリ再配置モジュール131に出力する。
S63:一方、アドレス範囲内である場合(S62のYes)、アドレス「m」のメモリページmpが使用状態にあるか否かを判定する。メモリ獲得ルーチン133は、メモリページmpの使用状態を、オペレーティングシステムの管理情報に基づいて取得可能である。
S64:メモリページmpが使用状態にある場合(S63のYes)、メモリ獲得ルーチン133は、アドレス「m」を、同一のインデックス値に対応する、次のメモリページmpのアドレスにインクリメントする。そして、メモリ獲得ルーチン133は、インクリメントしたアドレス「m」を対象として、工程S62、S63の処理を行う。
このように、メモリ獲得ルーチン133は、第2のノードnd2のメモリmm内の、インデックス値「r」に対応するメモリページmpのアドレスの集合「m(=r),m+K,m+2K,m+3K,…」から、非使用状態のメモリページmpを検索する。
S65:メモリページmpが非使用状態の場合(S63のNo)、メモリ獲得ルーチン133は、アドレス「m」のメモリページmpを、使用状態に設定する。
S66:メモリ獲得ルーチン133は、使用状態に設定したメモリページmpのアドレス「m」をリスト「L(r)」に接続(追加)する。
S67:メモリ獲得ルーチン133は、リスト「L(r)」のエントリの数が、パラメータである、獲得対象のメモリページ数「P(r)」に達したか否かを判定する。
S68:獲得対象のメモリページ数「P(r)」に達していない場合(S67のNo)、メモリ獲得ルーチン133は、アドレス「m」を、同一のインデックス値に対応する、次のメモリページmpのアドレスにインクリメントする。そして、メモリ獲得ルーチン133は、インクリメントしたアドレス「m」を対象として、工程S62、S63の処理を行う。
一方、獲得対象のメモリページ数「P(r)」に達した場合(S67のYes)、メモリ獲得ルーチン133は処理を終了(成功)する。メモリ獲得ルーチン133は、メモリページ数「p(r)」のメモリページmpのアドレスのリスト「L(r)」を、メモリ再配置モジュール131に出力する。
[第2の実施の形態]
第2の実施の形態の並列計算機ndは、複数の候補ノードから、メモリの再配置先のノードを選択する。
並列計算機ndは、第1のノードnd1が実行中のジョブを移行する対象の候補ノードが複数ある場合に、複数の候補ノードのそれぞれについて、インデックス値の組と同一または相対位置関係を有するインデックス値の組を取得する。また、並列計算機ndは、取得したインデックス値の組に対応する、候補ノードの複数のメモリページmpの使用状況に基づいて、移行後のスラッシングの発生度合いを示す判定値を算出する。そして、並列計算機ndは、判定値がより小さい候補ノードを、第2のノードnd2として、データを第2の複数のメモリ領域に移動する。
これにより、第2の実施の形態の並列計算機ndは、同一または相対位置関係を有するインデックス値の組に対応する、複数のメモリページmpを使用可能な度合いがより大きい候補ノードを再配置先のノードndとして選択できる。つまり、並列計算機ndは、複数の候補ノードから、再配置に伴うスラッシングの発生率がより小さい候補ノードを選択し、メモリページmpを再配置できる。
また、並列計算機ndは、再配置前にジョブがアクセスするデータが記憶されている複数のメモリページmpに対応するインデックス値の組の相関関係を維持するように、メモリページmpを再配置する。これにより、ジョブが使用する複数のメモリページmpが、再配置に伴って、同一のキャッシュラインに対応することを回避可能になり、キャッシュメモリ103におけるスラッシングの発生を抑制可能になる。これにより、並列計算機ndは、スラッシングの発生に起因する、ジョブのメモリアクセス性能の低下を抑制できる。
図23は、第2の実施の形態の情報処理装置10の一例を説明する図である。図23において、図1、図2で示したものと同一のものは、同一の記号で示す。
図23に示すように、情報処理装置10は、ノードnd1〜ノードndxを有する。第2の実施の形態において、ノードnd1のメモリmm1が有するメモリページmpを、メモリページp(1,0)〜p(1,N)と称する。同様にして、ノードndxのメモリmmxが有するメモリページmpを、メモリページp(x,0)〜p(x,N)と称する。
また、ノードnd1が有するCPUコアcpを、CPUコアcp(1,0)〜cp(1,N)と称し、ノードndxが有するCPUコアcpを、CPUコアcp(x,0)〜cp(x,N)と称する。
図24は、第2の実施の形態の並列計算機ndのハードウェア構成図である。図24に示す並列計算機ndは、第1の実施の形態と同様にして、例えば、図23に示す情報処理装置10が有するノードndのひとつを示す。図24において、図13で示したものと同一のものは、同一の記号で示す。
図24に示す並列計算機ndのオペレーションシステム格納領域120は、図13に示した第1の実施の形態の並列計算機ndに対して、さらに、メモリ使用状態情報格納領域124を有する。
メモリ使用状態情報格納領域124のメモリ使用状態情報(以下、メモリ使用状態情報124と称する)は、ノード毎のメモリページmpの使用状態を、インデックス値に応じて有する。メモリ使用状態情報124の詳細は、図27にしたがって後述する。また、第2の実施の形態のジョブ使用メモリ情報122は、各ジョブがアクセスするデータが記憶されたメモリページmpの情報をインデックス値に対応して有する。
[並列計算機のソフトウェアブロック]
図25は、図24に示した、並列計算機ndのソフトウェアブロックを説明する図である。図25において、図14で示したものと同一のものは、同一の記号で示す。CPU再配置モジュール132は、第1の実施の形態と同様である。
図25に示すメモリ再配置モジュール131は、図14に示した第1の実施の形態のメモリ再配置モジュール131に対して、さらに、評価値算出ルーチン134を有する。また、メモリ再配置モジュール131は、さらに、メモリ使用状態情報124を参照する。第2の実施の形態のメモリ再配置モジュール131の処理の詳細を、図28のフローチャート図にしたがって後述する。
評価値算出ルーチン134は、メモリ使用状態情報124を参照し、同一または相対位置関係を有するインデックス値の組に対応する候補ノードndのメモリページの使用状況に基づいて、移行後のスラッシングの発生度合いを示す判定値を、候補ノードnd毎に算出する。
そして、メモリ再配置モジュール131は、スラッシングの発生度合いがより小さい判定値の候補ノードndに、実行中のジョブがアクセスする、第1のノードndのメモリ領域に記憶されたデータを移動する。また、このとき、メモリ再配置モジュール131は、第1の実施の形態にしたがって、候補ノードndにデータを移動する。
[ジョブ使用メモリ情報]
図26は、図24、図25に示した、第2の実施の形態におけるジョブ使用メモリ情報122の一例を説明する図である。図26に示すように、第2の実施の形態のジョブ使用メモリ情報122は、インデックス値毎に、実行中のジョブが使用している、メモリページmpの情報、及び、メモリページ数の情報を有する。
図26に示すジョブ使用メモリ情報122は、ノード「i」で実行中のジョブが使用しているメモリページmpが、メモリページp(i,0)、p(i,K)、p(i,1)、p(i,3)であることを示す。また、ジョブ使用メモリ情報122は、メモリページp(i,0)、p(i,K)がインデックス値「0」に対応することを示す。したがって、インデックス値「1」のメモリページ数は値「2」である。同様にして、インデックス値「1」「3」のメモリページ数は値「1」である。
[メモリ使用状態情報]
図27は、図24、図25に示した、メモリ使用状態情報124の一例を説明する図である。メモリ使用状態情報124は、ノード毎のインデックス値に対応するメモリページmpの使用状態を示す。図27は、ノード「i」のメモリ使用状態情報124を示す。
図27に示すように、メモリ使用状態情報124は、インデックス値毎に、対応するメモリページmpの使用状態を示す。状態「未使用」は、メモリページmpを使用していない非使用状態を示す。状態「使用中(ファイルのキャッシング用途)」は、キャッシュ等を目的として、メモリページmpを一時使用する状態を示す。また、状態「使用中(最近使用していない)」は、使用中であるものの、前回アクセスした後、所定の期間が経過している使用状態を示す。また、状態「使用中(最近使用した)」は、使用中であって、前回アクセスした後、所定期間が経過していない状態を示す。
図26のジョブ使用メモリ情報122に示すように、ノード「i」で実行中のジョブが使用しているメモリページmpは、メモリページp(i,0)、p(i,K)、p(i,1)、p(i,3)である。したがって、図27に示すメモリ使用状態情報124によると、メモリページp(i,0)、p(i,K)、p(i,1)、p(i,3)は、状態「使用中(最近使用した)」を示す。
また、図27に示すメモリ使用状態情報124によると、メモリページp(i,5K−1)は、状態「使用中(最近使用していない)」を示す。また、メモリページp(i,2K+1)は、使用状態「未使用」(非使用状態)を示し、メモリページp(i,K−1)は、状態「使用中(最近使用した)」を示す。
次に、図28〜図35にしたがって、図24、図25に示すメモリ再配置モジュール131の処理の詳細を説明する。図28は、第2の実施の形態におけるメモリ再配置モジュール131の処理の流れを示し、図29〜図35は、図28に示す工程の一部の処理の詳細を示す。第2の実施の形態のメモリ再配置モジュール131は、ジョブの終了時に、図28に示す処理を行う。または、メモリ再配置モジュール131は、定期的に(例えば、10秒毎に)、図28に示す処理を行う。
また、図28〜図35の例は、実行中のジョブ1〜ジョブ3のうち、ジョブ1、ジョブ2がNUMAポリシーを満たしていない場合を例示する。また、図28〜図35の例は、第1のノードnd1で実行中のジョブ1が使用しているメモリmmの再配置先のノードndを、ノードnd2、ノードnd3から選択する場合を例示する。
[メモリ再配置モジュールの処理]
図28は、図24、図25に示す、第2の実施の形態における、メモリ再配置モジュール131の処理の詳細を説明するフローチャート図である。
S81:メモリ再配置モジュール131は、NUMAポリシーを満たしていないジョブのリスト「JLIST」を作成する。工程S81の処理の詳細は、図29のフローチャート図で後述する。リスト「JLIST」は、ジョブの識別情報のリスト「jobid1,jobid2,...,jobidx」を有する。本実施の形態におけるリスト「JLIST」は、例えば、ジョブ1、ジョブ2を有する。
S82:メモリ再配置モジュール131は、工程S81で生成したリスト「JLIST」が空ではないか否かを判定する。
S83:空ではない場合(S82のYes)、メモリ再配置モジュール131は、リスト「JLIST」内の各ジョブを対象として、工程S84〜S89の処理を繰り返す。
一方、工程S81で生成したリスト「JLIST」が空の場合(S82のNo)、全てのジョブがNUMAポリシーを満たしていることを示す。したがって、メモリ再配置モジュール131は、再配置を行うことなく、処理を終了する。
S84:メモリ再配置モジュール131は、リスト「JLIST」から1つのジョブを選択して、ジョブが使用しているメモリページmpの組を獲得可能なノードndを抽出し、ノードndのリスト「NLIST」を作成する。工程S84の処理の詳細は、図30のフローチャート図で後述する。
本実施の形態では、メモリ再配置モジュール131は、例えば、リスト「JLIST」からジョブ1を選択する。また、本実施の形態におけるリスト「NLIST」は、ノードnd2、ノードnd3を有する。
S85:メモリ再配置モジュール131は、工程S84で生成したリスト「NLIST」が空ではないか否かを判定する。空の場合(S85のNo)、メモリ再配置モジュール131は、選択したジョブの再配置を行わない。
S86:空ではない場合(S85のYes)、メモリ再配置モジュール131は、リスト「JLIST」から選択したジョブ「jobid」が使用するメモリページmpを、リスト「NLIST」のノードndに再配置した場合のスラッシングの発生度合いを示す、評価値「eval」を算出する。つまり、評価値「eval」(判定値)は、再配置に伴うスラッシングの発生による、ジョブの実行の性能に対する影響度合いを示す。
したがって、評価値「eval」がより小さい場合に、再配置先のノードndが、非使用状態の、インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応するメモリページmpを獲得可能な度合いがより高いことを示す。したがって、メモリ再配置モジュール131は、評価値「eval」がより小さいノードndを、再配置先のノード「NIDz」ndとして検出する。工程S86の処理の詳細は、図31のフローチャート図で後述する。
メモリ再配置モジュール131は、例えば、ジョブ1が使用しているメモリページmpを、ノードnd2、ノードnd3に再配置した場合における評価値を算出する。この例では、ノードnd3に再配置した場合の評価値「eval」がより小さい場合を例示する。
S87:メモリ再配置モジュール131は、選択したジョブ「jobid」の再配置前のノード「NIDj」ndに再配置することによって、評価値「eval'」が向上するジョブ「jobuid'」を検出する。工程S87の処理の詳細は、図32のフローチャート図で後述する。
即ち、ジョブ1をノードnd3に移行した場合に、ジョブ1の再配置元のノードnd1の非使用状態のメモリページmpが増加する。したがって、メモリ再配置モジュール131は、NUMAポリシーを満たしていないジョブのうち、再配置元のノードnd1に移行することによって、NUMAポリシーを満たすジョブを検出する。このとき、メモリ再配置モジュール131は、複数のジョブから、スラッシングの発生を抑制可能なジョブを選択する。
このように、メモリ再配置モジュール131は、他のジョブ(ジョブ2)がアクセスするデータが記憶された第3のノードnd3の第3の複数のメモリページmpのアドレスに対応するキャッシュメモリの、別のインデックス値の組を取得する。
そして、メモリ再配置モジュール131は、移行後に、第1のノードnd1が、別のインデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、非使用状態の第3の複数のメモリページmpを有するか否かを判定する。非使用状態の第3の複数のメモリページmpを有する場合に、メモリ再配置モジュール131は、別のデータを第3の複数のメモリページmpに移動する。
本実施の形態では、例えば、ジョブ1の再配置元のノードnd1に再配置することによって、評価値がより小さくなるジョブとして、ジョブ2を検出する。これにより、メモリ再配置モジュール131は、スラッシングの発生を抑制しながら、再配置元のノードnd1に、メモリページmpを再配置可能なジョブを検出可能になる。このように、本実施の形態における並列計算機ndによると、NUMAポリシー等に基づくジョブのマイグレーションの際に、マイグレーションに伴うスラッシングの発生を抑制可能になる。
S88:工程S86、及び、工程S87の評価値の合計「eval+eval'」が前回の評価値の合計よりも小さい場合、メモリ再配置モジュール131は、再配置の対象のジョブと、再配置先のノードndを確定する。工程S88の処理の詳細は、図33のフローチャート図で後述する。つまり、本実施の形態では、ジョブ1の再配置先のノードndとしてノードnd3が確定するとともに、ジョブ2の再配置先のノードndとしてノードnd1が確定する。
S89:メモリ再配置モジュール131は、工程S81で生成したリスト「JLIST」の全てのジョブを選択したか否かを判定する。選択していない場合(S89のNo)、メモリ再配置モジュール131は、リスト「JLIST」内の別のジョブを選択し、工程S84〜S89の処理を行う。
これにより、実行中のジョブをマイグレーションする際に、スラッシングの発生を最も抑制可能なジョブの再配置先のノードnd、及び、当該ジョブの再配置元のノードndにマイグレーションした場合にスラッシングの発生を最も抑制可能なジョブを検出可能になる。これにより、NUMAポリシー等の目的により、実行中のジョブのマイグレーションに伴う、ジョブの性能低下を抑制することが可能になる。
S90:すべてのジョブを選択した場合(S89のYes)、メモリ再配置モジュール131は、リスト「JLIST」の各ジョブを対象とするループを終了する。
S91:メモリ再配置モジュール131は、工程S89で確定した、再配置対象のジョブ、及び、再配置先のノードndの情報に基づいて、ジョブの再配置を実施する。工程S91の処理の詳細は、図34のフローチャート図で後述する。
[図28の工程S81]
図29は、図28の工程S81の処理の詳細を説明するフローチャート図である。図28のフローチャート図で前述したとおり、メモリ再配置モジュール131は、NUMAポリシーを満たしていないジョブのリスト「JLIST」を作成する(図28のS81)。本実施の形態では、メモリ再配置モジュール131は、ジョブ1〜ジョブ3をリスト「JLIST」に追加する。
S101:メモリ再配置モジュール131は、NUMA型の情報処理システムの各ノードで動作するジョブすべてを対象として、工程S102〜S104の処理を行う。
S102:メモリ再配置モジュール131は、1つのジョブを選択し、選択したジョブがNUMAポリシーを満たしているか否かを判定する。メモリ再配置モジュール131は、実行中のジョブに指定されたNUMAポリシーを取得可能である。
S103:NUMAポリシーを満たしていない場合(S102のNo)、メモリ再配置モジュール131は、リスト「JLIST」に、選択したジョブの識別情報を追加する。一方、NUMAポリシーを満たしている場合(S102のYes)、別のジョブを選択し、工程S102〜S104の処理を行う。
S104:メモリ再配置モジュール131は、NUMA型の情報処理システムの各ノードで動作するジョブすべてを選択し、判定処理を行ったか否かを判定する。
S105:ジョブすべてを選択し判定処理を行った場合(S104のYes)、メモリ再配置モジュール131は、ループ終了を終了する。一方、未選択のジョブがある場合(S104のNo)、メモリ再配置モジュール131は、別のジョブを選択し、工程S102〜S104の処理を行う。
[図28の工程S84]
図30は、図28の工程S84の処理の詳細を説明するフローチャート図である。図28のフローチャート図で前述したとおり、メモリ再配置モジュール131は、リスト「JLIST」から1つのジョブを選択し、ジョブが使用しているメモリページの組を獲得可能なノードを抽出し、ノードのリスト「NLIST」を作成する(図28のS84)。本実施の形態では、メモリ再配置モジュール131は、例えば、ジョブ1を選択し、ノードnd2、ノードnd3をリスト「NLIST」に追加する。
S111:メモリ再配置モジュール131は、全てのノード(図23のノードnd2〜ndx)を対象として、工程S112〜S116の処理を行う。
S112:メモリ再配置モジュール131は、選択したノードの、メモリ使用状態情報124(図27)を参照し、非使用状態のメモリページmpのサイズ「tmp1」(空き状態のサイズ)を算出する。
S113:メモリ再配置モジュール131は、選択したジョブのジョブ使用メモリ情報122(図26)を参照し、選択したジョブが、再配置前のノードndで使用しているメモリページmpの合計サイズ「tmp2」を算出する。
S114:メモリ再配置モジュール131は、工程S113で算出したジョブが使用中のサイズ「tmp2」が、工程S112で算出した選択したノードndの空き状態のサイズ「tmp1」以下であるか否かを判定する。使用中のサイズ「tmp2」が空き状態のサイズ「tmp1」以下である場合(S114のYes)、選択したジョブを、選択したノードndに移行可能であることを示す。
S115:使用中のサイズ「tmp2」が空き状態のサイズ「tmp1」以下である場合(S114のYes)、メモリ再配置モジュール131は、リスト「NLIST」に、選択したノードndの識別情報を追加する。
一方、使用中のサイズ「tmp2」が空き状態のサイズ「tmp1」より大きい場合(S114のNo)、メモリ再配置モジュール131は、選択したノードndの識別情報をリスト「NLIST」に追加せずに、別のノードndを選択し、工程S112〜S116の処理を行う。
S116:メモリ再配置モジュール131は、全てのノードndを対象として、工程S112〜S115の処理を行ったか否かを判定する。
S117:全てのノードndを対象として処理を完了した場合(S116のYes)、メモリ再配置モジュール131はループを終了し、工程S84の処理を終了する。一方、未選択のノードがある場合、メモリ再配置モジュール131は、別のノードndを選択し、工程S112〜S115の処理を行う。
[図28の工程S86]
図31は、図28の工程S86の処理の詳細を説明するフローチャート図である。図28のフローチャート図で前述したとおり、メモリ再配置モジュール131は、リスト「JLIST」から選択したジョブ「jobid」を、リスト「NLIST」の各ノードndに再配置した際の評価値「eval」を算出する。また、メモリ再配置モジュール131は、評価値が小さいノードndを、再配置先のノード「NIDz」ndとして検出する(図28のS84)。
本実施の形態のメモリ再配置モジュール131は、ジョブ1をノードn2、ノードn3に再配置した場合の評価値をそれぞれ算出する。そして、メモリ再配置モジュール131は、評価値がより小さい、ノードn3を再配置先のノードndとして検出する。
S121:メモリ再配置モジュール131は、リスト「NLIST」内の各ノードndを対象として、工程S122〜S125の処理を行う。
S122:メモリ再配置モジュール131は、選択したジョブ「jobid」と、リスト「NLIST」から選択したノードndを指定して、評価値算出ルーチン134を呼び出す。メモリ再配置モジュール131は、評価値算出ルーチン134が算出した評価値を、変数「tmp3」にセットする。評価値算出ルーチン134の処理の詳細は、図35にしたがって後述する。
S123:メモリ再配置モジュール131は、前回算出した評価値「eval」が、工程S122で算出した評価値「tmp3」より大きいか否かを判定する。
S124:評価値「eval」が評価値「tmp3」より大きい場合(S123のYes)、選択したジョブ「jobid」のメモリページmpを選択したノード「nid」ndに再配置する場合に、スラッシングの発生をより抑制可能なメモリページmpを獲得できることを示す。したがって、メモリ再配置モジュール131は、変数「eval」に、新たに算出した評価値「tmp3」をセットする。また、メモリ再配置モジュール131は、再配置先のノード「NIDz」ndに、選択したノード「nid」をセットする。
一方、評価値「eval」が評価値「tmp3」以下の場合(S123のNo)、メモリ再配置モジュール131は、リスト「NLIST」から別のノードndを選択し、工程S122、S123の処理を行う。
S125:メモリ再配置モジュール131は、リスト「NLIST」内の各ノードndを対象として、工程S122〜S125の処理を行ったか否かを判定する。
S126:全てのノードndを対象として処理を完了した場合、メモリ再配置モジュール131は、ループ終了し、工程S84の処理を終了する。一方、未選択のノードndがある場合、メモリ再配置モジュール131は、別のノードを選択し、工程S122〜S125の処理を行う。
[図28の工程S87]
図32は、図28の工程S87の処理の詳細を説明するフローチャート図である。図28のフローチャート図で前述したとおり、メモリ再配置モジュール131は、選択したジョブ「jobid」の再配置前のノード「NIDj」ndに移行することによって、評価値「eval'」が向上するジョブ「jobuid'」を検出する(図28のS87)。
前述したとおり、メモリ再配置モジュール131は、ジョブ2、ジョブ3から、ジョブ1の再配置元のノードnd1に移行した場合に、スラッシングの発生度合いがより少ないジョブ2を選択する。このとき、例えば、ジョブ2、ジョブ3は、ジョブ1に移行することによって、NUMAポリシーを満たす。
S131:メモリ再配置モジュール131は、選択したジョブ「jobid」のメモリページmpが再配置先のノード「NIDz」ndに再配置された場合における、再配置元のノードndのメモリ使用状態情報124を算出する。
S132:メモリ再配置モジュール131は、リスト「JLIST」のジョブ「jobid」を除く各ジョブを対象として、工程S133〜S136の処理を行う。
S133:メモリ再配置モジュール131は、メモリ使用状態情報124に基づいて、リスト「JLIST」から選択したジョブ「jobid_tmp」と再配置元のノード「NIDj」を指定し、評価値算出ルーチン134を呼び出す。メモリ再配置モジュール131は、評価値算出ルーチン134が算出した評価値を、変数「tmp4」にセットする。評価値算出ルーチン134の処理の詳細は、図35にしたがって後述する。
S134:メモリ再配置モジュール131は、前回算出した評価値「eval'」が、工程S133で算出した評価値「tmp4」より大きいか否かを判定する。前回算出した評価値「eval'」の初期値は、例えば、値「200」である。
S135:評価値「tmp4」が評価値「eval'」より大きい場合(S134のYes)、選択したジョブ「jobid_tmp」のメモリページmpをノード「NIDj」に再配置する場合に、スラッシングの発生をより抑制可能なメモリページmpを獲得できることを示す。したがって、メモリ再配置モジュール131は、変数「eval」に、新たに算出した評価値「tmp4」をセットする。また、メモリ再配置モジュール131は、新たな再配置対象のジョブ「jobid'」に、選択したジョブ「jobid_tmp」をセットする。
一方、評価値「eval'」が評価値「tmp4」以下の場合(S134のNo)、メモリ再配置モジュール131は、リスト「JLIST」から別のジョブを選択し、工程S133、S134の処理を行う。本実施の形態において、ジョブ2を再配置元のノードnd1に移行した場合の評価値「eval'」は、ジョブ3を再配置元のノードnd1に移行した場合の評価値「eval'」より小さい。
S136:メモリ再配置モジュール131は、リスト「JLIST」のジョブ「jobid」を除く各ジョブを対象として、工程S133〜S136の処理を行ったか否かを判定する。
S137:全てのジョブを対象として処理を完了した場合、メモリ再配置モジュール131は、ループ終了し、工程S87の処理を終了する。一方、未選択のジョブがある場合、メモリ再配置モジュール131は、別のジョブを選択し、工程S133〜S135の処理を行う。
[図28の工程S88]
図33は、図28の工程S88の処理の詳細を説明するフローチャート図である。図28のフローチャート図で前述したとおり、メモリ再配置モジュール131は、再配置の対象のジョブと、再配置先のノードを確定する(図28のS88)。
S141:メモリ再配置モジュール131は、図31のフローチャート図にしたがって算出した評価値「eval」と、図32のフローチャート図にしたがって算出した評価値「eval'」とを加算して、総合評価値「EVALjobid」を算出する。
S142:メモリ再配置モジュール131は、前回の総合評価値「EVAL」が、工程S141で算出した総合評価値「EVALjobid」より大きいか否かを判定する。前回の総合評価値「EVAL」が、今回の総合評価値「EVALjobid」より大きい場合、ジョブのマイグレーションの際にスラッシングの発生をより抑制可能なことを示す。
S143:前回の総合評価値「EVAL」が、総合評価値「EVALjobid」より大きい場合(S142のYes)、メモリ再配置モジュール131は、次の処理を行う。メモリ再配置モジュール131は、第1の再配置対象のジョブ「jobid1」にジョブ「jobid」(この例ではジョブ1)を設置し、その再配置先のノード「NID1」にノード「NIDz」(この例ではノードnd3)をセットする。第2の再配置対象のジョブ「jobid2」にジョブ「jobid'」(この例ではジョブ2)を、その再配置先のノード「NID2」にノード「NIDj」(この例ではノードnd1)をセットする。
一方、前回の総合評価値「EVAL」が、総合評価値「EVALjobid」以下の場合(S142のNo)、メモリ再配置モジュール131は工程S143の処理を行わない。
[図28の工程S91]
図34は、図28の工程S91の処理の詳細を説明するフローチャート図である。図28のフローチャート図で前述したとおり、メモリ再配置モジュール131は、再配置対象のジョブ、及び、再配置先のノードの情報に基づいて、メモリページmpの再配置の実施する(図28のS91)。
S151:メモリ再配置モジュール131は、第1の実施の形態の図16のフローチャート図の処理を行い、第1の再配置対象のジョブ「jobid1」が使用するメモリページを、再配置先のノード「NID1」に再配置する。
即ち、メモリ再配置モジュール131は、ジョブ1が使用しているメモリページmpに対応するインデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、ノードnd3の、非使用状態のメモリページmpを獲得する。また、メモリ再配置モジュール131は、獲得したノードnd3のメモリページmpに、ジョブ1が使用しているメモリページmpに記憶されたデータを移動する。
S152:メモリ再配置モジュール131は、第1の実施の形態の図16のフローチャート図の処理を行い、第2の再配置対象のジョブ「jobid2」が使用するメモリページを、再配置先のノード「NID2」に再配置する。
即ち、メモリ再配置モジュール131は、ジョブ2が使用しているメモリページmpに対応するインデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、ノードnd1の、非使用状態のメモリページmpを獲得する。また、メモリ再配置モジュール131は、獲得したノードnd1のメモリページmpに、ジョブ2が使用しているメモリページmpに記憶されたデータを移動する。
[評価値算出ルーチン]
図35は、評価値算出ルーチン134の処理の詳細を説明するフローチャート図である。
S161:評価値算出ルーチン134は、条件1(k=0)(k≠0)を満たすインデックス値に対応する、再配置対象のノードndのメモリページmpが全て非使用状態であるか否かを判定する。条件1を満たすインデックス値は、第1の実施の形態で説明したとおりである。
S162:全て非使用状態である場合(S161のYes)、評価値算出ルーチン134は、値「1」を評価値として出力する。
S163:一方、全て非使用状態ではない場合(S161のNo)、評価値算出ルーチン134は、条件2(k=0)(k≠0)を満たすメモリページmpが全て非使用状態であるか否かを判定する。条件2を満たすインデックス値は、第1の実施の形態で説明したとおりである。
S164:全て非使用状態である場合(S163のYes)、評価値算出ルーチン134は、値「2」を評価値として出力する。
S165:工程S163の判定がNoの場合、評価値算出ルーチン134は、条件1を満たすメモリページmpが、非使用状態、または、一時ファイルとして一時的な使用状態のいずれであるかを判定する。一時的な使用状態は、例えば、キャッシュを目的としてメモリページmpを使用している状態を示す。
S166:工程S165の判定がYesの場合、評価値算出ルーチン134は、値「3」を評価値として出力する。
S167:工程S165の判定がNoの場合、評価値算出ルーチン134は、条件2を満たすメモリページmpが、非使用状態、または、一時的な使用状態のいずれであるかを判定する。
S168:工程S167の判定がYesの場合、評価値算出ルーチン134は、値「4」を評価値として出力する。
S169:工程S167の判定がNoの場合、評価値算出ルーチン134は、条件1を満たすメモリページmpが、非使用状態、または、一時的な使用状態、または、使用状態であるが所定の期間アクセスしていない使用状態のいずれであるかを判定する。
S170:工程S169の判定がYesの場合、評価値算出ルーチン134は、値「10」を評価値として出力する。
S171:工程S169の判定がNoの場合、評価値算出ルーチン134は、条件2を満たすメモリページmpが、非使用状態、または、一時的な使用状態、または、使用状態であるが所定の期間アクセスしていない使用状態のいずれであるかを判定する。
S172:工程S171の判定がYesの場合、評価値算出ルーチン134は、値「15」を評価値として出力する。
S173:工程S171の判定がNoの場合、評価値算出ルーチン134は、条件2を満たすメモリページが、工程S171に示した状態に加え、オペレーションシステムが使用中の状態のいずれであるかを判定する。
S174:工程S173の判定がYesの場合、評価値算出ルーチン134は、値「30」を評価値として出力する。
S175:工程S173の判定がNoの場合、評価値算出ルーチン134は、値「100」を評価値として出力する。
このように、評価値算出ルーチン134は、候補ノードndの複数のメモリページmpの使用状況が非使用状態を示す場合に(S161のYes、S163のYes)、第1の判定値(値「1」「2」)を算出する。また、評価値算出ルーチン134は、さらに、使用状況が、所定期間アクセスしていない使用状態を示す第1の状態のメモリ領域を含む場合に(S169のYes、S171のYes)、第1の判定値より大きい第2の判定値(値「10」「15」)を算出する。
評価値算出ルーチン134は、さらに、一時使用を示す第2の状態のメモリページmpを含む場合に(S165のYes、S167のYes)、第2の判定値より小さく第1の判定値より大きい第3の判定値(値「3」「4」)を算出する。評価値算出ルーチン134は、さらに、オペレーションシステムによる使用を示す第3の状態のメモリページmpを含む場合に(S173のYes)、第2の判定値より大きい第4の判定値(値「30」)を算出する。
これにより、評価値算出ルーチン134は、同一または相対位置関係を有するインデックス値の組に対応する、再配置対象のノードndのメモリページmpの使用状態に基づいて、スラッシングの発生度合いを示す評価値(判定値)を算出する。これにより、メモリ再配置モジュール131は、評価値に基づいて、複数の候補のノードndから、マイグレーション後に、スラッシングの発生をより抑制可能なノードndを選択可能になる。
[他の実施の形態]
第1、第2の実施の形態では、並列計算機ndが、実行中のジョブが使用しているメモリページmpを、他のノードndに移行する場合を例示した。ただし、本実施の形態におけるメモリの再配置処理は、あるノードndで実行しているジョブが使用中のメモリページmpを、同一のノードndの別のメモリページmpに移動する場合についても有効である。
以上の実施の形態をまとめると、次の付記のとおりである。
(付記1)
複数のメモリ領域を有するメモリ及びキャッシュメモリを、それぞれ有する第1、第2のノードと、
第1のノードが実行中のジョブを第2のノードに移行して前記ジョブの実行を継続する際に、前記ジョブがアクセスするデータが記憶された前記第1のノードの第1の複数のメモリ領域のアドレスに対応する、キャッシュメモリのインデックス値の組を取得し、
前記第2のノードが、前記インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、非使用状態の第2の複数のメモリ領域を有するか否かを判定し、
前記非使用状態の第2の複数のメモリ領域を有する場合に、前記データを前記第2の複数のメモリ領域に移動する処理部と、を有する、
並列計算機。
(付記2)
付記1において、
前記相対位置関係を有するインデックス値の組は、取得した前記インデックス値の組を一律にシフトしたインデックス値の組を示す、
並列計算機。
(付記3)
付記1または2において、
前記処理部は、前記非使用状態の第2の複数のメモリ領域を有しない場合に、前記第2のノードとは異なるノードを対象として前記取得及び前記判定を行う、
並列計算機。
(付記4)
付記1乃至3のいずれかにおいて、
前記処理部は、さらに、
前記第1のノードが実行中のジョブを移行する対象の候補ノードが複数ある場合に、前記複数の候補ノードのそれぞれについて、前記インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、前記候補ノードの複数のメモリ領域の使用状況に基づいて、移行後のスラッシングの発生度合いを示す判定値を算出し、
前記判定値がより小さい候補ノードを、前記第2のノードとして、前記データを前記第2の複数のメモリ領域に移動する、
並列計算機。
(付記5)
付記4において、
前記処理部は、前記候補ノードの複数のメモリ領域の使用状況が非使用状態を示す場合に第1の判定値を算出し、前記候補ノードの複数のメモリ領域の使用状況が、所定期間アクセスしていない使用状態を示す第1の状態のメモリ領域を含む場合に、前記第1の判定値より大きい第2の判定値を算出する、
並列計算機。
(付記6)
付記5において、
前記処理部は、さらに、前記候補ノードの複数のメモリ領域の使用状況が、一時使用を示す第2の状態のメモリ領域を含む場合に、前記第2の判定値より小さく前記第1の判定値より大きい第3の判定値を算出する、
並列計算機。
(付記7)
付記6において、
前記処理部は、さらに、前記候補ノードの複数のメモリ領域の使用状況が、オペレーションシステムによる使用を示す第3の状態のメモリ領域を含む場合に、前記第2の判定値より大きい第4の判定値を算出する、
並列計算機。
(付記8)
付記4乃至7のいずれかにおいて、
前記処理部は、さらに、
他のジョブがアクセスするデータが記憶された第3のノードの第3の複数のメモリ領域のアドレスに対応するキャッシュメモリの、別のインデックス値の組を取得し、
前記データの移動後に、前記第1のノードが、前記別のインデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、非使用状態の第3の複数のメモリ領域を有するか否かを判定し、
前記非使用状態の第3の複数のメモリ領域を有する場合に、前記別のデータを前記第3の複数のメモリ領域に移動する、
並列計算機。
(付記9)
第1のノードが実行中のジョブを第2のノードに移行して前記ジョブの実行を継続する際に、前記ジョブがアクセスするデータが記憶された前記第1のノードの第1の複数のメモリ領域のアドレスに対応する、キャッシュメモリのインデックス値の組を取得し、
前記第2のノードが、前記インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、非使用状態の第2の複数のメモリ領域を有するか否かを判定し、
前記非使用状態の第2の複数のメモリ領域を有する場合に、前記データを前記第2の複数のメモリ領域に移動する、
処理をコンピュータに実行させるマイグレーションプログラム。
(付記10)
付記9において、
前記相対位置関係を有するインデックス値の組は、取得した前記インデックス値の組を一律にシフトしたインデックス値の組を示す、
マイグレーションプログラム。
(付記11)
付記9または10において、
前記取得及び判定は、前記非使用状態の第2の複数のメモリ領域を有しない場合に、前記第2のノードとは異なるノードを対象として前記取得及び判定を行う、
マイグレーションプログラム。
(付記12)
付記9乃至11のいずれかにおいて、さらに、
前記第1のノードが実行中のジョブを移行する対象の候補ノードが複数ある場合に、前記複数の候補ノードのそれぞれについて、前記インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、前記候補ノードの複数のメモリ領域の使用状況に基づいて、移行後のスラッシングの発生度合いを示す判定値を算出し、
前記移動は、前記判定値がより小さい候補ノードを、前記第2のノードとして、前記データを前記第2の複数のメモリ領域に移動する、
マイグレーションプログラム。
(付記13)
付記12において、
前記算出は、前記候補ノードの複数のメモリ領域の使用状況が非使用状態を示す場合に第1の判定値を算出し、前記候補ノードの複数のメモリ領域の使用状況が、所定期間アクセスしていない使用状態を示す第1の状態のメモリ領域を含む場合に、前記第1の判定値より大きい第2の判定値を算出する、
マイグレーションプログラム。
(付記14)
付記13において、
前記算出は、さらに、前記候補ノードの複数のメモリ領域の使用状況が、一時使用を示す第2の状態のメモリ領域を含む場合に、前記第2の判定値より小さく前記第1の判定値より大きい第3の判定値を算出する、
マイグレーションプログラム。
(付記15)
処理部が、第1のノードが実行中のジョブを第2のノードに移行して前記ジョブの実行を継続する際に、前記ジョブがアクセスするデータが記憶された前記第1のノードの第1の複数のメモリ領域のアドレスに対応する、キャッシュメモリのインデックス値の組を取得し、
処理部が、前記第2のノードが、前記インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、非使用状態の第2の複数のメモリ領域を有するか否かを判定し、
処理部が、前記非使用状態の第2の複数のメモリ領域を有する場合に、前記データを前記第2の複数のメモリ領域に移動する、
マイグレーション方法。
(付記16)
付記15において、
前記相対位置関係を有するインデックス値の組は、取得した前記インデックス値の組を一律にシフトしたインデックス値の組を示す、
マイグレーション方法。
(付記17)
付記15または16において、
前記取得及び判定は、前記非使用状態の第2の複数のメモリ領域を有しない場合に、前記第2のノードとは異なるノードを対象として前記取得及び判定を行う、
マイグレーション方法。
(付記18)
付記15乃至17のいずれかにおいて、さらに、
処理部が、前記第1のノードが実行中のジョブを移行する対象の候補ノードが複数ある場合に、前記複数の候補ノードのそれぞれについて、前記インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、前記候補ノードの複数のメモリ領域の使用状況に基づいて、移行後のスラッシングの発生度合いを示す判定値を算出し、
前記移動は、前記判定値がより小さい候補ノードを、前記第2のノードとして、前記データを前記第2の複数のメモリ領域に移動する、
マイグレーション方法。
(付記19)
付記18において、
前記算出は、前記候補ノードの複数のメモリ領域の使用状況が非使用状態を示す場合に第1の判定値を算出し、前記候補ノードの複数のメモリ領域の使用状況が、所定期間アクセスしていない使用状態を示す第1の状態のメモリ領域を含む場合に、前記第1の判定値より大きい第2の判定値を算出する、
マイグレーション方法。
(付記20)
付記19において、
前記算出は、さらに、前記候補ノードの複数のメモリ領域の使用状況が、一時使用を示す第2の状態のメモリ領域を含む場合に、前記第2の判定値より小さく前記第1の判定値より大きい第3の判定値を算出する、
マイグレーション方法。
nd:ノード、cp:CPUコア、mm:メモリ、102:メモリユニット、103:キャッシュメモリ、104:通信インタフェース部、mp:メモリページ、pp:プログラム領域、120:オペレーションシステム、121:再配置プログラム、123:ジョブプログラム、131:メモリ再配置モジュール

Claims (6)

  1. 複数のメモリ領域を有するメモリ及びキャッシュメモリを、それぞれ有する第1、第2のノードと、
    第1のノードが実行中のジョブを第2のノードに移行して前記ジョブの実行を継続する際に、前記ジョブがアクセスするデータが記憶された前記第1のノードの第1の複数のメモリ領域のアドレスに対応する、前記キャッシュメモリのインデックス値の組を取得し、
    前記第2のノードが、前記インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、非使用状態の第2の複数のメモリ領域を有するか否かを判定し、
    前記非使用状態の第2の複数のメモリ領域を有する場合に、前記データを前記第2の複数のメモリ領域に移動する処理部と、を有する、
    並列計算機。
  2. 請求項1において、
    前記相対位置関係を有するインデックス値の組は、取得した前記インデックス値の組を一律にシフトしたインデックス値の組を示す、
    並列計算機。
  3. 請求項1または2において、
    前記処理部は、前記非使用状態の第2の複数のメモリ領域を有しない場合に、前記第2のノードとは異なるノードを対象として前記取得及び前記判定を行う、
    並列計算機。
  4. 請求項1乃至3のいずれかにおいて、
    前記処理部は、さらに、
    前記第1のノードが実行中のジョブを移行する対象の候補ノードが複数ある場合に、前記複数の候補ノードのそれぞれについて、前記インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、前記候補ノードの複数のメモリ領域の使用状況に基づいて、移行後のスラッシングの発生度合いを示す判定値を算出し、
    前記判定値がより小さい候補ノードを、前記第2のノードとして、前記データを前記第2の複数のメモリ領域に移動する、
    並列計算機。
  5. 第1のノードが実行中のジョブを第2のノードに移行して前記ジョブの実行を継続する際に、前記ジョブがアクセスするデータが記憶された前記第1のノードの第1の複数のメモリ領域のアドレスに対応する、キャッシュメモリのインデックス値の組を取得し、
    前記第2のノードが、前記インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、非使用状態の第2の複数のメモリ領域を有するか否かを判定し、
    前記非使用状態の第2の複数のメモリ領域を有する場合に、前記データを前記第2の複数のメモリ領域に移動する、
    処理をコンピュータに実行させるマイグレーションプログラム。
  6. 処理部が、第1のノードが実行中のジョブを第2のノードに移行して前記ジョブの実行を継続する際に、前記ジョブがアクセスするデータが記憶された前記第1のノードの第1の複数のメモリ領域のアドレスに対応する、キャッシュメモリのインデックス値の組を取得し、
    処理部が、前記第2のノードが、前記インデックス値の組と同一または相対位置関係を有するインデックス値の組に対応する、非使用状態の第2の複数のメモリ領域を有するか否かを判定し、
    処理部が、前記非使用状態の第2の複数のメモリ領域を有する場合に、前記データを前記第2の複数のメモリ領域に移動する、
    マイグレーション方法。
JP2015113164A 2015-06-03 2015-06-03 並列計算機、マイグレーションプログラム、及び、マイグレーション方法 Active JP6459784B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015113164A JP6459784B2 (ja) 2015-06-03 2015-06-03 並列計算機、マイグレーションプログラム、及び、マイグレーション方法
US15/143,654 US10019164B2 (en) 2015-06-03 2016-05-02 Parallel computer, migration program and migration method
EP16170797.1A EP3101548A1 (en) 2015-06-03 2016-05-23 Parallel computer, migration program and migration method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015113164A JP6459784B2 (ja) 2015-06-03 2015-06-03 並列計算機、マイグレーションプログラム、及び、マイグレーション方法

Publications (2)

Publication Number Publication Date
JP2016224855A true JP2016224855A (ja) 2016-12-28
JP6459784B2 JP6459784B2 (ja) 2019-01-30

Family

ID=56068765

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015113164A Active JP6459784B2 (ja) 2015-06-03 2015-06-03 並列計算機、マイグレーションプログラム、及び、マイグレーション方法

Country Status (3)

Country Link
US (1) US10019164B2 (ja)
EP (1) EP3101548A1 (ja)
JP (1) JP6459784B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200142735A1 (en) * 2019-09-28 2020-05-07 Intel Corporation Methods and apparatus to offload and onload workloads in an edge environment
WO2021139726A1 (zh) * 2020-01-07 2021-07-15 中科寒武纪科技股份有限公司 任务迁移的方法、装置、计算机设备及可读存储介质
CN114398329A (zh) * 2021-12-15 2022-04-26 西安统信软件技术有限公司 一种基于文件缓存的调度方法、装置与计算设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009075177A1 (ja) * 2007-12-12 2009-06-18 Nec Corporation メモリ再配置システムおよびメモリ再配置方法
US20140007129A1 (en) * 2011-09-01 2014-01-02 Huawei Technologies Co., Ltd. Method, apparatus and system for resource migration

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5185861A (en) * 1991-08-19 1993-02-09 Sequent Computer Systems, Inc. Cache affinity scheduler
US5317738A (en) 1992-02-18 1994-05-31 Ncr Corporation Process affinity scheduling method and apparatus
JPH0877068A (ja) 1994-09-06 1996-03-22 Toshiba Corp マルチプロセッサシステム及びメモリアロケーション最適化方法
JP3266029B2 (ja) 1997-01-23 2002-03-18 日本電気株式会社 マルチプロセッサシステムにおけるディスパッチング方式、ディスパッチング方法およびディスパッチングプログラムを記録した記録媒体
US6243788B1 (en) 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
JP2000066899A (ja) 1998-08-19 2000-03-03 Nec Corp 実行オブジェクト最適化装置
US6871219B2 (en) * 2001-03-07 2005-03-22 Sun Microsystems, Inc. Dynamic memory placement policies for NUMA architecture
US6654859B2 (en) * 2001-07-26 2003-11-25 International Business Machines Corporation NUMA page selection using coloring
US8799581B2 (en) 2007-01-05 2014-08-05 International Business Machines Corporation Cache coherence monitoring and feedback
JP5164505B2 (ja) 2007-10-01 2013-03-21 三菱電機株式会社 キャッシュメモリ制御装置
KR101697937B1 (ko) 2010-01-08 2017-02-01 삼성전자주식회사 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템
US8555019B2 (en) * 2010-09-08 2013-10-08 International Business Machines Corporation Using a migration cache to cache tracks during migration
CN104040500B (zh) * 2011-11-15 2018-03-30 英特尔公司 基于线程相似性的调度线程执行
US8930947B1 (en) * 2011-12-30 2015-01-06 Emc Corporation System and method for live migration of a virtual machine with dedicated cache
KR101753866B1 (ko) * 2013-05-10 2017-07-04 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 메모리 액세스의 가속

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009075177A1 (ja) * 2007-12-12 2009-06-18 Nec Corporation メモリ再配置システムおよびメモリ再配置方法
US20140007129A1 (en) * 2011-09-01 2014-01-02 Huawei Technologies Co., Ltd. Method, apparatus and system for resource migration
JP2014522033A (ja) * 2011-09-01 2014-08-28 華為技術有限公司 リソースマイグレーションのための方法、装置及びシステム

Also Published As

Publication number Publication date
EP3101548A1 (en) 2016-12-07
JP6459784B2 (ja) 2019-01-30
US20160357442A1 (en) 2016-12-08
US10019164B2 (en) 2018-07-10

Similar Documents

Publication Publication Date Title
US9959337B2 (en) Independent data processing environments within a big data cluster system
US10467051B2 (en) Support of non-trivial scheduling policies along with topological properties
JP5466568B2 (ja) 資源管理方法、資源管理プログラム、および、資源管理装置
US8656397B2 (en) Migrating groups of threads across NUMA nodes based on remote page access frequency
CN112887437B (zh) 区块链交易处理方法、区块链节点和区块链系统
JP6459784B2 (ja) 並列計算機、マイグレーションプログラム、及び、マイグレーション方法
JP6477266B2 (ja) ダンプ管理装置、ダンプ管理プログラム及びダンプ管理方法
JP2019133391A (ja) メモリシステムおよび制御方法
EP4184324A1 (en) Efficient accelerator offload in multi-accelerator framework
JP2018139064A (ja) 仮想計算機システムおよびそのリソース割当て方法
JP2018147301A (ja) 計算機システム及び処理の割当方法
CN111506400A (zh) 计算资源分配系统、方法、装置和计算机设备
US11023374B2 (en) Apparatus and method and computer program product for controlling data access
CN116501487A (zh) 虚拟机上的任务执行方法、装置、存储介质和电子设备
JP6156379B2 (ja) スケジューリング装置、及び、スケジューリング方法
JP6519228B2 (ja) データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法
CN115756838A (zh) 内存释放、内存恢复方法、装置、计算机设备及存储介质
KR20160099365A (ko) 가상머신 마이그레이션의 중복제거 기반 기반 메모리 마이그레이션 장치 및 방법
US10824640B1 (en) Framework for scheduling concurrent replication cycles
JP2016114967A (ja) キャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラム
US10296227B2 (en) System and method for dynamic cache distribution for in-memory data grids
WO2015161804A1 (zh) 一种Cache分区的方法及装置
CN116048377A (zh) 固态硬盘的数据处理方法及相关设备
JP5927871B2 (ja) 管理装置、情報処理装置、管理プログラム、管理方法、プログラムおよび処理方法
US8738578B1 (en) Growing data structures

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180306

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181126

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: 20181204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181217

R150 Certificate of patent or registration of utility model

Ref document number: 6459784

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150