JP6248808B2 - 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラム - Google Patents

情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラム Download PDF

Info

Publication number
JP6248808B2
JP6248808B2 JP2014106155A JP2014106155A JP6248808B2 JP 6248808 B2 JP6248808 B2 JP 6248808B2 JP 2014106155 A JP2014106155 A JP 2014106155A JP 2014106155 A JP2014106155 A JP 2014106155A JP 6248808 B2 JP6248808 B2 JP 6248808B2
Authority
JP
Japan
Prior art keywords
sector
information processing
processing apparatus
division ratio
job
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.)
Active
Application number
JP2014106155A
Other languages
English (en)
Other versions
JP2015222477A (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 JP2014106155A priority Critical patent/JP6248808B2/ja
Priority to US14/694,186 priority patent/US9477601B2/en
Publication of JP2015222477A publication Critical patent/JP2015222477A/ja
Application granted granted Critical
Publication of JP6248808B2 publication Critical patent/JP6248808B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/0893Caches characterised by their organisation or structure
    • 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0683Plurality of storage devices
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/1021Hit rate 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/152Virtualized environment, e.g. logically partitioned system
    • 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/251Local memory within processor subsystem
    • 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
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • G06F2212/6046Using a specific cache allocation policy other than replacement policy

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)
  • Computer Networks & Wireless Communication (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラムに関する。
従来から、プログラムの実行処理の性能を向上するために、キャッシュメモリが利用される。キャッシュメモリは、CPU(Central Processing Unit:CPU)、または、CPUのコア内に設置される高速な記憶装置である。キャッシュメモリに再利用性が高いデータを保持することによって、プログラムの実行処理の性能を向上する。キャッシュメモリは、主記憶装置に較べて容量が小さい。したがって、キャッシュメモリのキャッシュヒット率を高めるために、再利用性の高いデータをキャッシュメモリに保持することが有効である。
再利用性の高いデータをキャッシュメモリに保持する方式として、セクタ機能を備えるキャッシュメモリがある。セクタ機能付きキャッシュメモリでは、プログラムが、データの再利用性に応じて、データを記憶するセクタを指定する。これにより、再利用性の高いデータがキャッシュメモリに保持される確率を高め、キャッシュヒット率が向上する。セクタの分割比は、最適になるように設定される。
キャッシュメモリの分割制御については、例えば、特許文献1〜5、及び、非特許文献1に記載される。
特開2009−163450号公報 特開2010−244205号公報 特開2011−203995号公報 特開2004−03057号公報 特表平11−509356号公報
"SPARC64VIIIfx Extensions"(http://img.jp.fujitsu.com/downloads/jp/jhpc/sparc64viiifx-extensions.pdf,http://img.jp.fujitsu.com/downloads/jp/jhpc/sparc64viiifx-extensionsj.pdf)
近年の情報処理装置は、複数のコアを有する。また、情報処理装置は、複数のコアが使用する共有キャッシュメモリを有する。複数のコアは、それぞれ別のプログラムを実行できる。共有キャッシュメモリがセクタ機能を備える場合、共有キャッシュメモリのセクタの分割比は、複数のプログラムの実行に対して設定されることが望ましい。
本発明は、複数のジョブに対する共有キャッシュメモリのセクタの分割比を最適化する情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラムを提供することにある。
第1の側面は、データの再利用度に応じて分割されるセクタ機能を備える共有キャッシュメモリと、前記共有キャッシュメモリのセクタの分割比を変更する制御ユニットと、を有し、前記制御ユニットは、第1のジョブ、第2のジョブの実行中に、前記第2のジョブのプログラムの指定に応答して、前記第1、第2のジョブがアクセスするデータのサイズ及びアクセス回数を有するデータアクセス量と、前記共有キャッシュメモリの容量とに基づいて、前記セクタの分割比を算出し、前記算出したセクタの分割比に変更する。
第1の側面によれば、複数のジョブに対する共有キャッシュメモリのセクタの分割比を最適化する。
本実施の形態例における情報処理システムのハードウェア構成を説明する図である。 図1に示す計算ノードのCPUのハードウェア構成を説明する図である。 図2に示すL2キャッシュのセクタキャッシュ機能を説明する図である。 図1、図2に示す計算ノードのハードウェア構成を説明する図である。 図1に示す制御ノードのハードウェア構成を説明する図である。 本実施の形態例の情報処理システムのソフトウェアブロック図を説明する図である。 本実施の形態例におけるセクタ分割比最適化処理の概要を説明する図である。 本実施の形態例における情報処理システムが最適化する、計算ノードのL2キャッシュの分割比の遷移を示す例図である。 本実施の形態例における変数別キャッシュ使用状況の解析処理を説明するフローチャート図である。 オブジェクトファイルに付加される変数別キャッシュ使用状況情報の一例を示す図である。 最適化開始コード及び最適化終了コードが挿入されたソースプログラムの一例を示す図である。 本実施の形態例における実行フェーズの処理の流れを説明するフローチャート図である。 図12に示す資源割当最適化処理(S26)を説明するフローチャート図である。 図13の工程S32で更新される、共有キャッシュメモリを使用する実行中ジョブのデータアクセス量の合計を示す図である。 図12に示す資源割当最適化処理(S27)を説明するフローチャート図である。 セクタの分割比の算出処理(図13のS33)の処理を説明するフローチャート図である。 関数objective_functionの処理の概要を説明するフローチャート図である。 CPUコアに固有のL1キャッシュのキャッシュミス発生指標値の算出処理を説明するフローチャート図である。 L1キャッシュのデータアクセス量の算出処理を説明する図である。 共有キャッシュメモリのキャッシュミス発生指標値の算出処理を説明するフローチャート図である。 図12に示すキャッシュセクタ割当制御処理(S22、S25)を説明するフローチャート図である。 セクタの分割比の変更例を説明する図である。 第2の実施の形態例におけるジョブのCPUへの割り当て処理を説明する図である。 CPUコア割当制御モジュールの処理を説明するフローチャート図である。
以下、図面にしたがって本発明の実施の形態を説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
[情報処理システム]
図1は、本実施の形態例における情報処理システムのハードウェア構成を説明する図である。図1の情報処理システムは、例えば、ハイ・パフォーマンス・コンピューティング(high-performance computing:HPC)システムを示す。HPCシステムでは、複数のジョブのスケジュールを生成し、情報処理装置300a〜300cが、複数のジョブをスケジュールに基づいて実行する。
図1の情報処理システムは、複数の情報処理装置100、300a〜300c、500、600を有する。複数の情報処理装置うち、情報処理装置300a〜300cは計算処理専用の装置であり、ジョブ実行環境用のノード(以下、計算ノードと称する)である。情報処理装置100は、ジョブの実行を制御する装置であり、ジョブ制御環境用のノード(以下、制御ノードと称する)である。情報処理装置500は、ソースプログラをコンパイルして実行可能なプログラムを生成するコンパイル環境用のノード(以下、コンパイルノードと称する)である。情報処理装置600は、ディスク装置da〜dc等のストレージデバイスと接続するファイルサーバである。
制御ノード100は、ネットワーク50を介して、複数の計算ノード300a〜300c、コンパイルノード500、及び、ファイルサーバ600と接続する。制御ノード100、計算ノード300a〜300c、コンパイルノード500、ファイルサーバ600のそれぞれは、CPU(Central Processing Unit:CPU)11、31、51、61、RAM(Random Access Memory:RAM)等のメモリ12、32、52、62、NIC(Network Interface Card:NIC)13、33、53、63を有する。CPU31の構成については、図2にて後述する。
コンパイルノード500は、ディスク装置da〜dcからソースプログラムを読み出し、読み出したソースプログラムをコンパイルして、実行可能なプログラム(以下、実行プログラムと称する)を生成する。実行プログラムは、ジョブを示す。また、コンパイルノード500は、生成した実行プログラムをディスク装置da〜dcに記憶する。
制御ノード100は、ジョブのスケジュールを生成するとともに、ジョブの実行状態やスケジュールの進捗状態を管理する。制御ノード100は、時刻に応じて、ジョブを実行する1つまたは複数の計算ノード300a〜300cを割り当てることにより、スケジュールを生成する。このとき、制御ノード100は、ジョブが必要とする計算ノード300a〜300cの数、ジョブの実行条件、計算ノード300a〜300cの性能等の情報に基づいて、ジョブに計算ノード300a〜300cを割り当てる。ジョブの実行条件とは、ジョブの並列度や通信に関する条件である。
また、制御ノード100は、スケジュールに基づいたジョブの実行指示を、計算ノード300a〜300cに出力する。実行指示された計算ノード300a〜300cは、制御ノード100からの指示に応答して、ディスク装置da〜dcから読み出した実行プログラムや入力情報等にしたがって、ジョブを実行する。また、計算ノード300a〜300cは、ジョブの実行が終了すると、ジョブの実行結果を制御ノード100に通知するとともに、ジョブの実行ログをディスク装置da〜dcに記憶させる。制御ノード100は、計算ノード300a〜300cから受信したジョブの実行結果に基づいて、ジョブの進捗状態を管理する。
[計算ノード]
図2は、図1に示す計算ノード300a〜300cのCPU31のハードウェア構成を説明する図である。この例では、1つの計算ノード300aのCPU31のハードウェア構成を示すが、他の計算ノード300b〜300cのCPU31のハードウェア構成も同様である。以下、計算ノード300b〜300cを、計算ノード300と称する。
図2に示す計算ノード300aは、本実施の形態例では、図1で説明したとおり、CPU31、メモリ(メインメモリ)32、NIC33を有する。また、CPU31は、本実施の形態例では、2個のCPUコアca、cb、Level1のキャッシュメモリ(以下、L1キャッシュと称する)ma、mb、及び、Level2のキャッシュメモリ(以下、L2キャッシュと称する)m2を有する。L1キャッシュma、mbは、1つのCPU(Central Processing Unit:CPU)コアca、cbに専用のキャッシュメモリである。また、本実施の形態例では、L2キャッシュm2は、複数(図2の例では、2つ)のCPUコアca、cbが共有して使用する共有キャッシュメモリである。
なお、図2の例では、CPU31が2つCPUコアca、cbを有するが、この例に限定されるものではない。CPU31は、3個以上のCPUコア、例えば、16個のCPUコアを有していてもよい。また、図2の例では、L2キャッシュm2のみを例示しているが、CPU31は、さらに、L3キャッシュ、L4キャッシュ等の共有キャッシュメモリを搭載していてもよい。
CPU31は、メインメモリ32に記憶されたデータの一部を、L1キャッシュma、mb、及び、L2キャッシュm2に記憶させる。L1キャッシュma、mb、及び、L2キャッシュm2は、キャッシュコントローラ(図示せず)を有する。キャッシュコントローラは、データにアクセスする場合に、アクセス対象のデータが、L1キャッシュma、mbに記憶されているか否かを判定する。アクセス対象のデータがL1キャッシュma、mbに記憶されている場合、キャッシュコントローラは、L1キャッシュma、mbからデータを読み出す。
アクセス対象のデータがL1キャッシュma、mbに記憶されていない場合、キャッシュコントローラは、アクセス対象のデータが、L2キャッシュm2に記憶されているか否かを判定する。アクセス対象のデータがL2キャッシュm2に記憶されている場合、キャッシュコントローラは、L2キャッシュm2からデータを読み出す。アクセス対象のデータがL2キャッシュm2にも記憶されていない場合、キャッシュコントローラは、アクセス対象のデータをメインメモリ32から読み出す。また、キャッシュコントローラは、メインメモリ32から読み出したデータを、L1キャッシュma、mb、または、L2キャッシュm2に記憶する。
このように、キャッシュメモリma、mb、m2にアクセス対象のデータが記憶されている場合(キャッシュヒットという)、メインメモリ32へのアクセスが不要となる。CPU31は、メインメモリ32に比べて、より高速に、キャッシュメモリma、mb、m2にアクセスできる。したがって、アクセス対象のデータがL1キャッシュma、mb、または、L2キャッシュm2に記憶されていることにより、プログラムの処理の性能が向上する。アクセス対象のデータのキャッシュメモリma、mb、m2におけるキャッシュヒット率を向上するために、例えば、セクタキャッシュ機能が用いられる。次に、セクタキャッシュ機能を図3で説明する。
図3は、図2に示すL2キャッシュm2のセクタキャッシュ機構を説明する図である。セクタキャッシュ機構とは、利用者がプログラムからキャッシュメモリを制御する機構である。キャッシュメモリは、記憶させるデータの再利用性に応じて、論理的に分割した複数のセクタを有する。利用者は、プログラムからデータを記憶させるセクタを指定することができる。これにより、再利用性の低いデータのアクセスの発生によって、再利用性の高いデータがキャッシュメモリから追い出されることが回避可能になる。
本実施の形態例におけるL2キャッシュm2は、セクタキャッシュ機構を備える。図3では、L2キャッシュm2をL2キャッシュm2aとして記載している。本実施の形態例では、L2キャッシュm2aは、セクタ0とセクタ1とを有する。セクタ0は再利用性が低いデータを記憶するセクタ、セクタ1は再利用性が高いデータを記憶するセクタを示す。L2キャッシュm2aにデータを記憶させる場合、キャッシュコントローラは、データの再利用性(アクセス回数)に応じたセクタに、データを記憶する。これにより、アクセス対象のデータがL2キャッシュm2aに記憶されている確率を高め、キャッシュヒット率を向上させることが可能になる。
キャッシュメモリのセクタ0とセクタ1とのセクタの分割比は、各セクタのway数にしたがって定義する。way数は、セットアソシアティブ(Set Associative)方式におけるway数を示す。本実施の形態例におけるL2キャッシュm2は、10way数のキャッシュメモリである。図3の上部に示すL2キャッシュm2aのセクタの分割比は、「セクタ0:セクタ1=5:5」である。1つのwayのサイズは、例えば、512Kバイトである。
なお、図2に示すL1キャッシュma、mbについても、セクタキャッシュ機構を備えていてもよいが、本実施の形態例ではL2キャッシュm2のみがセクタキャッシュ機構を備える場合を例示する。なお、セクタの分割数は、図3の例に限定されるものではない。L2キャッシュm2は、3つ以上のセクタを有していてもよい。
CPU31は、プログラムの実行中に、セクタの分割比を変更することができる。図3は、L2キャッシュm2のセクタの分割比が、L2キャッシュm2aに示す「セクタ0:セクタ1=5:5」から、L2キャッシュm2bに示す「セクタ0:セクタ1=3:7」に変更する場合を示す。例えば、再利用性の高いデータ及びそのサイズが増大する場合、図3に示すように、再利用性の高いデータを記憶するセクタ(図3の例では、セクタ1)の領域(way数)を拡張することにより、再利用性の高いデータのキャッシュヒット率を向上させる。
本実施の形態例における情報処理システムは、計算ノード300が有する複数のCPUコアca、cbが複数のジョブを実行中に、複数のCPUコアca、cbが共有してアクセスする共有キャッシュメモリ(L2キャッシュ)のセクタの分割比を最適化する。これにより、複数のジョブの実行時の性能が向上する。即ち、実行中の複数のジョブの実行速度が向上する。
図4は、本実施の形態例における計算ノード300のハードウェア構成を説明する図である。計算ノード300は、図1、図2で説明したとおり、CPU31、メモリ32、NIC33を有する。また、計算ノード300は、不揮発性メモリ402を有する。不揮発性メモリ402は、HDD(Hard disk drive:HDD)、不揮発性半導体メモリ等で構成される。各部は、バス34を介して相互に接続する。
CPU31は、バス34を介してメモリ32や不揮発性メモリ402等と接続すると共に、ジョブの実行処理を行う。メモリ32は、CPU31が処理を行うデータ等を記憶する。不揮発性メモリ402は、CPU31が実行するOS(Operating System:OS)のプログラムを格納する領域(図示せず)や、計算ノード300側のジョブスケジューラプログラムを格納する領域pr2、ジョブの実行プログラムを格納する領域jpを備える。
ジョブスケジューラプログラム領域pr2に記憶されたジョブスケジューラプログラム(以下、ジョブスケジューラプログラムpr2と称する)は、CPU31の実行によって、本実施の形態例における計算ノード300側のジョブスケジュール処理を実現する。また、ジョブの実行プログラム領域jpに記憶された実行プログラム(以下、実行プログラムjpと称する)は、CPU31の実行によって、ジョブの処理を実現する。NIC33は、ネットワーク50を介して、制御ノード100、ファイルサーバ600等との間でデータの送受信を制御する。
次に、図1に示した制御ノード100のハードウェア構成を説明する。
図5は、図1に示した、本実施の形態例における制御ノード100のハードウェア構成を説明する図である。制御ノード100は、図1で説明したとおり、CPU11、メモリ12、NIC13を有する。制御ノード100は、不揮発性メモリ202を有する。不揮発性メモリ202は、HDD、不揮発性半導体メモリ等で構成される。各部は、バス14を介して相互に接続する。
CPU11は、バス14を介してメモリ12等と接続すると共に、ジョブのスケジューリングを行うとともに、制御ノード100全体の制御を行う。メモリ12は、CPU11が処理を行うデータ等を記憶する。不揮発性メモリ202は、CPU11が実行するOSのプログラムを格納する領域(図示せず)や、本実施の形態例におけるセクタの分割比を算出する、制御ノード100側のジョブスケジューラプログラムを格納する領域pr1を備える。
ジョブスケジューラプログラム領域に記憶されたジョブスケジューラプログラム(以下、ジョブスケジューラプログラムpr1と称する)は、CPU11の実行によって、本実施の形態例における制御ノード100側のジョブスケジュール処理を実現する。また、NIC13は、ネットワーク50を介して、計算ノード300、コンパイルノード500、ファイルサーバ600等とのデータの送受信を制御する。
また、図5は、制御ノード100の構成を示すが、コンパイルノード500も、図5と同様にして、CPU51、メモリ52、NIC53、不揮発性メモリを有する。ただし、コンパイルノード500は、不揮発性メモリに、コンパイルプログラムを記憶する。コンパイルプログラムは、CPU51の実行によって、本実施の形態例におけるコンパイル処理を実現する。
[情報処理システムのソフトウェアブロック図]
図6は、本実施の形態例の情報処理システムのソフトウェアブロック図を説明する図である。情報処理システムは、変数別キャッシュ使用状況の解析モジュール(以下、解析モジュールと称する)21、資源割当最適化モジュール22、キャッシュセクタ割当制御モジュール23を有する。また、本実施の形態例において、情報処理システムの処理は、解析フェーズの処理と、実行フェーズの処理とを有する。解析モジュール21の処理は、解析フェーズに該当する。また、資源割当最適化モジュール22、及び、キャッシュセクタ割当制御モジュール23の処理は、実行フェーズに該当する。各モジュールの処理の概要については、図7にしたがって後述する。
解析モジュール21は、例えば、コンパイルノード500(図1)のコンパイラや、計算ノード300(図1)が備える性能シミュレータ(図示せず)等が含むモジュールである。また、資源割当最適化モジュール22は、制御ノード100(図1)のジョブスケジューラプログラムpr1が含むモジュールである。キャッシュセクタ割当制御モジュール23は、計算ノード300(図1)のジョブスケジューラプログラムpr2が含むモジュールである。
解析モジュール21は、実行プログラムjpを解析して、変数別キャッシュ使用状況情報24を抽出する。変数別キャッシュ使用状況情報24は、実行プログラムjp内でメモリアクセスが発生する各変数のデータアクセス量を示す。データアクセス量とは、例えば、変数のサイズ及びアクセス回数を有する。解析モジュール21は、抽出した変数別キャッシュ使用状況情報24を、実行プログラムjp、または、実行プログラムjpに関係付けられる別のファイルに格納する。
また、解析モジュール21は、実行プログラムjp内のセクタ分割比の最適化の対象とする区間(以下、最適化区間と称する)の上端に最適化開始コードを、下端に最適化終了コードを埋め込む。最適化開始コード及び最適化終了コードは、資源割当最適化モジュール22を呼び出す制御コードである。実行プログラムjp内の最適化区間が、セクタの分割比を最適化する対象の区間である。
最適化区間は、例えば、プログラム内の処理時間への影響度が高い処理に対応する。性能への影響度が高い処理とは、例えば、実行プログラムjp内のループ処理やライブラリ関数等のうち、データアクセス量が閾値を超える、ループ処理やライブラリ関数である。解析モジュール21の詳細については、図9にしたがって後述する。
制御ノード100の資源割当最適化モジュール22は、キャッシュメモリのセクタの分割比を算出する。資源割当最適化モジュール22は、例えば、計算ノード300で実行中の複数のジョブの処理遅延時間が最少となる、セクタの分割比を算出する。処理遅延時間とは、計算ノード300で発生すると見積もられる遅延時間を示す。資源割当最適化モジュール22は、計算ノード300による実行中ジョブの最適化開始コードの検知に応答して、実行中の複数のジョブに最適なセクタの分割比を算出する。資源割当最適化モジュール22は、計算ノード300で実行中の実行プログラムjpの変数別キャッシュ使用状況情報24と、計算ノード300が有するキャッシュメモリの容量とに基づいて、セクタの分割比を算出する。資源割当最適化モジュール22の処理の詳細については、図12にしたがって後述する。
計算ノード300のキャッシュセクタ割当制御モジュール23は、資源割当最適化モジュール22が算出したセクタの分割比に基づいて、キャッシュメモリのセクタの分割比を変更する。キャッシュセクタ割当制御モジュール23は、例えば、各セクタの最大way数を管理するセクタ構成レジスタの値を書き換えることによって、セクタの分割比を変更する。セクタ構成レジスタは、OSのメモリ空間上で管理される情報である。キャッシュセクタ割当制御モジュール23の処理の詳細については、図21にしたがって後述する。
ここで、本実施の形態例の情報処理システムにおけるセクタの分割比の最適化処理の概要を説明する。
図7は、本実施の形態例におけるセクタ分割比の最適化処理の概要を説明する図である。図6で前述したとおり、情報処理システムの処理は、解析フェーズの処理と、実行フェーズの処理とを有する。解析フェーズでは、コンパイルノード500の解析モジュール21(図6)が、最適化区間を指定するコードと、変数別キャッシュ使用状況情報24(以下、データアクセス量と称する)を有する実行プログラムjpを生成する。
一般的に、ジョブの実行時にセクタの分割比を変更する場合、例えば、実行プログラム内にセクタの分割比の指定を含む。そして、実行プログラムの実行時に、実行プログラムが有するセクタの分割比の指定を読み出し、キャッシュメモリのセクタの分割比が変更される。この方法は、単一のジョブに対するセクタの分割比制御に有効である。これに対して、本実施の形態例における計算ノード300は、実行プログラムjpの実行中に、複数の実行ジョブ、及び、計算ノード300のキャッシュメモリの構成に基づいて、最適なセクタの分割比を算出する。したがって、セクタの分割比を算出可能にするために、本実施の形態例における実行プログラムjpは、セクタの分割比を指定するコードではなく、最適化区間を指定するコードと、データアクセス量24とを有する。
次に、実行フェーズでは、図6の資源割当最適化モジュール22と、キャッシュセクタ割当制御モジュール23とが連携して処理を行う。計算ノード300は、実行プログラム(ジョブ)jp1、jp2の実行中に、最適化開始コードの検知に応答して、制御ノード100の資源割当最適化モジュール22(図6)に、セクタの分割比の算出指示を通知する(a11)。通知に応答して、資源割当最適化モジュール22は、計算ノード300上で実行中の複数の実行プログラムjp1、jp2のデータアクセス量と、計算ノード300のL2キャッシュm2の各セクタの容量とに基づいて、計算ノード300のセクタの分割比を算出する。つまり、資源割当最適化モジュール22は、計算ノード300で実行中の複数の実行プログラムjp1、jp2の処理時の性能を向上させる、セクタの分割比を算出する。そして、資源割当最適化モジュール22は、算出したセクタの分割比を、計算ノード300に送信する(a12)。
計算ノード300のキャッシュセクタ割当制御モジュール23(図6)は、受信したセクタの分割比に基づいて、セクタ構成レジスタを変更する。キャッシュセクタ割当制御モジュール23は、オペレーションシステムのユーザ空間310上で動作するのに対し、セクタ構成レジスタは、オペレーションシステムのカーネル空間311上で動作する。また、ジョブを複数、実行する計算ノード300では、セクタ構成レジスタの変更に、特権モードが必要となることがある。したがって、キャッシュセクタ割当制御モジュール23は、例えば、セクタ構成レジスタドライバ25にシステムコールを発行することによって、セクタ構成レジスタの値を変更する。
そして、計算ノード300は、最適化開始コードから最適化終了コードまでのコード(最適化区間内のコード)を処理する。最適化区間内のコードは、処理時間が長い場合が多い。また、最適化区間の処理は、セクタの分割比を最適化することによる効果が高い処理に該当する。したがって、セクタの分割比の算出処理が生じものの、セクタの分割比の最適化による処理性能の向上により、ジョブの処理時間は短縮される。
そして、最適化終了コードを検出すると、計算ノード300は、最適化区間の終了を制御ノード100に通知する(a11)。資源割当最適化モジュール22は、最適化区間の終了の通知に応答して、最適化前のセクタの分割比を計算ノード300に通知する(a12)。キャッシュセクタ割当制御モジュール23は、セクタの分割比の通知に応答して、システムコールを発行することによってセクタの分割比を変更する。続いて、計算ノード300は、最適化区間以降のコードを処理する。
図8は、本実施の形態例における情報処理システムが最適化する、計算ノード300のL2キャッシュm2の分割比の遷移を示す例図である。図8の例では、第1のCPUコアca(図2)がジョブ1(図7の実行プログラムjp1に対応)を実行し、第2のCPUコアcb(図2)がジョブ2(図7の実行プログラムjp2に対応)を実行する場合を示す。
また、図8の例では、第1のCPUコアcaがジョブ1の実行を開始した後に、第2のCPUコアcbがジョブ2を実行する。ループ処理A、ループ処理Bは、最適化区間の処理である。ループ処理Aは、タイミングt1に開始し、タイミングt4に終了する。また、ループ処理Bは、タイミングt2に開始し、タイミングt3に終了する。したがって、タイミングt1、t2に、L2キャッシュm2のセクタの分割比の最適化が発生する。
図8の例では、ジョブ1の開始時には、例えば、セクタの分割比がデフォルト値「セクタ0:セクタ1=3:7」に設定される。そして、タイミングt1に、ジョブ1のループ処理Aの開始に応答して、セクタの分割比の最適化処理が発生し、セクタの分割比が「セクタ0:セクタ1=3:7」から「セクタ0:セクタ1=2:8」に遷移する。この場合、再利用性の高いデータを記憶するセクタ1の領域が拡張されている。これにより、ジョブ1のループ処理Aの処理時の性能が向上する。
そして、タイミングt2において、ジョブ2のループ処理Bの開始に応答して、セクタの分割比の最適化処理が発生し、セクタの分割比が「セクタ0:セクタ1=2:8」から「セクタ0:セクタ1=1:9」に遷移する。このとき、セクタ1の領域は、さらに拡張されている。これにより、ジョブ1のループ処理A及びジョブ2のループ処理Bの処理時の性能が向上する。このように、本実施の形態例によると、共有キャッシュメモリのセクタの分割比が、実行中の複数のジョブに最適なセクタの分割比、即ち、最適化区間の処理遅延時間が最少となるセクタの分割比に設定される。
そして、ジョブ2のループ処理Bが終了すると(t3)、ジョブ2の最適化区間が終了したことにより、セクタの分割比が「セクタ0:セクタ1=1:9」から、ループ処理Bの開始前の「セクタ0:セクタ1=2:8」に遷移する。これにより、セクタの分割比は、ジョブ1のループ処理Aの処理時の性能を向上する値に再設定される。また、ジョブ1のループ処理Aが終了すると(t4)、ジョブ1の最適化区間が終了したことにより、セクタの分割比が「セクタ0:セクタ1=2:8」から、元の「セクタ0:セクタ1=3:7」に遷移する。
このように、本実施の形態例における情報処理システムでは、実行プログラムjp内に、予め、変数別キャッシュ使用状況情報(データアクセス量)24と、最適化区間を指示するコードとを追加する。これにより、情報処理システムは、ジョブの実行中に、対象の計算ノード300が実行中の複数のジョブのデータアクセス量と、対象の計算ノード300のキャッシュメモリのセクタの構成に応じて、複数のジョブに最適なセクタの分割比を算出できる。そして、対象の計算ノード300は、最適なセクタの分割比に基づいて、複数のジョブの処理時の性能を向上させることができる。
各計算ノード300において並列に実行され得る複数のジョブの組み合わせは、無数に存在する。各ジョブが、同一の計算ノード300でいずれのジョブと並列して実行されるかはシステムの運用に依存して変動する。また、ジョブの実行前に、すべてのジョブの組み合わせを抽出し、各組み合わせに対して最適なセクタの分割比を算出しておくことは容易ではない。これに対し、本実施の形態例における情報処理システムは、ジョブの実行中に、複数のジョブのデータアクセス量に基づいて、複数のジョブに最適なセクタの分割比を算出する。したがって、情報処理システムは、実行中のジョブがいずれの組み合わせであっても、実行中の複数のジョブに最適な共有キャッシュメモリのセクタの分割比を算出し、セクタの分割比を最適化することができる。
さらに、ジョブを実行する計算ノード300は、システムの運用に依存して変動する。したがって、各ジョブが、どのような構成のキャッシュメモリを備える計算ノード300が実行されるかを、実行プログラムjpの作成時に検知することは困難である。キャッシュメモリの構成とは、例えば、キャッシュメモリの容量やセクタ数、各セクタのway数等を示す。
また、計算ノード300のCPU31の世代が変化する場合、CPU31の基本的な機能は変更前の世代と同様であるものの、キャッシュメモリの構成に変更が生じることがある。さらに、大規模な情報処理システムでは、異なる世代のCPU31を備える計算ノード300が併存している場合がある。したがって、各ジョブが、どのような構成のキャッシュのメモリを備える計算ノード300が実行されるかを、実行プログラムjpの作成時に検知することは困難である。したがって、実行プログラムjpの作成時に、予め、すべてのケースにおいて最適なセクタの分割比を検知しておくことが困難である。
これに対し、本実施の形態例における情報処理システムは、ジョブの実行時に、実行中の複数のジョブに最適なセクタの分割比を算出し、セクタの分割比を最適化する。したがって、情報処理システムは、実行中の複数のジョブに加え、ジョブを実行する計算ノード300のキャッシュメモリの構成に合わせて、最適なセクタの分割比を算出することが可能になる。つまり、情報処理システムは、実行中のジョブがいずれの組み合わせであっても、いずれの構成のキャッシュメモリを備える計算ノード300においても、ジョブの処理時の性能を向上させることができる。
続いて、図6、図7で示した各モジュールの処理の詳細を、フローチャート図に基づいて説明する。初めに、解析フェーズの解析モジュール21の処理を説明する。
[解析フェーズ]
図9は、解析モジュール21の処理の詳細を説明するフローチャート図である。コンパイルノード500の解析モジュール21は、コンパイラによるソースプログラムのコンパイル時に、変数ごとのデータアクセス量を解析する。そして、解析モジュール21は、プログラム内のデータアクセス量を求める(S11)。
解析モジュール21は、ソースプログラムsp内のすべての処理のデータアクセス量を算出してもよいし、ソースプログラムsp内のループ処理のデータアクセス量を算出してもよい。なお、セクタの分割比を最適化することによる効果が生じやすいのは、例えば、ループ処理や、同一のデータを繰り返しアクセスするようなライブラリ関数等である。したがって、解析モジュール21は、例えば、ループ処理や、同一のデータを繰り返しアクセスするような処理を対象として、データアクセス量を求めてもよい。
なお、計算ノード300が、性能カウンタを有する性能シミュレータを備える場合、計算ノード300が工程S11の処理を実行してもよい。性能シミュレータは、例えば、実行プログラムjpを試験的に実行した際に取得される性能カウンタの値に基づいて、データアクセス量を収集する。
次に、解析モジュール21は、データアクセス量の情報の出力先がオブジェクトファイル内のセクションであるか否かを判定する(S12)。オブジェクトファイルは、ソースプログラムをコンパイルすることによって生成されるファイルである。データアクセス量の情報を、オブジェクトファイル内のセクションに出力するか否かは、例えば、予め指定される。
データアクセス量の出力先がオブジェクトファイル内のセクションである場合(S12のYES)、解析モジュール21は、オブジェクトファイル内の出力先のセクションに、データアクセス量(図6の変数別キャッシュ使用状況情報)24を書き込む(S14)。一方、データアクセス量の出力先がオブジェクトファイルのセクションではない場合(S12のNO)、解析モジュール21は、オブジェクトファイル外のセクションに、データアクセス量(図6の変数別キャッシュ使用状況情報)24を書き込む(S13)。
図10は、変数別キャッシュ使用状況情報24の一例を示す図である。表H1は、変数ごとに、最適化区間ID(identification:ID)、アドレス、回数、サイズの情報を有する。1つの実行プログラムjpは、1つまたは複数の最適化区間を有する。したがって、最適化区間IDは、変数が属する最適化区間を識別する。アドレスは、変数が記憶されるメモリアドレスを示す。アドレスは、例えば、heap領域、stack領域、システムコールmmapにしたがって確保した領域のいずれかのアドレスを示す。また、回数は、メモリ空間へのアクセス回数を示し、サイズは変数のサイズ(バイト)を示す。
表H1の例では、1つの最適化区間(最適化区間ID=123)のデータアクセス量を有する。表H1によると、1行目の変数は、ID「123」の最適化区間でアクセスされる変数の情報を示し、アクセス回数は「1024」回、サイズは「2048」バイト、アドレスは「0x00000811e7c53430」である。また、2行目の変数は、ID「123」の最適化区間でアクセスされる変数の情報を示し、アクセス回数は「256」回、サイズは「2048」バイト、アドレスは「0x00001611e7c53000」である。他の変数についても同様である。
図9に戻り、解析モジュール21は、ソースプログラムsp内の最適化区間の上端と下端に、最適化開始コード及び最適化終了コードを追加する(S15)。例えば、利用者は、ソースプログラムsp内の任意のコード群を、最適化区間に指定する。例えば、利用者は、試行錯誤し、チューニングしながら、最適化区間を決定する。これにより、ソースプログラムsp内のうち、予め、セクタの分割比の最適化による効果が特に高いと検知される処理範囲を、任意に、最適化区間に指定できる。
図11は、最適化開始コード及び最適化終了コードが挿入されたソースプログラムspの一例を示す図である。図11に示すソースプログラムspは、最適化開始コードc1、最適化終了コードc2、及び、ループ処理を示すコード群c3を有する。図11の例において、コード群c3は、最適化区間である。また、図10の例において、最適化開始コードc1は、コードoptimize_request(loop_info);であって、最適化終了コードc2は、コードloop_exit_notice(loop_info);である。最適化開始コードc1及び最適化終了コードc2のパラメータloop_infoは、例えば、最適化区間内のデータアクセス量を示す。
なお、解析モジュール21は、ソースプログラムsp内のコードのうち、データアクセス量が閾値を超える、ループ処理やコード群(例えば、ライブラリ関数等)を最適化区間として検出してもよい。データアクセス量が閾値を超えるループ処理やコード群は、セクタの分割比を最適化することによる、プログラムの処理時間への影響度が高い。
図9に示す工程の後、コンパイルノード500のコンパイラは、最適化開始コード及び最適化終了コードが埋め込まれたソースプログラムspをコンパイルして、データアクセス量を有するオブジェクトファイルを生成する。また、コンパイルノード500のリンカプログラム(図示せず)は、1つまたは複数のオブジェクトファイルをリンクすることによって、実行プログラムjpを生成する。
[実行フェーズ]
次に、実行フェーズの処理を説明する。実行フェーズでは、ジョブの実行中に、図6、図7に示した、資源割当最適化モジュール22、及び、キャッシュセクタ割当制御モジュール23が連携して処理を行う。初めに、実行フェーズの処理の流れをフローチャート図にしたがって説明する。
図12は、実行フェーズの処理の流れを説明するフローチャート図である。計算ノード300のキャッシュセクタ割当制御モジュール23は、ジョブの実行中に、最適化開始コード(optimize_request(loop_info);、図11)を検出すると(図7のa11)、制御ノード100に処理を依頼する(S21)。図8の例では、タイミングt1、t2に該当する。制御ノード100の資源割当最適化モジュール22は、計算ノード300からの依頼に応答して、資源割当最適化処理を行う(S26)。工程S26に対応する資源割当最適化処理の詳細は、図13のフローチャート図にしたがって後述する。資源割当最適化モジュール22は、資源割当最適化処理の結果、セクタの分割比を計算ノード300に通知する。
そして、計算ノード300のキャッシュセクタ割当制御モジュール23は、通知されたセクタの分割比に基づいて、キャッシュセクタ割当制御処理を行う(S22)。キャッシュセクタ割当制御処理の詳細は、図21のフローチャート図にしたがって後述する。そして、計算ノード300は、ループ処理(最適化区間の処理)を実行する(S23)。
ループ処理の後、最適化終了コード(loop_exit_notice(loop_info);、図11)を検出すると(図7のa12)、キャッシュセクタ割当制御モジュール23は、制御ノード100に最適化区間の終了を通知する(S24)。図8の例では、タイミングt3、t4に該当する。制御ノード100の資源割当最適化モジュール22は、計算ノード300からの通知に応答して、資源割当最適化処理を行う(S27)。工程S27に対応する資源割当最適化処理の詳細は、図15のフローチャート図で説明する。資源割当最適化モジュール22は、資源割当最適化処理の結果、セクタの分割比を計算ノード300に通知する。そして、同様にして、計算ノード300のキャッシュセクタ割当制御モジュール23は、通知されたセクタの分割比に基づいて、キャッシュセクタ割当制御処理を行う(S25)。
[フローチャート:資源割当最適化処理]
図13は、図12に示す資源割当最適化処理(S26)を説明するフローチャート図である。資源割当最適化モジュール22は、計算ノード300から資源割当最適化処理の依頼を受け付ける(S31)。このとき、資源割当最適化モジュール22は、実行中のジョブ(以下、依頼ジョブと称する)の変数別キャッシュ使用状況情報24のうち、対象の最適化区間のデータアクセス量を、計算ノード300から受信する。
次に、資源割当最適化モジュール22は、受信した最適化区間のデータアクセス量を、計算ノード300の共有キャッシュメモリを使用する実行中ジョブのデータアクセス量に追加する(S32)。これにより、資源割当最適化モジュール22は、共有キャッシュメモリを使用する実行中ジョブのデータアクセス量の合計を算出する。資源割当最適化モジュール22は、計算ノード300で実行中の他のジョブが最適化区間の処理中である場合に、当該最適化区間のデータアクセス量に、依頼ジョブの対象の最適化区間内のデータアクセス量を追加する。
図14は、工程S32で更新される、共有キャッシュメモリを使用する実行中ジョブのデータアクセス量の合計を示す図である。表H2は、図8のタイミングt2に更新される、共有キャッシュメモリを使用する実行中ジョブのデータアクセス量の合計の一例を示す。表H2における、最適化区間ID「212」の各行d1はジョブ1のループ処理Aに対応する。また、最適化区間ID「123」の各行d2はジョブ2のループ処理Bに対応する。つまり、タイミングt2に、資源割当最適化モジュール22は、表H2に示すように、実行中のループ処理Aのデータアクセス量(d1)に、新たに開始するループ処理Bのデータアクセス量(d2)を追加する(S32)。
なお、同一の計算ノード300で実行中の別のジョブが、最適化区間の処理中ではない場合、資源割当最適化モジュール22は、実行中の別のジョブのデータアクセス量を、当該ジョブの変数別キャッシュ使用状況情報24の最適化区間外のデータアクセス量に基づいて算出してもよい。または、計算ノード300のCPU31が性能測定機構を内蔵する場合、資源割当最適化モジュール22は、実行中の別のジョブのデータアクセス量を、性能測定機構が測定したデータアクセス量に基づいて算出してもよい。資源割当最適化モジュール22は、算出した実行中の別のジョブのデータアクセス量に、依頼ジョブの対象の最適化区間内のデータアクセス量を追加する。
図13のフローチャート図に戻り、資源割当最適化モジュール22は、工程S32で更新したデータアクセス量と、キャッシュメモリの容量とに基づいて、セクタの分割比を求める(S33)。資源割当最適化モジュール22は、例えば、キャッシュミスによる処理遅延時間を評価する関数の値が最少となる、セクタの分割比を算出する。処理の詳細は、図16〜図20にしたがって後述する。そして、資源割当最適化モジュール22は、計算ノード300に、セクタの分割比を通知し、セクタの分割比を反映するシステムコールの実行を指示する(S34)。
図15は、図12に示す資源割当最適化処理(S27)を説明するフローチャート図である。資源割当最適化モジュール22は、計算ノード300から、依頼ジョブのループ処理終了の通知を受け付ける(S41)。次に、資源割当最適化モジュール22は、共有キャッシュメモリを使用する実行中ジョブのデータアクセス量の合計から、依頼ジョブの最適化区間のデータアクセス量を削除する(S42)。例えば、前述した図14の表H2を例にとると、図8のタイミングt3では、資源割当最適化モジュール22は、最適化区間ID「123」に対応する各行d2に対応する情報を取り除く。
次に、資源割当最適化モジュール22は、計算ノード300に、最適化区間の前のセクタの分割比を通知するとともに、セクタの分割比を反映するシステムコールの実行を指示する(S43)。なお、このとき、資源割当最適化モジュール22は、図13の工程S33の処理と同様にして、工程S42で更新した、共有キャッシュメモリを使用する実行中ジョブのデータアクセス量の合計に基づいて、セクタの分割比を算出し直してもよい。これにより、資源割当最適化モジュール22は、共有キャッシュメモリを使用する実行中ジョブのデータアクセス量の合計が変化するタイミング毎に、最適なセクタの分割比を算出し直すことができる。
[セクタの分割比の算出(図13のS33)]
図16は、セクタの分割比の算出処理(図13のS33)の処理の流れを説明するフローチャート図である。セクタの分割比の算出処理では、セクタの分割比の各パターンそれぞれについて、処理遅延時間を示す評価値を算出する。そして、複数のパターンのうち、最も処理遅延時間を示す評価値が小さいパターンが選択される。
初めに、資源割当最適化モジュール22は、候補とするセクタの分割比のパターンリストSを抽出する(S61)。図2で説明したとおり、本実施の形態例におけるL2キャッシュm2は、10way構造である。したがって、パターンリストSは、例えば、「セクタ0:セクタ1=1:9」、「セクタ0:セクタ1=2:8」、「セクタ0:セクタ1=3:7」、「セクタ0:セクタ1=4:6」、「セクタ0:セクタ1=5:5」、「セクタ0:セクタ1=6:4」、「セクタ0:セクタ1=7:3」、「セクタ0:セクタ1=8:2」、「セクタ0:セクタ1=9:1」を有する。ただし、この例に限定されるものではなく、上記のパターンのうち、一部のパターンであってもよい。
次に、資源割当最適化モジュール22は、抽出したパターンリストSの先頭の要素(パターン)を変数pにセットする(S62)。先頭の要素は、例えば、セクタの分割比「セクタ0:セクタ1=1:9」である。資源割当最適化モジュール22は、関数objective_function(p)を実行し、処理遅延時間を示す評価値uを求める(S63)。つまり、資源割当最適化モジュール22は、セクタの分割比「セクタ0:セクタ1=1:9」(値p)を採用した場合における処理遅延時間を示す評価値(値u)を算出する。関数objective_functionの処理については、図18、図20のフローチャート図にしたがって説明する。
次に、資源割当最適化モジュール22は、抽出したパターンリストSの2番目の要素を変数qにセットする(S64)。2番目の要素は、例えば、セクタの分割比「セクタ0:セクタ1=2:8」である。そして、資源割当最適化モジュール22は、関数objective_function(q)を実行し、処理遅延時間を示す評価値vを求める(S65)。つまり、資源割当最適化モジュール22は、セクタの分割比「セクタ0:セクタ1=2:8」(値q)を採用した場合における処理遅延時間の評価値(値v)を算出する。
そして、資源割当最適化モジュール22は、先頭の要素「セクタ0:セクタ1=1:9」(値p)に基づいて求めた値u(S63)と、2番目の要素「セクタ0:セクタ1=2:8」(値q)に基づいて求めた値v(S65)とを比較する(S66)。値vが値uより小さい場合(S66のYES)、2番目の要素qに基づく処理遅延時間を示す評価値(v)が、先頭の要素pに基づく処理遅延時間を示す評価値(u)よりも小さい場合を示す。この場合、資源割当最適化モジュール22は、値uに値vを入力する(S67)。また、資源割当最適化モジュール22は、パターンの先頭要素pを、先頭の要素pから2番目の要素qに更新する(S68)。つまり、資源割当最適化モジュール22は、2番目の要素「セクタ0:セクタ1=2:8」を、処理遅延時間を示す評価値が最も小さい要素pとする。
一方、値vが値u以上である場合(S66のNO)、2番目の要素qに基づく処理遅延時間を示す評価値(v)が、先頭の要素pに基づく処理遅延時間を示す評価値(u)以上である場合を示す。この場合、資源割当最適化モジュール22は、工程S67、S68の処理を行わない。つまり、資源割当最適化モジュール22は、先頭の要素「セクタ0:セクタ1=1:9」を、処理遅延時間を示す評価値が最も小さい要素pとして維持する。そして、資源割当最適化モジュール22は、パターンリストS内の先頭の要素を除去する(S69)。
そして、パターンリストSが要素を有する間、資源割当最適化モジュール22は、工程S65〜S69の処理を繰り返す。この結果、要素pは、パターンリストSが有するセクタの分割比の候補のうち、処理遅延時間を示す評価値が最も小さい要素(セクタの分割比)を有する。資源割当最適化モジュール22は、要素pのセクタの分割比を、最適なセクタの分割比として選択する。
[関数objective_function]
図17は、図16の工程S63、S65に示す、関数objective_functionの処理の概要を説明するフローチャート図である。関数objective_functionは、要素(セクタの分割比)を入力として、計算ノード300における、複数のジョブの処理遅延時間を示す評価値を算出する。
初めに、関数objective_functionは、複数のジョブのデータアクセス量とキャッシュメモリの容量とに基づいて、セクタごとのキャッシュミス発生指標値を算出する(S71)。工程S71の処理の詳細については、図18〜図20にしたがって後述する。
次に、関数objective_functionは、セクタごとのキャッシュミス発生指標値に基づいて、キャッシュミス発生回数を算出する(S72)。関数objective_functionは、キャッシュミス発生指標値に係数を適用することによって、キャッシュミス発生回数を算出する。キャッシュミス発生指標値のキャッシュミスの発生回数への寄与率は、セクタごとに異なる。したがって、関数objective_functionは、各セクタのキャッシュミス発生指標値に、セクタごとに異なる重みを有する係数を適用し、キャッシュミス発生回数を適切に算出する。処理の詳細については、後述する。
次に、関数objective_functionは、キャッシュミス発生回数に基づいて、計算ノード300における、処理遅延時間を示す評価値を算出する(S73)。なお、計算ノード300が複数の階層のキャッシュメモリを有する場合、関数objective_functionは、各階層のキャッシュメモリごとに、キャッシュミス発生回数を算出する。そして、関数objective_functionは、各階層のキャッシュミス発生回数に、階層ごとに異なる重みを有する係数を適用し、計算ノード300における処理遅延時間を算出する。これにより、関数objective_functionは、計算ノード100の処理遅延時間を高精度に算出する。
次に、図18〜図20に基づいて、キャッシュミス発生指標値の算出処理を説明する。図18、図20のフローチャート図は、計算ノード300が複数の階層のキャッシュメモリを有する場合における、階層ごとのキャッシュミス発生指標値を算出するフローチャートである。また、図18、図20は、各階層のキャッシュメモリのそれぞれが、複数のセクタを有する場合における、キャッシュミス発生指標値の算出処理を示す。ただし、前述したとおり、図2の例において、L1キャッシュma、mbはセクタキャッシュ機構を備えていない。したがって、L1キャッシュma、mbの処理(図18)において、資源割当最適化モジュール22は、例えば、L1キャッシュma、mbのセクタの分割比を、所定のデフォルト値(例えば、「セクタ0:セクタ1=5:5」)であると仮定する。
図18は、CPUコアに固有のL1キャッシュma、mbのキャッシュミス発生指標値の算出処理を説明するフローチャート図である。資源割当最適化モジュール22は、まず、キャッシュレベルを示す変数Lに、値「1」をセットする(S81)。本実施の形態例では、図2で説明したとおり、変数Lが値「1」の場合は、L1キャッシュma、mbを示し、変数Lが値「2」の場合は、L2キャッシュm2を示す。
次に、資源割当最適化モジュール22は、再利用度別のデータアクセス量a(L,R,C)を算出する(S82)。データアクセス量a(L,R,C)における、変数CはCPUコアの識別情報を示す。本実施の形態例では、CPU(図2)が2つのCPUコアca、cbを有する。したがって、変数Cは値「1」及び値「2」を示す。また、変数Rは再利用度を示す。本実施の形態例では、変数のアクセス回数が255回以下の変数を再利用度「1」、変数のアクセス回数が255回を超える変数を再利用度「2」とする。したがって、変数Rは値「1」及び値「2」を示す。なお、再利用度「R=1」はセクタ0に対応し、再利用度「R=2」はセクタ1に対応する。変数Lは、キャッシュメモリのレベルである。
具体的に、資源割当最適化モジュール22は、L1キャッシュma、mb(「L=1」)、CPUコアca(「C=1」)、再使用度「R=1」(セクタ0に対応)、「R=2」(セクタ1に対応)ごとのデータアクセス量a(L,R,C)(=a(1,1,1)、a(1,2,1))を算出する。また、資源割当最適化モジュール22は、L1キャッシュma、mb(「L=1」)、CPUコアcb(「C=2」)、再使用度「R=1」(セクタ0に対応)、「R=2」(セクタ1に対応)ごとのデータアクセス量a(L,R,C)(=a(1,1,2)、a(1,2,2))を算出する。
図19は、L1キャッシュma、mbのデータアクセス量a(L,R,C)を説明する図である。資源割当最適化モジュール22は、表H2に示す、共有キャッシュメモリを使用する実行中ジョブのデータアクセス量の合計(図13のS32、図14の表H2)に基づいて、L1キャッシュma、mbのデータアクセス量を算出する。図19の表H2は、図14で説明した表H2と同一である。
例えば、表H2の最適化区間ID「212」は、CPUコアca(図2)(「CPU=1」)の処理を示し、最適化区間ID「123」は、CPUコアcb(図2)(「CPU=2」)の処理を示す。CPUコアcaは、L1キャッシュmaに対応し、CPUコアcbは、L1キャッシュmbに対応する。また、前述したとおり、変数のアクセス回数が255回以下の変数を再利用度「R=1」、変数のアクセス回数が255回を超える変数を再利用度「R=2」とする。
表H2の1行目の最適化区間ID「212」の変数のアクセス回数は「1024」回であって、再利用度「R=2」に該当する。したがって、資源割当最適化モジュール22は、1行目の変数のサイズ「1024」バイトを、対応するL1キャッシュmaの再利用度「R=2」のデータアクセス量da2(a(1,2,1))に累計加算する。同様にして、2行目の変数のアクセス回数が「256」回であることから、資源割当最適化モジュール22は、サイズ「2048」バイトを、対応するL1キャッシュmaの再利用度「R=2」のデータアクセス量da2(a(1,2,1))に累計加算する。
また、4行目の最適化区間ID「123」の変数のアクセス回数が「1024」回であることから、資源割当最適化モジュール22は、サイズ「2048」バイトを、対応するL1キャッシュmbの再利用度「R=2」のデータアクセス量db2(a(1,2,2))に累計加算する。他の変数についても同様である。また、6行目の最適化区間ID「123」の変数のアクセス回数が「1」回であることから、資源割当最適化モジュール22は、サイズ「100」バイトを、対応するL1キャッシュmbの再利用度「R=1」のデータアクセス量db1(a(1,1,2))に累計加算する。
このように、資源割当最適化モジュール22は、ジョブにかかわらず、計算ノード300全体の変数の再利用度に応じて、変数のサイズを累計する。これにより、資源割当最適化モジュール22は、L1キャッシュmaの再利用度「R=1」のデータアクセス量a(1,1,1)、L1キャッシュmaの再利用度「R=2」のデータアクセス量a(1,2,1)、L1キャッシュmbの再利用度「R=1」のデータアクセス量a(1,1,2)、L1キャッシュmbの再利用度「R=2」のデータアクセス量a(1,2,2)を算出する。
図18に戻り、資源割当最適化モジュール22は、次に、変数Lが変数P以下であるか否かを判定する(S83)。変数Pは、CPUコアに固有のキャッシュメモリの最大のレベルを示す。本実施の形態例では、CPUコアに固有のキャッシュメモリは、L1キャッシュma、mbのみである。したがって、変数Pは値「1」を示す。初回、変数Lは値「1」を示すため、変数Lは変数P以下である(S83のYES)。つまり、資源割当最適化モジュール22は、処理中のキャッシュメモリがCPUコアに固有のキャッシュメモリである場合に、処理を継続する。
次に、資源割当最適化モジュール22は、次の階層レベル(L=L+1)のデータアクセス量a(L+1,R,C)を算出する(S84)。即ち、資源割当最適化モジュール22は、L2キャッシュm2のデータアクセス量a(L,R,C)(=(2,1,1)、a(2,2,1)、a(2,1,2)、a(2,2,2))を算出する。資源割当最適化モジュール22は、L1キャッシュma、mbの容量に収まらないデータアクセス量を、L2キャッシュm2のデータアクセス量として算出する。
具体的に、資源割当最適化モジュール22は、工程S82で算出した、L1キャッシュma、mbのデータアクセス量a(1,1,1)、a(1,2,1)、a(1,1,2)、a(1,2,2)を、L1キャッシュma、mbのセクタごとの容量V(L,C)(=V(1,1)、V(1,2))によって減算し、L2キャッシュm2のデータアクセス量を算出する。容量V(1,1)は、L1キャッシュmaの容量を示し、容量V(1,2)は、L1キャッシュmbの容量を示す。
前述したとおり、図2の例におけるL1キャッシュma、mbは、セクタキャッシュ機構を備えていない。この場合、資源割当最適化モジュール22は、例えば、L1キャッシュma、mbのセクタの分割比が、例えば、「セクタ0:セクタ1=5:5」であると仮定して、セクタごとの容量v(L,R,C)(=v(1,1,1)、v(1,2,1)、v(1,1,2)、v(1,2,2))を算出する。容量v(1,1,1)は、L1キャッシュmaのセクタ0(「R=0」)の容量を示し、容量v(1,2,1)は、L1キャッシュmaのセクタ1(「R=1」)の容量を示す。同様にして、容量v(1,1,2)は、L1キャッシュmbのセクタ0(「R=0」)の容量を示し、容量v(1,2,2)は、L1キャッシュmbのセクタ1(「R=1」)の容量を示す。
そして、資源割当最適化モジュール22は、L1キャッシュma、mbそれぞれのセクタごとの容量v(1,1,1)、v(1,2,1)、v(1,1,2)、v(1,2,2)から、L1キャッシュma、mbそれぞれのセクタごとのデータアクセス量a(1,1,1)、a(1,2,1)、a(1,1,2)、a(1,2,2)を減算し、L2キャッシュm2のデータアクセス量を算出する。
次に、資源割当最適化モジュール22は、L1キャッシュma、mbのセクタごとのキャッシュミス発生指標値I(L,R)=(I(1,1)、I(1,2))を算出する(S85)。具体的に、キャッシュミス発生指標値I(1,1)は、L1キャッシュ全体のセクタ0(「R=1」)のキャッシュミス発生指標値を示し、キャッシュミス発生指標値I(1,2)は、L1キャッシュ全体のセクタ1(「R=2」)のキャッシュミス発生指標値を示す。即ち、資源割当最適化モジュール22は、セクタごとに、キャッシュミス発生指標値を算出する。
資源割当最適化モジュール22は、L1キャッシュma、mbそれぞれについて、容量におけるデータアクセス量の割合に基づいて、キャッシュミス発生指標値を算出する。まず、資源割当最適化モジュール22は、CPUコア「C=1」、再利用度「R=1」のデータアクセス量a(1,1,1)と、CPUコア「C=2」、再利用度「R=1」のデータアクセス量a(1,1,2)とを加算し、再利用度「R=1」のデータアクセス量A(L,R)(=(1,1))を算出する。同様にして、資源割当最適化モジュール22は、CPUコア「C=1」、再利用度「R=2」のデータアクセス量a(1,2,1)と、CPUコア「C=2」、再利用度「R=2」のデータアクセス量a(1,2,2)とを加算し、再利用度「R=2」のデータアクセス量A(L,R)(=(1,2))を算出する。
そして、資源割当最適化モジュール22は、L1キャッシュ全体の再利用度「R=1」のデータアクセス量A(1,1)を、L1キャッシュ全体のセクタ0(「R=1」)のの容量V(1,1)によって除算し、キャッシュミス発生指標値I(1,1)を算出する。同様にして、資源割当最適化モジュール22は、L1キャッシュ全体の再利用度「R=2」のデータアクセス量A(1,2)を、L1キャッシュ全体のセクタ1(「R=2」)のの容量V(1,2)によって除算し、キャッシュミス発生指標値I(1,2)を算出する。
次に、資源割当最適化モジュール22は、変数Lをインクリメントする(S86)。そして、資源割当最適化モジュール22は、変数Lが変数P以下であるか否かを判定する(S83)。前述したとおり、本実施の形態例において、「P=1」である。したがって、本実施の形態例によると、変数Lが変数Pを超えるため(S83のNO)、図18のフローチャートの処理が終了する。一方、CPU固有のキャッシュメモリが複数階層、存在する場合、資源割当最適化モジュール22は、別の階層のキャッシュメモリについて、キャッシュミス発生指標値を算出する。
図20は、共有キャッシュメモリのキャッシュミス発生指標値の算出処理を説明するフローチャート図である。この例では、資源割当最適化モジュール22は、図20にしたがって、L2キャッシュm2のキャッシュミス発生指標値の算出処理を説明する。
まず、資源割当最適化モジュール22は、変数Pをインクリメントした値を変数Lに代入する(S91)。この例では、資源割当最適化モジュール22は、変数Lに値「2」を代入する。次に、資源割当最適化モジュール22は、L2キャッシュm2のデータアクセス量を算出する(S92)。具体的に、資源割当最適化モジュール22は、図18の工程S84で算出した、CPUコア「C=1」、再利用度「R=1」のデータアクセス量a(2,1,1)と、CPUコア「C=2」、再利用度「R=1」のデータアクセス量a(2,1,2)とを加算し、再利用度「R=1」のデータアクセス量A(L,R)(=(2,1))を算出する。同様にして、資源割当最適化モジュール22は、CPUコア「C=1」、再利用度「R=2」のデータアクセス量a(2,2,1)と、CPUコア「C=2」、再利用度「R=2」のデータアクセス量a(2,2,2)とを加算し、再利用度「R=2」のデータアクセス量A(L,R)(=(2,2))を算出する。
次に、資源割当最適化モジュール22は、変数Lが変数M以下であるか否かを判定する(S93)。変数Mは、共有キャッシュメモリの最大レベルを示す。本実施の形態例では、共有キャッシュレベルの最大レベルは「2」である。したがって、変数Lは、変数M以下である(S93のYES)。次に、CPUが次レベル(L+1)の共有キャッシュメモリを備える場合、資源割当最適化モジュール22は、次レベルのキャッシュメモリに対するデータアクセス量A(3,1)(3,2)を算出する(S94)。具体的に、資源割当最適化モジュール22は、L2キャッシュm2のデータアクセス量A(L,R)(=A(2,1)(2,2))から、L2キャッシュm2の容量V(L,R)=(V(2,1)、V(2,2))を減算することによって、L3キャッシュのデータアクセス量A(3,1)(3,2)を算出する。
次に、資源割当最適化モジュール22は、L2キャッシュm2のセクタごとの、キャッシュミス発生指標値I(L,R)(=I(2,1)、I(2,2))を算出する(S95)。資源割当最適化モジュール22は、工程S92で算出した、L2キャッシュm2の再利用度(セクタ)ごとのデータアクセス量A(L,R)(=A(2,1)、A(2,2))を用いる。また、資源割当最適化モジュール22は、セクタ0の容量V(2,1)、及び、セクタ1の容量V(2,2)を算出する。1つのwayのサイズは、例えば、512バイトである。例えば、パターンとして入力されたセクタの分割比のパターンが「セクタ0:セクタ1=2:8」である場合、再利用度「R=1」(セクタ0)の容量V(2,1)は「1024=512×2」バイト、再利用度「R=2」(セクタ1)の容量V(2,2)は「4096=512×8」バイトとなる。
具体的に、資源割当最適化モジュール22は、L2キャッシュの再利用度「R=1」のデータアクセス量A(2,1)を、L2キャッシュm2のセクタ0(「R=1」)のの容量V(2,1)によって除算し、キャッシュミス発生指標値I(2,1)を算出する。同様にして、資源割当最適化モジュール22は、L2キャッシュm2の再利用度「R=2」のデータアクセス量A(2,2)を、L2キャッシュm2のセクタ1(「R=2」)のの容量V(2,2)によって除算し、キャッシュミス発生指標値I(2,2)を算出する。
次に、資源割当最適化モジュール22は、変数Lをインクリメントする(S96)。そして、資源割当最適化モジュール22は、変数Lが変数M以下であるか否かを判定する(S93)。変数Lが変数M以下である場合(S93のYES)、即ち、CPUがL3キャッシュを備える場合、資源割当最適化モジュール22は、L3キャッシュのキャッシュミス発生指標値を算出する(S94〜S96)。
このように、図18、図20にしたがって、資源割当最適化モジュール22は、セクタの分割比のパターンにおける、L1キャッシュma、mb、L2キャッシュm2のキャッシュミス発生指標値を算出する。次に、資源割当最適化モジュール22は、L1キャッシュma、mb、L2キャッシュm2のキャッシュミス発生指標値を入力として、L1キャッシュma、mb、L2キャッシュm2のキャッシュミス発生回数を算出する。
具体的に、L1キャッシュma、mbのキャッシュミス発生回数M(1)を算出する式1は、例えば、次のとおりである。資源割当最適化モジュール22は、キャッシュミス発生指標値、及び、データアクセス量の対数に基づいて、キャッシュミス発生回数を算出する。値I(L,R)(=I(1,1)、I(1,2))は、L1キャッシュma、mbの、セクタ(再利用度)ごとの、キャッシュミス発生指標値である。値A(L,R)(=A(1,1)、A(1,2))は、L1キャッシュma、mbのセクタ(再利用度)ごとのデータアクセス量である。式1における係数e(1),e(2),e(3),e(4)は、設計データに基づく重回帰分析に基づいて、予め、求められる。このように、セクタごとに、異なる係数が適用される。
M(1)=e(1)*I(1,1)+e(2)*I(1,2)+e(3)*log(A(1,1))+e(4)*log(A(1,2))…式1
L2キャッシュm2のキャッシュミス発生回数M(2)を算出する式2は、例えば、次のとおりである。値I(L,R)(=I(2,1)(2,2))は、L2キャッシュm2の、セクタ(再利用度)ごとのキャッシュミス発生指標値である。値A(L,R)(=A(2,1)、A(2,2))は、L2キャッシュm2のセクタ(再利用度)ごとのデータアクセス量である。式2における係数f(1),f(2),f(3),f(4)は、設計データに基づく重回帰分析に基づいて、予め、求められる。セクタごとに、異なる係数が適用される。
M(2)=f(1)*I(2,1)+f(2)*I(2,2)+f(3)*log(A(2,1))+f(4)*log(A(2,2))…式2
これにより、資源割当最適化モジュール22は、各階層レベルのキャッシュミス発生回数M(1)、M(2)を算出する。M(1)は、L1キャッシュma、mbのキャッシュミス発生回数である。M(2)は、L2キャッシュm2のキャッシュミス発生回数である。次に、資源割当最適化モジュール22は、算出した、各階層レベルのキャッシュミス発生回数M(1)、M(2)を入力として、処理遅延時間を示す評価値を算出する。処理遅延時間を示す評価値を算出する式3は、例えば、次のとおりである。式3における係数P(1),P(2)は、各キャッシュレベルの1回あたりキャッシュミスペナルティを示す。係数P(1),P(2)は、設計データに基づく重回帰分析に基づいて、予め、求められる。
P(1)*M(1)+P(2)*M(2)…式3
式3では、階層レベルごとに、係数P(1),P(2)が異なる。キャッシュミス発生回数の処理遅延時間に対する寄与率は、キャッシュレベルの階層にしたがって異なる。したがって、資源割当最適化モジュール22は、階層ごとに重みが異なる係数P(1),P(2)を、キャッシュミス発生回数に適用することによって処理遅延時間を高精度に算出する。これにより、各レベルのキャッシュメモリのキャッシュミス発生回数に基づいて、最適なL2キャッシュm2のセクタの分割比が算出可能になる。
なお、式3では、キャッシュミス発生回数M(1)、M(2)が小さい場合に、処理遅延時間を示す評価値が短くなる。また、式3によると、キャッシュミス発生回数M(1)、M(2)の比が最適な比率である場合に、処理遅延時間を示す評価値が小さくなる。したがって、L1キャッシュがセクタキャッシュ機構を備える場合、L2キャッシュm2に加えて、L1キャッシュのセクタの分割比も最適化可能になる。
前述したように、計算ノード300が複数の階層のキャッシュメモリを有する場合、キャッシュミス発生回数の処理遅延時間に対する寄与率は、キャッシュレベルの階層レベルによって異なる。したがって、資源割当最適化モジュール22は、階層レベルごとのキャッシュミス発生回数ではなく、計算ノード300における処理遅延時間を、セクタの分割比に対応する性能の指標とする。これにより、資源割当最適化モジュール22は、より適切なセクタの分割比を算出することができる。
ただし、この例に限定されるものではない。資源割当最適化モジュール22は、キャッシュミス発生回数を、セクタの分割比に対応する性能の指標としてもよい。または、資源割当最適化モジュール22は、セクタごとのキャッシュミス発生指標値を、セクタの分割比に対応する性能の指標としてもよい。
次に、実行フェーズのキャッシュセクタ割当制御モジュール23(図6、図7)の処理の詳細を説明する。
[キャッシュセクタ割当制御処理]
図21は、図12に示すキャッシュセクタ割当制御処理(S22、S25)を説明するフローチャート図である。キャッシュセクタ割当制御モジュール23は、図13〜図20で説明した資源割当最適化モジュール22によって算出されたセクタの分割比とともに、システムコールの発行指示を受け付ける。そして、キャッシュセクタ割当制御モジュール23は、L2キャッシュm2のシステムコールを発行する(S51)。システムコールのパラメータには、セクタごとの最大way数が指定される。
システムコールの発行に応答して、セクタ構成レジスタドライバ25は、セクタ構成レジスタの設定依頼を受け付ける(S52)。そして、セクタ構成レジスタドライバ25は、システムコールの引数を解析して、セクタ構成レジスタへの設定値を求める(S53)。そして、セクタ構成レジスタドライバ25は、設定値をセクタ構成レジスタに設定する(S54)。これにより、L2キャッシュm2におけるセクタの分割比が変更される。
図22は、セクタの分割比の変更例を説明する図である。例えば、図8のタイミングt2にて、資源割当最適化モジュール22は、セクタの分割比「セクタ0:セクタ1=1:9」を算出する。したがって、キャッシュセクタ割当制御モジュール23は、セクタ0のウェイ数を1、セクタ1のウェイ数を9に変更するシステムコールを発行する。これにより、ジョブ1、ジョブ2を実行中の計算ノード300は、L2キャッシュm2のセクタの分割比を、ループ処理A、ループ処理Bの処理性能を向上するセクタの分割比に設定することができる。したがって、計算ノード300は、ループ処理A、ループ処理Bの処理の性能を向上させ、ジョブ1、ジョブ2の処理をより高速に実行することができる。
以上のように、本実施の形態例における情報処理装置(計算ノード300)は、データの再利用度に応じて分割されるセクタ機能を備える共有キャッシュメモリと、共有キャッシュメモリのセクタの分割比を変更する制御ユニットと、を有する。そして、制御ユニットは、第1のジョブ、第2のジョブの実行中に、第2のジョブのプログラムの指定に応答して、第1、第2のジョブがアクセスするデータのサイズ及びアクセス回数を有するデータアクセス量と、共有キャッシュメモリの容量とに基づいて、セクタの分割比を算出し、算出したセクタの分割比に変更する。
これにより、情報処理装置は、ジョブの実行中に、実行中の複数のジョブのデータアクセス量と、搭載するキャッシュメモリのセクタの構成に応じて、複数のジョブに最適なセクタの分割比を算出できる。そして、情報処理装置は、最適なセクタの分割比に基づいて、複数のジョブの処理時の性能を向上させることができる。したがって、情報処理装置は、実行中のジョブがいずれの組み合わせであっても、実行中の複数のジョブに対して、セクタの分割比を最適化することができる。
また、本実施の形態例における情報処理装置の制御ユニットは、実行中の第1、第2のジョブのデータアクセス量の各データのサイズを、データのアクセス回数に応じた第1の再利用度、第1の再利用度より大きい第2の再利用度ごとに合計した第1、第2のデータアクセス量と、共有キャッシュメモリの、第1、第2の再利用度に対応する第1、第2のセクタの容量と、に基づいてセクタの分割比を算出する。
これにより、情報処理装置は、実行中の複数のジョブの再利用度別のデータアクセス量の合計を算出することができる。そして、情報処理装置は、再利用度別のデータアクセス量と、共有キャッシュメモリの再利用度に応じた各セクタの容量に基づいて、複数のジョブに最適なセクタの分割比を算出にすることができる。
また、本実施の形態例における情報処理装置の制御ユニットは、第1、第2のセクタのデータアクセス量と、第1、第2のセクタの容量とに基づいてキャッシュミスの発生回数を算出し、算出したキャッシュミスの発生回数に基づいて、セクタの分割比を算出する。これにより、情報処理装置は、セクタごとのデータアクセス量と、各セクタの容量とに基づいて、キャッシュミスの発生回数を算出することによって、複数のジョブに最適なセクタの分割比を算出することができる。
また、本実施の形態例における情報処理装置の制御ユニットは、第1、第2のセクタのデータアクセス量と、第1、第2のセクタの容量とに基づいて、第1のセクタのキャッシュミスの発生指標を示す第1の指標値、及び、第2のセクタのキャッシュミスの発生指標を示す第2の指標値を算出し、第1の指標値と第2の指標値に異なる重みを適用して、キャッシュミス発生回数を算出する。これにより、情報処理装置は、セクタごとのデータアクセス量と、各セクタの容量とに基づいて算出したセクタごとのキャッシュミスの発生指標値に基づいて、キャッシュミスの発生回数を算出することができる。また、情報処理装置は、セクタごとに算出したキャッシュミスの発生指標値に、セクタごとに異なる重みを適用することによって、共有キャッシュメモリにおけるキャッシュミスの発生回数を高精度に算出することができる。
また、本実施の形態例における情報処理装置の共有キャッシュメモリは、複数階層の共有キャッシュメモリである。また、制御ユニットは、第1の階層の共有キャッシュメモリの第1のキャッシュミスの発生回数と、第2の階層の共有キャッシュメモリの第2のキャッシュミスの発生回数とを算出し、第1のキャッシュミスの発生回数と第2のキャッシュミスの発生回数に異なる重みを適用して、処理遅延時間を示す値を算出する。これにより、情報処理装置は、各階層のキャッシュメモリのキャッシュミス回数に、階層ごとに異なる重みを適用することによって、情報処理装置における処理遅延時間を高精度に算出することができる。
また、本実施の形態例における情報処理装置の制御ユニットは、処理遅延時間を示す値が最少となるセクタの分割比を算出する。これにより、情報処理装置は、情報処理装置で実行される複数のジョブの合計の処理時間を短縮することができる。
また、本実施の形態例における情報処理装置によると、最適化区間は、ループ処理に対応する。したがって、情報処理装置は、プログラム内の処理のうち、処理時間への影響度が高いループ処理を、セクタの分割比の最適化の対象処理とすることができる。
また、本実施の形態例における情報処理装置の制御ユニットは、さらに、第2のジョブのプログラムの指定に応答して、変更の前のセクタの分割比に変更する。これにより、情報処理装置は、最適化区間が終了したときに、セクタの分割比をもとに戻すことができる。つまり、情報処理装置は、最適化区間のみを対象として、実行中の複数のジョブに対して最適に、セクタの分割比を変更することができる。
また、本実施の形態例における情報処理装置によると、共有キャッシュメモリは、1階層、または、複数階層の共有キャッシュメモリであって、セクタの分割比は、それぞれの階層の共有キャッシュメモリのセクタの分割比である。これにより、情報処理装置は、情報処理装置が複数の階層の共有キャッシュメモリを備える場合についても、複数の階層の共有キャッシュメモリそれぞれのセクタの分割比を最適化することができる。
また、本実施の形態例における情報処理装置の制御ユニットは、プログラムのコンパイル時に、最適化区間のデータアクセス量と、最適化区間を指定するコードとを追加して生成された前記プログラムを取得し、プログラムをジョブとして実行する。これにより、情報処理装置は、ジョブの実行中に、複数のジョブに最適なセクタの分割比を算出可能にする。
[第2の実施の形態例]
第2の実施の形態例では、情報処理システムは、第1の実施の形態例における構成に加えて、ジョブへの計算ノード300の割り当ての最適化処理を行う。情報処理システムは、ジョブに、計算ノード300を割り当てる際に、複数の計算ノード300のうち、最適な計算ノード300をジョブに割り当てる。
図23は、第2の実施の形態例における、ジョブの計算ノード300への割り当て処理の概要を説明する図である。図23の例では、情報処理システムが2つの計算ノード300−1、300−2を有する場合を例示する。したがって、図23の例では、情報処理システムは、2つの計算ノード300−1、300−2から、ジョブに割り当てる最適な計算ノード300を選択する。また、計算ノード300−1、300−2が備えるCPU31−1、31−2は、それぞれ2つのCPUコアca−1、cb−1、ca−2、cb−2を有する。図23の例において、計算ノード300−1のCPUコアca−1は、ジョブ11を実行中である。また、計算ノード300−2のCPUコアca−2は、ジョブ12を実行中である。
なお、この例では、説明を簡素化するために2つの計算ノード300−1、300−2のみを示しているが、情報処理システムは、一般的に、多数の計算ノード300を有する。したがって、情報処理システムは、多数の計算ノード300から、ジョブに割り当てる最適な計算ノード300を選択する。
制御ノード100は、新たなジョブ13を計算ノード300に割り当てる場合に、ジョブを計算ノード300−1のCPUコアcb−1、計算ノード300−2のCPUコアcb−2に、それぞれに割り当てたと仮定した場合における、複数のジョブの処理遅延時間を示す評価値を算出する。そして、制御ノード100は、計算ノード300−1、300−2間の処理遅延時間の分散が小さくなるように、ジョブを計算ノード300に割り当てる。計算ノード300−1、300−2間の処理遅延時間の分散が小さいことは、計算ノード300−1、300−2間で、処理遅延時間が均等化されることを示す。一般に、情報処理システム全体処理時間は、複数の計算ノード300−1、300−2のうち、最も処理が遅い計算ノードの処理時間に対応する。したがって、計算ノード300間の処理遅延時間を均等化することにより、複数ジョブを並列に実行する場合における、情報処理システム上の性能低下を抑えることが可能になる。
このように、制御ノード100は、情報処理システム内の計算ノード300間での処理遅延時間の分散が小さくなる、計算ノード300にジョブを割り当てる。なお、このとき、処理遅延時間は、第1の実施の形態例と同様にして、L2キャッシュm2のセクタの分割比を最適化した場合における処理遅延時間を示す。
第2の実施の形態例における、計算ノード300、制御ノード100、コンパイルノード500、ファイルサーバ600のハードウェア構成は、第1の実施の形態例と同様である。第2の実施の形態例における制御ノード100のジョブスケジューラプログラムpr1は、資源割当最適化モジュール22に加えて、CPUコア割当制御モジュール26(図示せず)を有する。
図24は、CPUコア割当制御モジュール26の処理を説明するフローチャート図である。制御ノード100のCPUコア割当制御モジュール26は、新たに実行する対象のジョブ(以下、新規ジョブと称する)が生じた場合に、新規ジョブを割り当てる計算ノード300を求める。初めに、CPUコア割当制御モジュール26は、運用規約、及び、方針に関する条件にしたがって、情報処理システムが有する計算ノード300から、新規ジョブに割り当てる計算ノード300候補の集合を限定する(S101)。
次に、CPUコア割当制御モジュール26は、CPU間の通信時間に関する条件にしたがって、新規ジョブに割り当てる計算ノード300候補の集合を限定する(S102)。このとき、計算ノード300候補が有するCPUコアのうち、いずれかのCPUコアは、新規ジョブに割り当て可能であるものとする。図23の例によると、CPUコア割当制御モジュール26は、計算ノード300−1、計算ノード300−2を候補として限定する。
次に、CPUコア割当制御モジュール26は、新規ジョブのプロセス及びスレッドに基づいて、計算ノード300候補のうち、目的関数の評価値が最適となる計算ノード300を求める(S103)。目的関数は、情報処理システムが有する複数の計算ノード300間の処理遅延時間の分散値を算出する関数である。具体的に、CPUコア割当制御モジュール26は、新規ジョブに計算ノード300−1のCPUコアcb−1、計算ノード300−2のCPUコアcb−2を割り当てたケースごとの、計算ノード300間の処理遅延時間の分散値を算出する。処理の詳細については、後述する。そして、CPUコア割当制御モジュール26は、工程S103で求めた計算ノード300を、新規ジョブに割り当てる(S104)。
次に、図24の工程S103の処理の詳細を説明する。CPUコア割当制御モジュール26は、計算ノード300候補ごとに、処理遅延時間の分散を算出する。この例では、計算ノード300候補は、計算ノード300−1、300−2である。したがって、第1のパターンとして、CPUコア割当制御モジュール26は、計算ノード300−1のCPUコアcb−1にジョブを割り当てた場合における、計算ノード300−1、300−2それぞれの処理遅延時間を示す値を算出する。そして、CPUコア割当制御モジュール26は、算出した、計算ノード300−1、300−2間における処理遅延時間の分散を算出する。
そして、第2のパターンとして、CPUコア割当制御モジュール26は、計算ノード300−2のCPUコアcb−2にジョブを割り当てた場合における、計算ノード300−1、300−2それぞれの処理遅延時間を示す値を算出する。そして、CPUコア割当制御モジュール26は、算出した、計算ノード300−1、300−2間における処理遅延時間の分散を算出する。
そして、CPUコア割当制御モジュール26は、第1のパターンと、第2のパターンとから、処理遅延時間の分散が小さくなるパターンを算出する。そして、CPUコア割当制御モジュール26は、処理遅延時間の分散が小さくなるパターンの計算ノード300−1、300−2を、ジョブに割り当てる。
より具体的に、1つのパターンにおける、処理遅延時間の分散の算出処理を説明する。この例では、計算ノード300−1のCPUコアcb−1(第1のパターン)にジョブを割り当てた場合における、処理遅延時間を示す値の算出処理を説明する。CPUコア割当制御モジュール26は、新規ジョブに、計算ノード300−1を割り当てた場合における、キャッシュミス発生回数M(1)、M(2)を算出する。キャッシュ発生回数M(1)、M(2)の算出方法は、第1の実施の形態例と同様である。なお、このとき、キャッシュ発生回数M(1)、M(2)は、計算ノード300−1のキャッシュメモリのセクタの分割比が最適化された状態における値である。計算ノード300−1のキャッシュミス発生回数M(1)、M(2)を、キャッシュミス発生回数M(1,1)、M(1,2)とする。
また、CPUコア割当制御モジュール26は、計算ノード300−2における、キャッシュミス発生回数M(1)、M(2)を算出する。計算ノード300−2のキャッシュミス発生回数M(1)、M(2)を、キャッシュミス発生回数M(2,1)、M(2,2)とする。
そして、CPUコア割当制御モジュール26は、第1の実施の形態例と同様にして、計算ノード300−1、300−2ごとに、キャッシュミス発生回数に基づいて、処理遅延時間D(i)を算出する。変数iは、計算ノードを示す。処理遅延時間D(i)を算出する計算式は、次の式4のとおりである。式4における、変数P(ノード番号,L)(=P(i,1)、P(i,2))は、設計データ等に基づいて予め、指定される。つまり、式4によると、計算ノードごとに、異なる係数Pが与えられる。
D(i)=P(i,1)*M(i,1)+P(i,2)*M(i,2)…式4
これにより、CPUコア割当制御モジュール26は、第1のパターンにおける、計算ノード300−1、300−2それぞれの処理遅延時間D(1)、D(2)を算出する。そして、CPUコア割当制御モジュール26は、処理遅延時間D(1)、D(2)の分散を算出する。CPUコア割当制御モジュール26は、処理遅延時間D(i)の平均値Dを入力として、次の式5にしたがって、計算ノード間の処理遅延時間の分散を算出する。式5における変数kは、計算ノード300の数を示す。この例では、「k=2」である。

(1/k)*Σ(D(i)−D)^2 …式5
j=1
これにより、CPUコア割当制御モジュール26は、計算ノード300−1のCPUコアcb−1をジョブに割り当てた場合(第1のパターン)における処理遅延時間の分散を算出する。同様にして、CPUコア割当制御モジュール26は、計算ノード300−2のCPUコアcb−2をジョブに割り当てた場合(パターン2)における処理遅延時間の分散を算出する。そして、CPUコア割当制御モジュール26は、計算ノード300−1(第2のパターン)、300−2(パターン2)のうち、処理遅延時間の分散が小さい計算ノードを、新規ジョブに割り当てる。
以上のように、本実施の形態例における情報処理システムによると、複数の計算ノード300から、新規ジョブを割り当てる最適な計算ノード300を選出することができる。このとき、情報処理システムは、複数の計算ノード300の間で、処理遅延時間の分散が最少となる計算ノード300を新規ジョブに割り当てる。したがって、情報処理システムは、新規ジョブを、最適な計算ノード300に割り当てることによって、情報処理システム全体におけるジョブの実行時間を短くすることができる。
[他の実施の形態例]
本実施の形態例では、計算ノード300のCPU31が、共有キャッシュメモリとして、L2キャッシュm2のみを有する場合を例示した。本実施の形態例における情報処理システムは、CPU31がL2キャッシュm2に加えて、さらに、L3キャッシュを有する場合にも、適用可能である。この場合、本実施の形態例における情報処理システムは、第1の実施の形態例に示す処理を適用することにより、L2キャッシュm2、及び、L3キャッシュにおける最適なセクタの分割比を算出可能になる。
また、本実施の形態例における情報処理システムは、CPU31が、各CPUコアに固有のL1キャッシュ及びL2キャッシュと、各CPUコアが共通して使用するL3キャッシュを有する場合についても適用可能である。この場合、本実施の形態例における情報処理システムは、第1の実施の形態例に示す処理を適用することにより、L3キャッシュにおける最適なセクタの分割比を算出可能になる。
また、本実施の形態例おけるL1キャッシュがセクタ機能を備えていない場合を例示した。ただし、L1キャッシュがセクタ機能を備えている場合、本実施の形態例における情報処理システムは、L1キャッシュのセクタの分割比の最適化にも有効である。
以上の実施の形態をまとめると、次の付記のとおりである。
(付記1)
データの再利用度に応じて分割されるセクタ機能を備える共有キャッシュメモリと、
前記共有キャッシュメモリのセクタの分割比を変更する制御ユニットと、を有し、
前記制御ユニットは、第1のジョブ、第2のジョブの実行中に、前記第2のジョブのプログラムの指定に応じて、前記第1、第2のジョブがアクセスするデータのサイズ及びアクセス回数を有するデータアクセス量と、前記共有キャッシュメモリの容量とに基づいて、前記セクタの分割比を算出し、前記算出したセクタの分割比に変更する情報処理装置。
(付記2)
付記1において、
前記制御ユニットは、前記実行中の第1、第2のジョブの前記データアクセス量の各データの前記サイズを、前記データの前記アクセス回数に応じた第1の再利用度、前記第1の再利用度より大きい第2の再利用度ごとに合計した前記第1、第2のデータアクセス量と、前記共有キャッシュメモリの、前記第1、第2の再利用度に対応する第1、第2のセクタの容量と、に基づいて前記セクタの分割比を算出する情報処理装置。
(付記3)
付記2において、
前記制御ユニットは、前記第1、第2のセクタのデータアクセス量と、前記第1、第2のセクタの容量とに基づいてキャッシュミスの発生回数を算出し、前記算出したキャッシュミスの発生回数に基づいて、前記セクタの分割比を算出する情報処理装置。
(付記4)
付記3において、
前記制御ユニットは、前記第1、第2のセクタのデータアクセス量と、前記第1、第2のセクタの容量とに基づいて、前記第1のセクタのキャッシュミスの発生指標を示す第1の指標値、及び、前記第2のセクタのキャッシュミスの発生指標を示す第2の指標値を算出し、前記第1の指標値と前記第2の指標値に異なる重みを適用して、前記キャッシュミス発生回数を算出する情報処理装置。
(付記5)
付記3または4において、
前記共有キャッシュメモリは、複数階層の共有キャッシュメモリであって、
前記制御ユニットは、第1の階層の共有キャッシュメモリの第1のキャッシュミスの発生回数と、第2の階層の共有キャッシュメモリの第2のキャッシュミスの発生回数とを算出し、前記第1のキャッシュミスの発生回数と第2のキャッシュミスの発生回数に異なる重みを適用して、処理遅延時間を示す値を算出する情報処理装置。
(付記6)
付記1乃至5のいずれかにおいて、
前記制御ユニットは、処理遅延時間を示す値が最少となるセクタの分割比を算出する情報処理装置。
(付記7)
前記1乃至6のいずれかにおいて、
前記最適化区間は、ループ処理に対応する情報処理装置。
(付記8)
付記1乃至7のいずれかにおいて、
前記制御ユニットは、さらに、前記第2のジョブのプログラムの指定に応答して、前記変更する前のセクタの分割比に変更する情報処理装置。
(付記9)
付記1乃至8のいずれかにおいて、
前記共有キャッシュメモリは、1階層、または、複数階層の共有キャッシュメモリであって、
前記セクタの分割比は、それぞれの階層の共有キャッシュメモリのセクタの分割比である情報処理装置。
(付記10)
付記1乃至9のいずれかにおいて、さらに、
第1、第2の演算ユニットを有し、
前記第1の演算ユニットは前記第1のジョブを実行し、
前記第2の演算ユニットは前記第2のジョブを実行する情報処理装置。
(付記11)
付記1乃至10のいずれかにおいて、
前記制御ユニットは、プログラムのコンパイル時に、前記最適化区間のデータアクセス量と、前記最適化区間を指定するコードとを追加して生成された前記プログラムを取得し、前記プログラムをジョブとして実行する情報処理装置。
(付記12)
データの再利用度に応じて分割されるセクタ機能を備える共有キャッシュメモリと、
前記共有キャッシュメモリのセクタの分割比を変更する第1の制御ユニットと、を有する第1の情報処理装置と、
前記共有セクタの分割比を算出する第2の制御ユニットを有する第2の情報処理装置と、を有し、
前記第1の情報処理装置の前記第1の制御ユニットは、第1のジョブ、第2のジョブの実行中に前記第2のジョブのプログラムの指定に応じて、前記第2の情報処理装置に通知し、
前記第2の情報処理装置の前記第2の制御ユニットは、前記第1、第2のジョブがアクセスするデータのサイズ及びアクセス回数を有するデータアクセス量と、前記共有キャッシュメモリの容量とに基づいて、前記セクタの分割比を算出して、前記第1の情報処理装置に通知し、
前記第1の情報処理装置の前記第2の制御ユニットは、前記セクタの分割比を、前記通知されたセクタの分割比に変更する情報処理システム。
(付記13)
付記12において、
前記第2の情報処理装置の前記第2の制御ユニットは、前記実行中の第1、第2のジョブの前記データアクセス量の各データの前記サイズを、前記データの前記アクセス回数に応じた第1の再利用度、前記第1の再利用度より大きい第2の再利用度ごとに合計した前記第1、第2のデータアクセス量と、前記共有キャッシュメモリの、前記第1、第2の再利用度に対応する第1、第2のセクタの容量と、に基づいて前記セクタの分割比を算出する情報処理システム。
(付記14)
付記13において、
前記第2の情報処理装置の前記第2の制御ユニットは、前記第1、第2のセクタのデータアクセス量と、前記第1、第2のセクタの容量とに基づいてキャッシュミスの発生回数を算出し、前記算出したキャッシュミスの発生回数に基づいて、前記セクタの分割比を算出する情報処理システム。
(付記15)
第2の情報処理装置が、第1のジョブ、第2のジョブの実行中に、前記第2のジョブのプログラムの指定に応じて、前記第1、第2のジョブがアクセスするデータのサイズ及びアクセス回数を有するデータアクセス量と、前記データの再利用度に応じて分割されるセクタ機能を備える共有キャッシュメモリの容量とに基づいて、前記共有キャッシュメモリのセクタの分割比を算出する算出工程と、
前記セクタの分割比を、前記算出したセクタの分割比に変更する変更工程と、
を有する情報処理装置の制御方法。
(付記16)
付記15において、
第1の情報処理装置が、前記第1、第2のジョブを実行し、前記第2のジョブのプログラムの指定に応じて、前記第2の情報処理装置に通知する通知工程を、さらに有し、
前記変更工程は、前記第1の情報処理装置が、前記第1の情報処理装置の前記セクタの分割比を、前記第2の情報処理装置から通知される、前記算出したセクタの分割比に変更する情報処理装置の制御方法。
(付記17)
付記15または16において、
前記算出工程は、前記実行中の第1、第2のジョブの前記データアクセス量の各データの前記サイズを、前記データの前記アクセス回数に応じた第1の再利用度、前記第1の再利用度より大きい第2の再利用度ごとに合計した前記第1、第2のデータアクセス量と、前記共有キャッシュメモリの、前記第1、第2の再利用度に対応する第1、第2のセクタの容量と、に基づいて前記セクタの分割比を算出する情報処理装置の制御方法。
(付記18)
第2の情報処理装置が、第1のジョブ、第2のジョブの実行中に、前記第2のジョブのプログラムの指定に応じて、前記第1、第2のジョブがアクセスするデータのサイズ及びアクセス回数を有するデータアクセス量と、前記データの再利用度に応じて分割されるセクタ機能を備える共有キャッシュメモリの容量とに基づいて、前記共有キャッシュメモリのセクタの分割比を算出し、
前記セクタの分割比を、前記算出したセクタの分割比に変更する、
処理をコンピュータに実行させる情報処理装置の制御プログラム。
(付記19)
付記18において、
前記第1の情報処理装置が、前記第1、第2のジョブを実行し、前記第2のジョブのプログラムの指定に応じて、さらに、前記第2の情報処理装置に通知し、
前記第1の情報処理装置が、前記第1の情報処理装置の前記セクタの分割比を、前記第2の情報処理装置から通知される前記算出したセクタの分割比に変更する、
処理をコンピュータに実行させる情報処理装置の制御プログラム。
(付記20)
付記18または19において、
前記第2の情報処理装置は、前記実行中の第1、第2のジョブの前記データアクセス量の各データの前記サイズを、前記データの前記アクセス回数に応じた第1の再利用度、前記第1の再利用度より大きい第2の再利用度ごとに合計した前記第1、第2のデータアクセス量と、前記共有キャッシュメモリの、前記第1、第2の再利用度に対応する第1、第2のセクタの容量と、に基づいて前記セクタの分割比を算出する、
処理をコンピュータに実行させる情報処理装置の制御プログラム。
100:制御ノード、11:CPU、12:メモリ、13:NIC、21:変数別キャッシュ使用状況の解析モジュール、22:資源割当最適化モジュール、23:キャッシュセクタ割当制御モジュール、300:計算ノード、31:CPU、32:メモリ、33:NIC、500:コンパイルノード、600:ファイルサーバ

Claims (16)

  1. データの再利用度に応じて分割されるセクタ機能を備える共有キャッシュメモリと、
    前記共有キャッシュメモリのセクタの分割比を変更する制御ユニットと、を有し、
    前記制御ユニットは、第1のジョブ、第2のジョブの実行中に、前記第2のジョブのプログラムの指定に応じて、前記第1、第2のジョブがアクセスするデータのサイズ及びアクセス回数を有するデータアクセス量と、前記共有キャッシュメモリの容量とに基づいて、前記セクタの分割比を算出し、前記算出したセクタの分割比に変更する情報処理装置。
  2. 請求項1において、
    前記制御ユニットは、前記実行中の第1、第2のジョブの前記データアクセス量の各データの前記サイズを、前記データの前記アクセス回数に応じた第1の再利用度、前記第1の再利用度より大きい第2の再利用度ごとに合計した前記第1、第2のデータアクセス量と、前記共有キャッシュメモリの、前記第1、第2の再利用度に対応する第1、第2のセクタの容量と、に基づいて前記セクタの分割比を算出する情報処理装置。
  3. 請求項2において、
    前記制御ユニットは、前記第1、第2のセクタのデータアクセス量と、前記第1、第2のセクタの容量とに基づいてキャッシュミスの発生回数を算出し、前記算出したキャッシュミスの発生回数に基づいて、前記セクタの分割比を算出する情報処理装置。
  4. 請求項3において、
    前記制御ユニットは、前記第1、第2のセクタのデータアクセス量と、前記第1、第2のセクタの容量とに基づいて、前記第1のセクタのキャッシュミスの発生指標を示す第1の指標値、及び、前記第2のセクタのキャッシュミスの発生指標を示す第2の指標値を算出し、前記第1の指標値と前記第2の指標値に異なる重みを適用して、前記キャッシュミス発生回数を算出する情報処理装置。
  5. 請求項3または4において、
    前記共有キャッシュメモリは、複数階層の共有キャッシュメモリであって、
    前記制御ユニットは、第1の階層の共有キャッシュメモリの第1のキャッシュミスの発生回数と、第2の階層の共有キャッシュメモリの第2のキャッシュミスの発生回数とを算出し、前記第1のキャッシュミスの発生回数と第2のキャッシュミスの発生回数に異なる重みを適用して、処理遅延時間を示す値を算出する情報処理装置。
  6. 請求項1乃至5のいずれかにおいて、
    前記制御ユニットは、処理遅延時間を示す値が最少となるセクタの分割比を算出する情報処理装置。
  7. 前記1乃至6のいずれかにおいて、
    前記最適化区間は、ループ処理に対応する情報処理装置。
  8. 請求項1乃至7のいずれかにおいて、
    前記制御ユニットは、さらに、前記第2のジョブのプログラムの指定に応答して、前記変更する前のセクタの分割比に変更する情報処理装置。
  9. 請求項1乃至8のいずれかにおいて、
    前記共有キャッシュメモリは、1階層、または、複数階層の共有キャッシュメモリであって、
    前記セクタの分割比は、それぞれの階層の共有キャッシュメモリのセクタの分割比である情報処理装置。
  10. 請求項1乃至9のいずれかにおいて、さらに、
    第1、第2の演算ユニットを有し、
    前記第1の演算ユニットは前記第1のジョブを実行し、
    前記第2の演算ユニットは前記第2のジョブを実行する情報処理装置。
  11. 請求項1乃至10のいずれかにおいて、
    前記制御ユニットは、プログラムのコンパイル時に、前記最適化区間のデータアクセス量と、前記最適化区間を指定するコードとを追加して生成された前記プログラムを取得し、前記プログラムをジョブとして実行する情報処理装置。
  12. データの再利用度に応じて分割されるセクタ機能を備える共有キャッシュメモリと、
    前記共有キャッシュメモリのセクタの分割比を変更する第1の制御ユニットと、を有する第1の情報処理装置と、
    前記共有セクタの分割比を算出する第2の制御ユニットを有する第2の情報処理装置と、を有し、
    前記第1の情報処理装置の前記第1の制御ユニットは、第1のジョブ、第2のジョブの実行中に前記第2のジョブのプログラムの指定に応じて、前記第2の情報処理装置に通知し、
    前記第2の情報処理装置の前記第2の制御ユニットは、前記第1、第2のジョブがアクセスするデータのサイズ及びアクセス回数を有するデータアクセス量と、前記共有キャッシュメモリの容量とに基づいて、前記セクタの分割比を算出して、前記第1の情報処理装置に通知し、
    前記第1の情報処理装置の前記第2の制御ユニットは、前記セクタの分割比を、前記通知されたセクタの分割比に変更する情報処理システム。
  13. 第2の情報処理装置が、第1のジョブ、第2のジョブの実行中に、前記第2のジョブのプログラムの指定に応じて、前記第1、第2のジョブがアクセスするデータのサイズ及びアクセス回数を有するデータアクセス量と、前記データの再利用度に応じて分割されるセクタ機能を備える共有キャッシュメモリの容量とに基づいて、前記共有キャッシュメモリのセクタの分割比を算出する算出工程と、
    前記セクタの分割比を、前記算出したセクタの分割比に変更する変更工程と、
    を有する情報処理装置の制御方法。
  14. 請求項13において、
    第1の情報処理装置が、前記第1、第2のジョブを実行し、前記第2のジョブのプログラムの指定に応じて、前記第2の情報処理装置に通知する通知工程を、さらに有し、
    前記変更工程は、第1の情報処理装置が、第1の情報処理装置の前記セクタの分割比を、前記第2の情報処理装置から通知される、前記算出したセクタの分割比に変更する情報処理装置の制御方法。
  15. 第2の情報処理装置が、第1のジョブ、第2のジョブの実行中に、前記第2のジョブのプログラムの指定に応じて、前記第1、第2のジョブがアクセスするデータのサイズ及びアクセス回数を有するデータアクセス量と、前記データの再利用度に応じて分割されるセクタ機能を備える共有キャッシュメモリの容量とに基づいて、前記共有キャッシュメモリのセクタの分割比を算出し、
    前記セクタの分割比を、前記算出したセクタの分割比に変更する、
    処理をコンピュータに実行させる情報処理装置の制御プログラム。
  16. 請求項15において、
    前記第1の情報処理装置が、前記第1、第2のジョブを実行し、前記第2のジョブのプログラムの指定に応じて、さらに、前記第2の情報処理装置に通知し、
    前記第1の情報処理装置が、前記第1の情報処理装置の前記セクタの分割比を、前記第2の情報処理装置から通知される前記算出したセクタの分割比に変更する、
    処理をコンピュータに実行させる情報処理装置の制御プログラム。
JP2014106155A 2014-05-22 2014-05-22 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラム Active JP6248808B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014106155A JP6248808B2 (ja) 2014-05-22 2014-05-22 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラム
US14/694,186 US9477601B2 (en) 2014-05-22 2015-04-23 Apparatus and method for determining a sector division ratio of a shared cache memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014106155A JP6248808B2 (ja) 2014-05-22 2014-05-22 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラム

Publications (2)

Publication Number Publication Date
JP2015222477A JP2015222477A (ja) 2015-12-10
JP6248808B2 true JP6248808B2 (ja) 2017-12-20

Family

ID=54556166

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014106155A Active JP6248808B2 (ja) 2014-05-22 2014-05-22 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラム

Country Status (2)

Country Link
US (1) US9477601B2 (ja)
JP (1) JP6248808B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016056217A1 (ja) * 2014-10-07 2016-04-14 日本電気株式会社 測定装置、測定システム、測定方法、および、プログラム
JP6665720B2 (ja) 2016-07-14 2020-03-13 富士通株式会社 情報処理装置、コンパイルプログラム、コンパイル方法、およびキャッシュ制御方法
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US11112970B2 (en) * 2017-06-12 2021-09-07 Sap Se Software system logging based on runtime analysis
EP3938894B1 (en) 2019-03-15 2023-08-30 INTEL Corporation Multi-tile memory management for detecting cross tile access, providing multi-tile inference scaling, and providing optimal page migration
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
KR20210136994A (ko) 2019-03-15 2021-11-17 인텔 코포레이션 매트릭스 가속기 아키텍처 내에서의 시스톨릭 분리
JP2021131613A (ja) 2020-02-18 2021-09-09 富士通株式会社 情報処理プログラム、情報処理装置および情報処理方法
US11580023B2 (en) * 2020-03-11 2023-02-14 Fujitsu Limited Information processing apparatus, computer-readable recording medium having stored therein memory control program, and computer-readable recording medium having stored therein information processing program
KR20210121527A (ko) * 2020-03-30 2021-10-08 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11556473B2 (en) * 2020-07-30 2023-01-17 EMC IP Holding Company LLC Cache memory management
JP2023076223A (ja) 2021-11-22 2023-06-01 富士通株式会社 分割プログラムおよび分割方法
WO2023165543A1 (zh) * 2022-03-02 2023-09-07 华为技术有限公司 共享缓存的管理方法、装置及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02181844A (ja) * 1989-01-06 1990-07-16 Matsushita Electric Ind Co Ltd キャッシュメモリ管理方法
JPH06243036A (ja) * 1993-02-12 1994-09-02 Hitachi Ltd キャッシュ制御システム
JPH09101916A (ja) * 1995-10-06 1997-04-15 Fujitsu Ltd マルチプロセス処理装置
GB9701960D0 (en) 1997-01-30 1997-03-19 Sgs Thomson Microelectronics A cache system
JP2002342163A (ja) * 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式
JP2003030047A (ja) * 2001-07-16 2003-01-31 Fujitsu Ltd キャッシュ装置およびキャッシュ方法
US6871264B2 (en) 2002-03-06 2005-03-22 Hewlett-Packard Development Company, L.P. System and method for dynamic processor core and cache partitioning on large-scale multithreaded, multiprocessor integrated circuits
CN101395586A (zh) * 2006-03-02 2009-03-25 Nxp股份有限公司 基于任务的执行阶段动态调整高速缓存分区大小的方法和设备
JP5217432B2 (ja) 2007-12-28 2013-06-19 富士通株式会社 セクタ機能付きキャッシュメモリ
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
JP5251689B2 (ja) 2009-04-02 2013-07-31 富士通株式会社 コンパイラプログラムおよびコンパイラ装置
JP5521687B2 (ja) * 2010-03-25 2014-06-18 富士通株式会社 分析装置、分析方法および分析プログラム

Also Published As

Publication number Publication date
US9477601B2 (en) 2016-10-25
JP2015222477A (ja) 2015-12-10
US20150339229A1 (en) 2015-11-26

Similar Documents

Publication Publication Date Title
JP6248808B2 (ja) 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラム
Lagar-Cavilla et al. Software-defined far memory in warehouse-scale computers
JP2020135499A (ja) データ処理装置、ストレージ装置およびプリフェッチ方法
Tian et al. Adaptive GPU cache bypassing
US20150161385A1 (en) Memory Management Parameters Derived from System Modeling
JP6166616B2 (ja) 情報処理方法、情報処理装置及びプログラム
Malicevic et al. Exploiting NVM in large-scale graph analytics
US9734075B2 (en) Cache memory control program, processor incorporating cache memory, and cache memory control method
Heirman et al. Near-side prefetch throttling: Adaptive prefetching for high-performance many-core processors
US11048540B2 (en) Methods and apparatus to manage heat in a central processing unit
US9733982B2 (en) Information processing device and method for assigning task
De Blanche et al. Addressing characterization methods for memory contention aware co-scheduling
US11797355B2 (en) Resolving cluster computing task interference
Perarnau et al. Controlling cache utilization of hpc applications
JP6042170B2 (ja) キャッシュ制御装置及びキャッシュ制御方法
Min et al. Vmmb: Virtual machine memory balancing for unmodified operating systems
US8490071B2 (en) Shared prefetching to reduce execution skew in multi-threaded systems
JP2008003882A (ja) コンパイラプログラム,リストベクトルの領域割当て最適化方法,コンパイル処理装置およびコンパイラプログラムを記録したコンピュータ読み取り可能な記録媒体
Boukhelef et al. A cost model for dbaas storage
Cheng et al. A user-level numa-aware scheduler for optimizing virtual machine performance
JP6877381B2 (ja) 情報処理装置、情報処理方法およびプログラム
Cook et al. Performance variability on xeon phi
JP6873942B2 (ja) 推定装置、推定方法およびプログラム
US20160188534A1 (en) Computing system with parallel mechanism and method of operation thereof
Cruz et al. A sharing-aware memory management unit for online mapping in multi-core architectures

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171012

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171106

R150 Certificate of patent or registration of utility model

Ref document number: 6248808

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150