JPWO2016157826A1 - データ配置先決定装置、方法およびプログラム - Google Patents

データ配置先決定装置、方法およびプログラム Download PDF

Info

Publication number
JPWO2016157826A1
JPWO2016157826A1 JP2017509258A JP2017509258A JPWO2016157826A1 JP WO2016157826 A1 JPWO2016157826 A1 JP WO2016157826A1 JP 2017509258 A JP2017509258 A JP 2017509258A JP 2017509258 A JP2017509258 A JP 2017509258A JP WO2016157826 A1 JPWO2016157826 A1 JP WO2016157826A1
Authority
JP
Japan
Prior art keywords
memory
program
placement destination
bandwidth
candidate
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
JP2017509258A
Other languages
English (en)
Other versions
JP6705443B2 (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2016157826A1 publication Critical patent/JPWO2016157826A1/ja
Application granted granted Critical
Publication of JP6705443B2 publication Critical patent/JP6705443B2/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/061Improving I/O performance
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • 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/0611Improving I/O performance in relation to response time
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Abstract

メモリ帯域の異なる複数のメモリを搭載したシステムで実行されるプログラムの実行時間の効率化を図ることができるデータ配置先決定装置等が開示される。係るデータ配置先決定装置は、対象プログラムのメモリに対する要求帯域と要求サイズを取得するプログラム情報取得手段と、配置先の候補メモリのメモリ帯域とメモリサイズを取得するシステム情報取得手段と、要求帯域に基づく優先度とメモリ帯域に基づく優先度を設定する優先度設定手段と、メモリサイズとメモリ帯域とを超過しない範囲で、設定された優先度に基づいて対象プログラムのデータの配置先を決定する第1の配置先決定手段と、配置先未決定プログラムに対して、メモリサイズを超過しない範囲で、設定された優先度と対象プログラムの要求帯域と候補メモリのメモリ帯域とに基づいて配置先を決定する第2の配置先決定手段とを備える。

Description

本発明は、プログラムで使用されるデータの配置先メモリを決定するデータ配置先決定装置、データ配置先決定方法およびデータ配置先決定プログラムの記録媒体に関する。
通常、複数のメモリが接続された計算機システムでは、プログラムで使用されるデータ(変数やオブジェクト等)をいずれのメモリに配置するかを決定する処理が行われている。
複数のメモリの中からプログラムで使用されるデータの配置先を決定する技術に関連して、例えば、特許文献1〜特許文献4に記載された技術がある。
例えば、特許文献1には、プログラムの優先度を当該プログラムの関数毎や変数毎や定数毎のアクセス回数を基に決定し、決定した優先度に従い、アクセス速度の速いメモリから順にメモリサイズの許す範囲で各プログラムを配置する方法が記載されている。
また、例えば特許文献2には、プログラムファイルの機械語コードを機能処理単位でグループ化したオブジェクトファイルに対して、各機能処理の実行頻度を基に配置先メモリを決定する方法が記載されている。
また、例えば特許文献3には、タスク優先度に応じたオブジェクトの重み付け優先度と、配置指示情報に基づく各オブジェクトの各配置可能領域に対する配置優先度とに基づいて、ソースコードの各オブジェクトを配置する方法が記載されている。
また、例えば特許文献4には、実行プログラムの関数のうち実行回数の多い関数や実行時間の長い関数をメモリ容量が許す限り読み込み速度の速いメモリに配置する方法が記載されている。また、特許文献4には、プロファイラが算出した、分配配置可能な全ての組み合わせに対する総実行時間を基に配置先を決定する方法も記載されている。
特開2000−003268号公報 特開2003−330730号公報 特開2011−76516号公報 特開2013−161110号公報
複数種類のメモリを搭載するシステムでは、メモリの性能が異なる場合がある。ここで、メモリの性能としては、例えば、メモリサイズ(容量)やレイテンシやメモリ帯域といった複数種の項目が挙げられる。
近年、メモリ帯域の異なる複数種のメモリを搭載するような計算機システムが開発されている。このようなメモリ帯域の異なる複数のメモリと接続されるシステムの場合、同時実行されるプログラムのデータをどのメモリに配置するかによって、同時実行されるプログラムの総実行時間が変わってしまうことがある。
このため、プログラムがデータの配置先メモリに対して要求する帯域(以下、要求帯域という)が、データの配置先メモリのメモリ帯域を超過しないように、または超過した場合であっても超過による総実行時間の増加がなるべく小さくなるように、データの配置先を決定することは重要である。
しかし、特許文献1〜4に記載された方法のいずれも、同時実行されるプログラムからの要求帯域を考慮してデータの配置先を決定するものではない。
例えば、特許文献1〜3に記載の方法は、配置対象とされたプログラムや機能処理やオブジェクトからの要求帯域や同時実行性について何ら考慮していない。例えば、特許文献1〜3に記載されているような、変数等へのアクセス回数が多いプログラムや実行頻度が高い機能単位や優先度が高いタスクオブジェクトから、順に、性能のよいメモリに配置する方法では、要求帯域の高いプログラムで使用されるデータが性能の低いメモリに配置される可能性がある。
なお、特許文献4には、関数の総実行時間を最小にするように読み込み速度の異なる2つのメモリに対する関数の分配配置を決定する例が示されている。メモリ帯域が要求帯域を超過したときとしていないときとでは同時実行されるプログラムの総実行時間は変動するが、特許文献4には、要求帯域がメモリ帯域を超過したときの同時実行されるプログラムの総実行時間の増加時間については何ら考慮されていない。なお、要求帯域がメモリ帯域を超過したときの同時実行されるプログラムの総実行時間の増加時間を、読み込み速度の遅いメモリでの実行時間とメモリ間の読み込み速度の比だけで算出するのは困難である。
そこで、本発明は、上述した課題に鑑みて、メモリ帯域の異なる複数のメモリを搭載したシステムで実行されるプログラムの実行時間の効率化を図ることを目的とする。
本発明に係る第1のデータ配置先決定装置は、使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズとを取得するプログラム情報取得手段と、前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得するシステム情報取得手段と、前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定する優先度設定手段と、前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、優先度設定手段が設定した前記優先度に基づいて前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定する第1の配置先決定手段と、第1の配置先決定手段によって配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する第2の配置先決定手段とを備える。
本発明に係る第1のデータ配置先決定方法は、情報処理装置が、使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズ、および、前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズを取得し、前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定し、前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記対象プログラムの優先度と前記候補メモリの前記優先度とに基づいて、前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定し、配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する。
本発明に係る第1のデータ配置先決定プログラム記録媒体は、コンピュータに、使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズを取得する処理、前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得する処理、前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定する処理、前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記対象プログラムの前記優先度と前記候補メモリの前記優先度とに基づいて、前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定する処理、および配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する処理を実行させるデータ配置先決定プログラムを記録する。
本発明によれば、メモリ帯域の異なる複数のメモリを搭載したシステムで実行されるプログラムの実行時間の効率化を図ることができる。
対象システムの例を示すシステム構成図である。 対象システムでのプログラムの動作例を示す説明図である。 第1の実施形態のデータ配置先決定装置の構成例を示す構成図である。 システム情報の例を示す説明図である。 プログラム情報の例を示す説明図である。 第1の実施形態の全体の動作の例を示すフローチャートである。 第1の実施形態の帯域内配置先決定処理の処理フローの例を示すフローチャートである。 第1の実施形態の帯域外配置先決定処理の処理フローの例を示すフローチャートである。 第2の実施形態の対象システムでのプログラムの動作例を示す説明図である。 第2の実施形態の対象システムでのプログラムの動作例を示す説明図である。 第2の実施形態のプログラム情報の例を示す説明図である。 第2の実施形態のプログラム情報の例を示す説明図である。 第2の実施形態のプログラム情報の例を示す説明図である。 第2の実施形態の全体の動作の例を示すフローチャートである。 第2の実施形態の帯域内配置先決定処理の処理フローの例を示すフローチャートである。 第2の実施形態の帯域外配置先決定処理の処理フローの例を示すフローチャートである。 第3の実施形態のプログラム情報の例を示す説明図である。 第3の実施形態のプログラム情報の例を示す説明図である。 第3の実施形態のプログラム情報の例を示す説明図である。 第3の実施形態のプログラム情報の例を示す説明図である。 第3の実施形態のプログラム情報の例を示す説明図である。 第3の実施形態の全体の動作の例を示すフローチャートである。 第3の実施形態の帯域内配置先決定処理の処理フローの例を示すフローチャートである。 第3の実施形態の帯域外配置先決定処理の処理フローの例を示すフローチャートである。 第4の実施形態のデータ配置先決定装置の構成例を示すブロック図である。 第5の実施形態のデータ配置先決定装置の構成例を示すブロック図である。 本発明の各実施形態のデータ配置先決定装置を実現するハードウエア構成を例示する図である。
以下、本発明の実施形態を、図面を参照して説明する。なお、以下では、同一の要素には同一の符号を付し、重複する説明を省略する場合がある。
[対象システムの説明]
まず、本発明の実施形態が対象とするシステムについて説明する。図1は、プログラムのデータ配置を決定する対象とするシステムの例を示すシステム構成図である。図1に示すように、本発明の実施形態が対象とするシステム(対象システム)は、プロセッサ1と、複数のメモリ2とを備える。また、プロセッサ1は、メモリ2の各々と接続されている。なお、プロセッサ1と各メモリ2との接続形態は特に問わない。
プロセッサ1は、複数のプログラムを同時実行可能なプロセッサであればよい。本実施形態において、プログラムという用語は、タスクやスレッドやプロセスといったプロセッサの利用単位を表わすものとして用いている。プロセッサ1は、例えば、マルチコアプロセッサ、メニコアプロセッサ、GPU(Graphic Processing Unit)などが挙げられるが、これらに限定されない。
メモリ2は、データを記憶する記憶装置である。メモリ2は各々、サイズ、レイテンシ、帯域といった複数のリソース量を有している。図1に示す対象システムは、少なくとも帯域の異なる2以上のメモリを有するものとする。対象システムは、例えば、オンチップメモリと主メモリを持つシステムであって、複数のパイプライン処理が実行されるプロセッサ1を有するシステムであってもよい。
また、図2は、対象システムでのプログラムの動作例を示す説明図である。図2に示すように、対象システムでは、複数のプログラムが同時実行される。図2において、網掛けや白塗りの矢印はプログラム処理の実行の様子を表している。また、矢印を囲うブロックは各々が1つの実行プログラムを表している。図2には、第1のプログラム(図中の”プログラム1”)が30個同時実行され、かつ第2のプログラム(図中の”プログラム2”)が50個同時実行される例が示されている。ここで、第1のプログラムおよび第2のプログラムはプログラムの種類を表している。なお、図2によれば、ある期間において合計80個のプログラムが同時実行されることがわかる。
ここで、データの配置対象とされるプログラムは、実行単位で数えられるプログラムであり、図2の例でいう計80個のプログラムである。以下、本発明の実施形態において特に断りなく「プログラム」といった場合には、実行単位で数えられるプログラムを指す。
実施形態1.
次に、本発明の第1の実施形態を説明する。
[構成の説明]
図3は、本実施形態のデータ配置先決定装置10の構成例を示す構成図である。図3に示すデータ配置先決定装置10は、システム情報取得部101と、プログラム情報取得部102と、優先度設定部103と、帯域内配置先決定部104と、帯域外配置先決定部105とを備える。
これらはそれぞれ概略つぎのように動作する。システム情報取得部101は、対象システムに関する情報であるシステム情報を取得する。システム情報は、対象システムに含まれる少なくともデータ配置先の候補とされるメモリの各々の、メモリサイズとメモリ帯域とを含む。なお、システム情報は、メモリ性能に関連する他の指標を含んでいてもよい。以下、対象システムに含まれる少なくともデータ配置先の候補とされるメモリを、対象メモリという場合がある。
図4は、システム情報の例を示す説明図である。図4に示す例は、対象システムがプログラムのデータ配置用に2種類のメモリ(図中の”メモリ1”と”メモリ2”)を有する場合のシステム情報の例である。図4に示すように、システム情報取得部101は、対象メモリの各々についての、識別情報、メモリサイズおよびメモリ帯域を含むシステム情報を取得してもよい。図4によれば、例えば、第1のメモリ(図中の”メモリ1”)は、メモリサイズが10GBであり、メモリ帯域が300GB/sであることがわかる。また、例えば、第2のメモリ(図中の”メモリ2”)は、メモリサイズが300GBであり、メモリ帯域が50GB/sであることがわかる。ここで、メモリ帯域は、実測値であっても理論値であってもよい。システム情報の取得方法としては、例えばシステム情報の入力用のGUI(Graphical User Interface)を用意しておき、そのGUIを利用してユーザに入力させてもよいし、対象システムが有するシステム情報の出力機能等を利用して対象システムから直接読み込む等が挙げられる。
なお、図4には、2種類のメモリに関する情報しか示されていないが、システム情報取得部101は、対象メモリ全てのメモリサイズとメモリ帯域の情報を少なくとも取得する。
プログラム情報取得部102は、対象システムで実行されるプログラムのうち少なくともデータの配置先の決定対象とされるプログラムに関する情報であるプログラム情報を取得する。プログラム情報は、対象システムで実行されるプログラムのうち少なくともデータ配置先を決定するプログラムの各々についての、要求サイズと要求帯域とを含む。なお、プログラム情報は、プログラムの動作、特に実行中のメモリアクセス時間に関連する他の指標を含んでいてもよい。以下、対象システムで実行されるプログラムのうち少なくともデータの配置先の決定対象とされるプログラムを、対象プログラムという場合がある。
図5は、プログラム情報の例を示す説明図である。図5に示す例は、図2に示した実行プログラムについて取得されるプログラム情報の例である。図5に示すように、プログラム情報取得部102は、対象プログラムのプログラムコードの各々についての、識別情報、要求サイズ、要求帯域、実行時間および同時実行数を含むプログラム情報を取得してもよい。図5に示す例は、データの配置先の決定対象とされるプログラムの特に動作に関するリソース量を示すプログラム情報の例である。ここで、要求サイズは、プログラムがメモリに対して要求するサイズである。要求サイズには、例えば、プログラムが実行中にメモリにアクセスするデータの総サイズを用いてもよい。要求帯域は、プログラムが配置先メモリに対して要求する帯域である。要求帯域には、例えば、ユーザが指定した値、対象プログラムが実行中にアクセスするデータサイズやその頻度を計測して得られた値を基に求めた値、または対象プログラムの実行中の最大データアクセス量(最大転送量)または許容レイテンシ等を基に求めた値を用いてもよい。また、実行時間は、プログラムの読み出しから終了までにかかる時間である。実行時間には、例えば、要求帯域が満たされていると仮定したときのプログラムの呼び出しから終了までにかかる時間の論理値を用いてもよいし、対象プログラムを単体で動作させたときの実測値を用いてもよい。なお、プログラム情報は、実行時間を含んでいなくてもよい。また、プログラム情報は、各プログラムの実行時間に代えて、各プログラムの実行中のメモリアクセス時間に関連する他の指標を含んでいてもよい。
図5によれば、例えば第1のプログラム(図中の”プログラム1”)は、要求サイズが0.5GBであり、要求帯域が3GB/sであり、実行時間が400sであり、同時実行数が30であることがわかる。また、例えば第2のプログラム(図中の”プログラム2”)は、要求サイズが0.5GBであり、要求帯域が2GB/sであり、実行時間が150sであり、同時実行数が50であることがわかる。プログラム情報の取得方法としては、例えばプログラム情報の入力用のGUIを用意しておき、そのGUIを利用してユーザに入力させてもよいし、コンパイラ等が出力する情報を読み込む等が挙げられる。
優先度設定部103は、対象メモリの各々に対してメモリ帯域に基づく優先度を設定する。また、優先度設定部103は、対象プログラムの各々に対して要求帯域に基づく優先度を設定する。以下、メモリに対して設定される優先度を「メモリ優先度」という場合がある。また、プログラムに対して設定される優先度を「プログラム優先度」という場合がある。優先度設定部103は、例えば、システム情報に含まれるメモリ帯域の大きい順にメモリ優先度を設定してもよい。また、優先度設定部103は、例えば、プログラム情報に含まれる要求帯域の大きい順にプログラム優先度を設定してもよい。
帯域内配置先決定部104は、配置後の対象プログラムによる利用サイズの和と利用帯域の和が配置先のメモリサイズとメモリ帯域を超過しない範囲で、メモリ優先度とプログラム優先度とに基づき対象プログラムのデータの配置先を決定する。帯域内配置先決定部104は、例えば、メモリ優先度の高いメモリから順に、メモリサイズとメモリ帯域が許す範囲でプログラム優先度の高いプログラムのデータを割り当ててもよい。以下、帯域内配置先決定部104が行う配置先の決定処理を、帯域内配置先決定処理という場合がある。
帯域外配置先決定部105は、帯域内配置先決定処理の結果、配置先が未決定であるプログラムがある場合に、配置先が未決定である当該プログラムについて、各対象メモリのメモリサイズを超過しない範囲で、配置後の対象プログラムの総実行時間の増加が最小となるメモリを配置先に決定する。帯域外配置先決定部105は、例えば、配置先未決定のプログラムの各々に対して、配置可能な対象メモリの各々に当該プログラムのデータを配置した時の対象プログラムの実行時間増加値を算出する。そして、帯域外配置先決定部105は、実行時間増加値が最小となるメモリをデータ配置先に決定する。
本実施形態において、システム情報取得部101およびプログラム情報取得部102は、例えば、プログラムに従って動作するCPU等の情報処理装置と、各種の情報入力装置(ネットワークカードやマウスやキーボードやディスプレイ装置等)とによって実現される。また、優先度設定部103、帯域内配置先決定部104および帯域外配置先決定部105は、例えば、プログラムに従って動作するCPU等の情報処理装置によって実現される。
[動作の説明]
次に、本実施形態の動作について説明する。図6〜8は、本実施形態の動作の一例を示すフローチャートである。なお、図6は、本実施形態の全体の動作の例を示すフローチャートであり、図7は帯域内配置先決定部104が行う帯域内配置先の決定処理の処理フローの例を示すフローチャートであり、図8は帯域外配置先決定部105が行う帯域外配置先の決定処理の処理フローの例を示すフローチャートである。
まず、図6を参照して全体の動作を説明する。図6に示す例では、まず、システム情報取得部101が、対象メモリのメモリサイズとメモリ帯域とを少なくとも含むシステム情報を取得する(ステップS11)。
次に、プログラム情報取得部102が、対象プログラムの要求サイズと要求帯域とを少なくとも含むプログラム情報を取得する(ステップS12)。なお、ステップS11とステップS12は、順番を入れ替えてもよいし、並列で処理されてもよい。
次に、優先度設定部103が、システム情報に含まれるメモリ帯域を基に対象メモリの各々にメモリ優先度を設定するとともに、プログラム情報に含まれる要求帯域を基に対象プログラムの各々にプログラム優先度を設定する(ステップS13)。ここで、優先度設定部103は、メモリ帯域の大きいメモリほど高い優先度が付与されるようにメモリ優先度を設定する。また、優先度設定部103は、要求帯域の大きいプログラムほど高い優先度が付与されるようにプログラム優先度を設定する。
次に、帯域内配置先決定部104が、各対象メモリのメモリ優先度、メモリサイズおよびメモリ帯域と、各対象プログラムのプログラム優先度、要求サイズおよび要求帯域とに基づいて、帯域内配置先を決定する処理を行う(ステップS14)。ここで、帯域内配置先決定部104は、各対象メモリにおける対象プログラムによる利用サイズ和および利用帯域和が各対象メモリのリソース量(メモリサイズおよびメモリ帯域)を超過しないように、優先度の高いプログラムから順に優先度の高いメモリを割り当てる。なお、帯域内配置先の決定処理の詳細は後述する。
ステップS14の帯域内配置先の決定処理の結果、配置先が未決定のプログラムがある場合には(ステップS15のYes)、帯域外配置先決定部105が、配置先未決定のプログラムを対象に、帯域外配置先を決定する処理を行う(ステップS16)。帯域外配置先決定部105は、例えば、配置先未決定プログラムのうち優先度の高いプログラムから順に、配置可能な対象メモリの中で対象プログラムの実行時間増加値が最小となるメモリを割り当ててもよい。なお、帯域外配置先の決定処理の詳細は後述する。
次に、図7を参照して、帯域内配置先決定部104が行う帯域内配置先の決定処理(図6のステップS14)を説明する。図7に示す例では、帯域内配置先決定部104は、まずメモリ優先度順に配置先の候補とする対象メモリを選択する(ステップS141)。以下、ここで選択した対象メモリを候補メモリという。
次に、帯域内配置先決定部104は、プログラム優先度順に、配置先未決定の対象プログラムを選択する(ステップS142)。ここで、帯域内配置先決定部104は、プログラム優先度が同じ対象プログラムを複数選択してもよい。以下、ここで選択した対象プログラムを選択プログラムという。
次に、帯域内配置先決定部104は、候補メモリへの、選択プログラムによるデータの利用サイズと利用帯域とを算出する(ステップS143)。ここで、利用サイズには、選択プログラムの要求サイズを用いる。また、利用帯域には、選択プログラムの要求帯域を用いる。なお、選択プログラムが複数の場合には、利用サイズおよび利用帯域には、選択プログラムの要求サイズの和および要求帯域の和を用いればよい。例えば、帯域内配置先決定部104は、図5に示す第1のプログラムの実行プログラムを全て選択した場合、選択プログラムの利用サイズとして、第1のプログラムの要求サイズ(=0.5GB)に同時実行数(=30)を掛けた値を用いればよい。また、選択プログラムの利用帯域として、第1のプログラムの要求帯域(=3GB/s)に同時実行数(=30)を掛けた値を用いればよい。
次に、帯域内配置先決定部104は、候補メモリのメモリサイズとメモリ帯域を超過せずに選択プログラムのデータを配置可能か否かを判定する(ステップS144)。ここで、帯域内配置先決定部104は、候補メモリを選択プログラムの配置先とした場合、当該候補メモリにおける各対象プログラムの利用サイズの和と利用帯域の和とが、候補メモリのメモリサイズとメモリ帯域を超過しないか否かを判定すればよい。利用サイズの和は、より具体的には、候補メモリに現時点で配置が決まっている各対象プログラムの利用サイズの和に選択プログラムの利用サイズを足した値である。また、利用帯域の和は、より具体的には、候補メモリに現時点で配置が決まっている各対象プログラムの利用帯域の和に選択プログラムの利用帯域を足した値である。
データ配置可能と判定した場合、すなわち候補メモリにおける利用サイズの和および利用帯域の和がいずれも当該候補メモリのリソース量(メモリサイズおよびメモリ帯域)を超えない場合(ステップS144のYes)、帯域内配置先決定部104は、選択プログラムのデータ配置先を候補メモリに決定する(ステップS145)。一方、候補メモリにおける利用サイズの和と利用帯域の和のうちどちらかでも候補メモリのリソース量を超えていた場合(ステップS144のNo)、帯域内配置先決定部104は、候補メモリへの選択プログラムのデータ配置を不可と決定する。
なお、帯域内配置先決定部104は、ステップS144の判定でデータ配置を不可に決定した場合であっても、候補メモリのメモリサイズとメモリ帯域の両方を満たす範囲であれば、選択プログラムの一部のデータ配置先を当該候補メモリに決定することが可能である。一例として、同時実行数が100個のプログラムコードがあった場合に、当該プログラムコードに対応する選択プログラム(計100個)のうち60個のプログラムのデータ配置先を候補メモリとするなどが挙げられる。なお、いくつ配置可能かを、候補メモリの許容利用サイズと許容利用帯域から求めてもよい。
配置可否の判定の後、帯域内配置先決定部104は、候補メモリに対して配置可否の判定が行われていない対象プログラムがあれば、該対象プログラムの配置可否を判定するためステップS142に戻る。また、候補メモリに対して全ての対象プログラムの配置可否の判定が終了した場合には、次に優先度の高い対象メモリに対して同様の処理を行うべく、ステップS141に戻る。なお、全ての対象メモリに対して同様の処理が終了したら、当該帯域内配置先の決定処理を終了する。
次に、図8を参照して、帯域外配置先決定部105が行う帯域外配置先の決定処理(図6のステップS16)を説明する。図8に示す例では、まず帯域外配置先決定部105は、プログラム優先度順に配置先未決定の対象プログラムを選択する(ステップS161)。以下、ここで選択されたプログラムを選択プログラムという。
次に、帯域外配置先決定部105は、メモリ優先度順に配置先の候補とする対象メモリを選択する(ステップS162)。以下、ここで選択されたメモリを候補メモリという。
次に、帯域外配置先決定部105は、候補メモリへの、選択プログラムによるデータの利用サイズと利用帯域とを算出する(ステップS163)。なお、利用サイズと利用帯域の算出方法は、上記のステップS143と同様でよい。
次に、帯域外配置先決定部105は、候補メモリのメモリサイズを超過せずに選択プログラムのデータを配置可能か否かを判定する(ステップS164)。ここで、帯域外配置先決定部105は、候補メモリを選択プログラムの配置先とした場合の当該候補メモリにおける各対象プログラムの利用サイズの和が、当該候補メモリのメモリサイズを超過しないか否かを判定すればよい。なお、利用サイズの和の算出方法は、上記のステップS144と同様でよい。
データ配置可能と判定した場合すなわち候補メモリにおける利用サイズの和が当該候補メモリのリソース量(メモリサイズ)を超えない場合(ステップS164のYes)、帯域外配置先決定部105は、候補メモリへの選択プログラムのデータ配置は可能であるとして、ステップS165に進む。
ステップS165で、帯域外配置先決定部105は、選択プログラムのデータ配置先を候補メモリとした場合の対象プログラムの実行時間の増加値を算出する。対象プログラムの実行時間の増加値は、各対象プログラムの実行時間を用いて算出される、配置先メモリのメモリ帯域超過による同時実行プログラムの総実行時間の増加量を規格化して示す情報である。なお、実行時間増加値の算出方法は後述する。実行時間の増加値の算出後、帯域外配置先決定部105は、次の対象メモリへの配置可否を判定するためステップS162に戻る。
一方、候補メモリにおける各対象プログラムの利用サイズの和が当該候補メモリのリソース量を超えていた場合(ステップS164のNo)、帯域外配置先決定部105は、当該候補メモリへの選択プログラムのデータ配置を不可とし、そのままステップS162に戻る。なお、帯域外配置先決定部105は、候補メモリのリソース量が足りない場合であっても、既に配置先が決定されたプログラムの中に当該選択プログラムよりも優先度の低いプログラムがあった場合には両者のデータ配置先を入れ替えてもよい。すなわち、帯域外配置先決定部105は、選択プログラムのデータを候補メモリに配置可能であるとし、交換対象とされた候補メモリ内の優先度の低いプログラムを新たに配置先未決定プログラムに加えてもよい。なお、この場合、帯域外配置先決定部105は、選択プログラムのデータ配置先を候補メモリとした場合の実行時間の増加値を算出するため、ステップS165に進めばよい。
帯域外配置先決定部105は、全ての対象メモリに対して配置可能性の判定および可能であれば実行時間の増加値の算出を終えると、ステップS166に進む。ステップS166で、帯域外配置先決定部105は、配置可能と判断されたうち実行時間の増加値が最小となる対象メモリを、選択プログラムのデータ配置先に決定する。
帯域外配置先決定部105は、他に配置先未決定の対象プログラムがあれば、該対象プログラムに対して同様の処理を行うべく、ステップS161に戻る。そして、全ての配置先未決定の対象プログラムに対して同様の処理が終了したら、帯域外配置先の決定処理を終了する。
次に、実行時間の増加値の算出方法を説明する。本実施形態では、対象プログラムの実行時間の増加値を次のように求める。
実行時間の増加値=メモリ帯域超過度×(対象メモリをデータ配置先とするプログラムの実行時間の和) ・・・(1)
メモリ帯域超過度は、対象メモリに対する対象プログラムによるデータの利用帯域の超過度合いを正規化したものであり、例えば、以下の式(2)によって求められる。
メモリ帯域超過度=(利用帯域和÷メモリ帯域)−1・・・(2)
なお、式(1)の実行時間の増加値は、対象プログラムの各々で実行時間に応じたメモリアクセスが行われることを前提に、対象メモリにデータが配置された対象プログラムの各々がメモリアクセスするごとに帯域超過度に応じた遅延が生じると仮定して、対象メモリを配置先とする対象プログラム群における総実行時間の増加度合いを規格化したものである。
なお、実行時間の増加値は、データの配置先メモリが帯域超過したことにより同時実行されるプログラムの総実行時間の増加量の目安となる情報であればよく、より具体的には、メモリ帯域を超過した総要求帯域に応じた総実行時間の増加割合を示す情報であればよい。実行時間の増加値は、例えば、対象メモリを配置先とするプログラムの実行時間を用いる以外にも、対象メモリを配置先とするプログラムの実行中のメモリアクセス時間に関連する他の指標を用いて算出されるものであってもよい。各プログラムの実行中のメモリアクセス時間に関連する他の指標としては、例えば、対象メモリを配置先とする対象プログラムの数や、実行割合(ある期間において対象プログラムが実行されている割合)や、メモリアクセス回数や、メモリアクセス頻度などが挙げられる。なお、実行時間増加値の算出に、例えば実行割合×メモリアクセス回数といったように上記の指標を複数組み合わせて用いることも可能である。なお、実行時間の増加値と呼んでいるが、例えば、実行時間の増加値は、メモリ帯域超過度と各プログラムの実行中におけるメモリアクセス時間に関連する情報とを用いて算出される情報であって、帯域超過したメモリにおけるプログラムのメモリアクセスの重複度合いを示す情報であってもよい。
また、帯域外配置先決定部105は、より簡易に、実行時間の増加値に代えて、メモリ帯域超過度を用いて配置先メモリを決定してもよい。すなわち、帯域外配置先決定部105は、メモリ帯域超過度が最も小さいメモリをデータ配置先に決定してもよい。
以上のように、本実施形態によれば、メモリの持つメモリ帯域の情報と、メモリに対するプログラムからの要求帯域の情報とを利用することにより、各メモリに対する要求帯域が当該メモリのメモリ帯域を超過しないようにデータの配置先を決めることができる。また、いずれかのメモリに対して要求帯域がメモリ帯域を超過する場合であっても、同時実行されるプログラムの総実行時間を小さくするようにデータの配置先を決めることができる。このように、本実施形態では、メモリ帯域が異なる複数のメモリを有するシステムに対して、メモリ帯域とプログラムの要求帯域とを利用してデータの配置先を決定している。したがって、メモリ帯域が異なる複数のメモリを有するシステム上で同時実行されるプログラムの実行時間の効率化を図ることができる。
なお、システム情報取得部101は、システム情報取得手段の一例であり、プログラム情報取得部102は、プログラム情報取得手段の一例であり、優先度設定部103は、優先度設定手段の一例である。また、帯域内配置先決定部104は、第1の配置先決定手段の一例であり、帯域外配置先決定部105は、第2の配置先決定手段の一例である。
実施形態2.
次に、本実施形態の第2の実施形態を説明する。本実施形態は、対象プログラムが複数の部分処理に分割されるような場合に、部分処理単位でデータの配置先を決定する。
図9Aおよび図9Bは、本実施形態における対象システムでのプログラムの動作例を示す説明図である。図9Aおよび図9Bに示すように、本実施形態においても対象システムでは、複数のプログラムが同時実行される。なお、図9Aは、各実行プログラムに含まれる2つの部分処理の同時実行数がいずれも1の場合の例を示す。図9Bは、実行プログラムのうち第1のプログラムに属する実行プログラムに含まれる1つの部分処理(図中の”部分処理2”)の同時実行数が2の場合の例を示す。なお、図9Aおよび図9Bには、各プログラムが2つの部分処理に分割される例が示されているが、部分処理の分割数および各部分処理の同時実行数は上記の例に限られない。
また、本実施形態において、データの配置対象とされる部分処理は、実行単位で数えられる部分処理であり、図9Bの例でいう各矢印で示される部分処理である。以下、本発明において特に断りなく「部分処理」といった場合には、実行単位で数えられる部分処理を指す。
[構成の説明]
本実施形態の構成は、基本的には第1の実施形態と同様である。ただし、本実施形態のプログラム情報取得部102は、対象プログラムの部分処理ごとの要求サイズと要求帯域とを含むプログラム情報を取得する。
図10A乃至図10Cは、本実施形態のプログラム情報の例を示す説明図である。なお、図10A乃至図10Cに示す例は、図9Aに示した実行プログラムについて取得されるプログラム情報の例である。図10A乃至図10Cに示すように、本実施形態のプログラム情報取得部102は、対象プログラムのプログラムコードの各々についての識別子および同時実行数と、各プログラムコードの部分処理の各々についての識別情報、要求サイズ、要求帯域、実行時間および同時実行数とを含むプログラム情報を取得してもよい。なお、図10Aには、プログラム情報のうちの対象プログラムのプログラムコードに関する情報の例が示されている。また、図10Bには、プログラム情報のうち第1のプログラム(図中の”プログラム1”)に属する対象プログラムの部分処理に関する情報の例が示されている。また、図10Cには、プログラム情報のうち第2のプログラム(図中の”プログラム2”)に属する対象プログラムの部分処理に関する情報の例が示されている。
部分処理の要求サイズは、対象の部分処理がメモリに対して要求するサイズである。該要求サイズには、例えば、部分処理が実行中にメモリにアクセスするデータの総サイズを用いてもよい。部分処理の要求帯域は、対象の部分処理が配置先メモリに対して要求する帯域である。該要求帯域には、例えば、ユーザが指定した値や、対象の部分処理が実行中にアクセスするデータサイズやその頻度を計測して得られた値を基に求めた値や、対象の部分処理の実行中の最大データアクセス量(最大転送量)や許容レイテンシ等を基に求めた値を用いてもよい。また、部分処理の実行時間は、対象の部分処理の読み出しから終了までにかかる時間である。該実行時間には、例えば、要求帯域が満たされていると仮定したときの対象の部分処理の呼び出しから終了までにかかる時間の論理値を用いてもよいし、対象の部分処理を単体で動作させたときの実測値を用いてもよい。なお、本実施形態においても、プログラム情報は、部分処理の実行時間を含んでいなくてもよい。また、プログラム情報は、各部分処理の実行時間に代えて、各部分処理の実行中のメモリアクセス時間に関連する他の指標を含んでいてもよい。
例えば、図10Aおよび図10Bによれば、次のことがわかる。例えば第1のプログラム(図中の”プログラム1”)は、同時実行数が30であり、2つの部分処理(図中の”部分処理1”と”部分処理2”)とに分割される。また、第1のプログラムの第1の部分処理(図中の”部分処理1”)は、要求サイズが0.5GBであり、要求帯域が3GB/sであり、実行時間が300sであり、同時実行数が1である。また、第1のプログラムの第2の部分処理(図中の”部分処理2”)は、要求サイズが0.1GBであり、要求帯域が0.5GB/sであり、実行時間が100sであり、同時実行数が1である。また、図10Aおよび図10Cによれば、例えば第2のプログラム(図中の”プログラム2”)は、同時実行数が50であること、および2つの部分処理(図中の”部分処理1”と”部分処理2”)とに分割される。また、第2のプログラムの第1の部分処理(図中の”部分処理1”)は、要求サイズが0.5GBであり、要求帯域が2GB/sであり、実行時間が100sであり、同時実行数が1である。また、第2のプログラムの第2の部分処理(図中の”部分処理2”)は、要求サイズが0.3GBであり、要求帯域が1GB/sであり、実行時間が50sであり、同時実行数が1である。
また、優先度設定部103は、対象メモリの各々に対してメモリ帯域に基づく優先度を設定するとともに、各対象プログラムの各部分処理に対して要求帯域に基づく優先度を設定する。以下、部分処理に対して設定される優先度を部分処理優先度という場合がある。
また、帯域内配置先決定部104は、配置後の対象プログラムの部分処理による一次利用サイズの和と一次利用帯域の和が配置先のメモリサイズとメモリ帯域を超過しない範囲で、メモリ優先度と部分処理優先度とに基づき、対象プログラムの部分処理のデータの配置先を決定する。帯域内配置先決定部104は、例えば、メモリ優先度の高いメモリから順に、メモリサイズとメモリ帯域が許す範囲で部分処理優先度の高い部分処理のデータを割り当ててもよい。
また、帯域外配置先決定部105は、帯域内配置先決定処理の結果、配置先が未決定の部分処理がある場合に、当該配置先未決定の部分処理について、配置先を決定する。すなわち、帯域外配置先決定部105は、各対象メモリのメモリサイズを超過しない範囲で、配置後の対象プログラムの総実行時間の増加が最小となるメモリへ配置先を決定する。帯域外配置先決定部105は、例えば、配置先未決定の部分処理の各々に対して、配置可能な対象メモリの各々に当該部分処理のデータを配置した時の対象プログラムの実行時間の増加値を算出する。そして、帯域外配置先決定部105は、実行時間の増加値が最小となるメモリをデータ配置先に決定する。
[動作の説明]
次に、本実施形態の動作について説明する。図11〜図13は、本実施形態の動作の一例を示すフローチャートである。なお、図11は、本実施形態の全体の動作の例を示すフローチャートである。図12は、帯域内配置先決定部104が行う帯域内配置先の決定処理の処理フローの例を示すフローチャートである。図13は、帯域外配置先決定部105が行う帯域外配置先の決定処理の処理フローの例を示すフローチャートである。
なお、本実施形態の動作は、データの配置先を各対象プログラムの部分処理単位で決定する点、部分処理の同時実行数および属する対象プログラムを考慮して対象メモリにおける利用サイズや利用帯域や実行時間の増加値を求める点以外は、基本的に第1の実施形態と同様である。
まず、図11を参照して全体の動作を説明する。図11に示す例では、まず、システム情報取得部101が、対象メモリのメモリサイズとメモリ帯域とを少なくとも含むシステム情報を取得する(ステップS21)。なお、ステップS21の動作は第1の実施形態のステップS11の動作と同じである。
次に、プログラム情報取得部102が、対象プログラムの部分処理ごとの要求サイズと要求帯域とを少なくとも含むプログラム情報を取得する(ステップS22)。なお、ステップS11とステップS12は順番を入れ替えてもよいし、並列で処理されてもよい。
次に、優先度設定部103が、システム情報に含まれるメモリ帯域を基に対象メモリの各々にメモリ優先度を設定するとともに、プログラム情報に含まれる部分処理の要求帯域を基に対象プログラムの部分処理の各々に部分処理優先度を設定する(ステップS23)。優先度設定部103は、メモリ帯域の大きいメモリほど高い優先度が付与されるようにメモリ優先度を設定する。また、優先度設定部103は、要求帯域の大きい部分処理ほど高い優先度が付与されるように部分処理優先度を設定する。
次に、帯域内配置先決定部104が、各対象メモリのメモリ優先度、メモリサイズおよびメモリ帯域と、各対象プログラムの各部分処理の部分処理優先度、要求サイズおよび要求帯域とに基づいて、帯域内配置先を決定する処理を行う(ステップS24)。ここで、帯域内配置先決定部104は、各対象メモリにおける対象プログラムの部分処理による一次利用サイズ和および一次利用帯域和が各対象メモリのリソース量(メモリサイズおよびメモリ帯域)を超過しないように、優先度の高い部分処理から順に優先度の高いメモリを割り当てる。なお、帯域内配置先の決定処理の詳細は後述する。
ステップS14の帯域内配置先の決定処理の結果、配置先が未決定の部分がある場合には(ステップS25のYes)、帯域外配置先決定部105が、配置先未決定の部分処理を対象に、帯域外配置先を決定する処理を行う(ステップS26)。帯域外配置先決定部105は、例えば、配置先未決定の部分処理のうち優先度の高い部分処理から順に、配置可能な対象メモリの中で対象プログラムの実行時間増加値が最小となるメモリを割り当ててもよい。なお、帯域外配置先の決定処理の詳細は後述する。
次に、図12を参照して、本実施形態の帯域内配置先決定部104が行う帯域内配置先決定処理(図11のステップS24)を説明する。図12に示す例では、帯域内配置先決定部104は、まずメモリ優先度順に配置先の候補とする対象メモリを選択する(ステップS241)。以下、ここで選択した対象メモリを候補メモリという。
次に、帯域内配置先決定部104は、部分処理の優先度順に、配置先未決定の部分処理を選択する(ステップS242)。ここで、帯域内配置先決定部104は、同時実行される場合は、その各々を1つの部分処理として選択する。例えば、帯域内配置先決定部104は、対象プログラムAの第1の部分処理として実行される、ある1つの部分処理Aや、対象プログラムBの第1の部分処理として実行される、ある1つの部分処理Bといったように、選択する。なお、帯域内配置先決定部104は、例えば、第1のプログラムに属する30個の対象プログラムの第1の部分処理として実行される部分処理の全てといったように、同じ優先度(すなわち同じ要求帯域)の部分処理を複数選択してもよい。以下、ここで選択した部分処理を選択部分処理という。
次に、帯域内配置先決定部104は、候補メモリへの、選択部分処理によるデータの一次利用サイズと一次利用帯域とを算出する(ステップS243)。ここで、一次利用サイズには、選択部分処理の要求サイズを用いる。また、一次利用帯域には、選択部分処理の要求帯域を用いる。なお、選択部分処理が複数の場合には、一次利用サイズおよび一次利用帯域には、選択部分処理の要求サイズの和および要求帯域の和をそれぞれ用いればよい。例えば、帯域内配置先決定部104は、図10Aおよび図10Bに示す第1のプログラムの第1の部分処理として実行される部分処理を全て選択した場合、選択部分処理の一次利用サイズとして、第1のプログラムの第1の部分処理の要求サイズ(=0.5GB)に第1の部分処理の同時実行数(=1)と選択した実行プログラム数(=30)とを掛けたものを用いればよい。また、一次利用帯域として、第1のプログラムの第1の部分処理の要求帯域(=3GB/s)に第1の部分処理の同時実行数(=1)と選択した実行プログラム数(=50)とを掛けたものを用いればよい。
次に、帯域内配置先決定部104は、候補メモリのメモリサイズとメモリ帯域を超過せずに選択部分処理のデータを配置可能か否かを判定する(ステップS244)。ここで、帯域内配置先決定部104は、候補メモリを選択部分処理の配置先とした場合の当該候補メモリにおける各部分処理による一次利用サイズの和と一次利用帯域の和とが、候補メモリのメモリサイズとメモリ帯域を超過しないか否かを判定すればよい。一次利用サイズの和は、より具体的には、候補メモリに現時点で配置が決まっている各部分処理の利用サイズの和に選択部分処理の利用サイズを足したものである。また、一次利用帯域の和は、より具体的には、候補メモリに現時点で配置が決まっている各部分処理の一次利用帯域の和に選択部分処理の一次利用帯域を足したものである。ただし、一次利用帯域の和に関しては、候補メモリに同じプログラムの他の部分処理が含まれている場合には、要求帯域が最も大きい部分処理の利用帯域のみを加算対象とする。
例えば、図9Aに示す第1のプログラムに属するある1つの対象プログラム(対象プログラムA)の第1の部分処理(要求帯域=3.0Gb/s)と、同じ対象プログラム(対象プログラムA)の第2の部分処理(要求帯域=0.5GB/s)とが同じメモリに配置されるとした場合、利用帯域として加算されるのは、以下である。すなわち、当該メモリを配置先とする対象プログラムAの部分処理のうち最も要求帯域の大きい第1の部分処理の利用帯域(ここでは、当該部分処理の要求帯域×当該部分処理の同時実行数)のみが利用帯域として加算される。これは、1つの対象プログラムにおいて第1の部分処理と第2の部分処理とが同時実行されないことによる。
以降の処理はデータの配置先を各対象プログラムの部分処理単位で決定する点を除き、第1の実施形態の帯域内配置先の決定処理と同様である。
次に、図13を参照して、本実施形態の帯域外配置先決定部105が行う帯域外配置先の決定処理を説明する。図13に示す例では、帯域外配置先決定部105は、まず部分処理の優先度順に配置先未決定の部分処理を選択する(ステップS261)。ここで、帯域外配置先決定部105は、例えば、対象プログラムAの第1の部分処理や、対象プログラムBの第1の部分処理といったように、各々の対象プログラムの部分処理を、1つの部分処理として選択する。なお、帯域外配置先決定部105は、例えば、第1のプログラムに属する30個の対象プログラムの第1の部分処理といったように、同じ優先度(すなわち同じ要求帯域)の配置先未決定の部分処理を複数選択してもよい。以下、ここで選択した部分処理を選択部分処理という。
次に、帯域外配置先決定部105は、メモリ優先度順に配置先の候補とする対象メモリを選択する(ステップS262)。以下、ここで選択されたメモリを候補メモリという。
次に、帯域外配置先決定部105は、候補メモリへの、選択部分処理によるデータの一次利用サイズと一次利用帯域とを算出する(ステップS263)。なお、一次利用サイズと一次利用帯域の算出方法は、上記のステップS243と同様である。
次に、帯域外配置先決定部105は、候補メモリのメモリサイズを超過せずに選択部分処理のデータを配置可能か否かを判定する(ステップS264)。ここで、帯域外配置先決定部105は、候補メモリを選択部分処理の配置先とした場合に、当該候補メモリにおける各部分処理による一次利用サイズの和が、当該候補メモリのメモリサイズを超過しないか否かを判定すればよい。なお、一次利用サイズの和の算出方法は、上記のステップS244と同様である。
データ配置可能と判定した場合すなわち候補メモリにおける一次利用サイズの和が当該候補メモリのリソース量(メモリサイズ)を超えない場合(ステップS264のYes)、帯域外配置先決定部105は、候補メモリへの選択部分処理のデータ配置は可能であるとして、ステップS265に進む。
ステップS265で、帯域外配置先決定部105は、選択部分処理のデータ配置先を候補メモリとした場合の対象プログラムの実行時間の増加値を算出する。本実施形態では、対象プログラムの実行時間の増加値を、上述したメモリ帯域超過度と、各部分処理の実行時間を用いて算出する。なお、本実施形態における実行時間の増加値の算出方法については、後述する。
以降の処理はデータの配置先を各対象プログラムの部分処理単位で決定する点を除き、第1の実施形態と同様である。
次に、本実施形態における実行時間の増加値の算出方法について説明する。本実施形態では、対象プログラムの実行時間の増加値を次のように求める。
実行時間の増加値=メモリ帯域超過度×(対象メモリをデータ配置先とする部分処理の実行時間の和) ・・・(3)
ここで、本実施形態のメモリ帯域超過度は、対象メモリに対する対象プログラムの部分処理によるデータの一次利用帯域の超過度合いを正規化したものであり、以下の式(4)によって求められる。
メモリ帯域超過度=(一次利用帯域和÷メモリ帯域)−1・・・(4)
本実施形態においても、実行時間の増加値の算出に、各部分処理の実行時間以外に、例えば、配置先メモリにおける各部分処理の実行中のメモリアクセス時間に関連する他の指標を用いてもよい。配置先メモリにおける各部分処理の実行中のメモリアクセス時間に関連する他の指標としては、例えば、対象メモリにおいて同時実行される部分処理の最大数や、対象メモリにおける各部分処理の実行割合やメモリアクセス回数やメモリアクセス頻度などが挙げられる。なお、実行時間の増加値の算出に、例えば各部分処理の実行割合×メモリアクセス回数といったように上記の指標を複数組み合わせて用いることも可能である。
以上のように、本実施形態によれば、プログラムの部分処理ごとの情報を利用することでより詳細な部分処理単位でデータ配置を決定できるので、メモリ帯域が異なる複数のメモリを有するシステムで同時実行されるプログラムの実行時間をより効率化できる。
実施形態3.
次に、本実施形態の第3の実施形態を説明する。本実施形態は、対象プログラムが複数の部分処理に分割されるような場合に、部分処理単位または部分処理で使用される変数単位でデータの配置先を決定する。
[構成の説明]
本実施形態の構成は、基本的には第1および第2の実施形態と同様である。ただし、本実施形態のプログラム情報取得部102は、対象プログラムの部分処理ごとの要求帯域とアクセスする変数の情報(変数アクセス情報)とを含むプログラム情報を取得する。
図14A乃至図14Eは、本実施形態のプログラム情報の例を示す説明図である。本実施形態のプログラム情報取得部102は、例えば、図14A乃至図14Eに示すような、対象プログラムのプログラムコードの各々についての識別子および同時実行数と、各プログラムコードの部分処理の各々についての識別情報、要求帯域、実行時間、同時実行数およびアクセス変数と、各プログラムが使用する変数の各々についての識別情報、サイズとを含むプログラム情報を取得してもよい。
なお、図14Aには、プログラム情報のうちの対象プログラムのプログラムコードに関する情報の例が示されている。また、図14Bには、プログラム情報のうち第1のプログラム(図中の”プログラム1”)に属する対象プログラムの部分処理に関する情報の例が示されている。また、図14Cには、プログラム情報のうち第1のプログラムに属する対象プログラムで使用される変数に関する情報の例が示されている。また、図14Dには、プログラム情報のうち第2のプログラム(図中の”プログラム2”)に属する対象プログラムの部分処理に関する情報の例が示されている。また、図14Eには、プログラム情報のうち第2のプログラムに属する対象プログラムで使用される変数に関する情報の例が示されている。以下、各対象プログラムの部分処理ごとのアクセス変数とそれらの変数サイズとを示す情報を、変数アクセス情報という場合がある。なお、本実施形態においても、プログラム情報は、部分処理の実行時間を含んでいなくてもよい。また、プログラム情報は、各部分処理の実行時間に代えて、各部分処理の実行中のメモリアクセス時間に関連する他の指標を含んでいてもよい。
例えば、図14Bおよび図14Cによれば、次のことがわかる。例えば第1のプログラム(図中の”プログラム1”)の第1の部分処理(図中の”部分処理1”)では、2つの変数(図中の”変数1”と”変数2”)が使用されることがわかる。また、第1のプログラムの第2の部分処理(図中の”部分処理2”)では、1つの変数(図中の”変数2”)が使用される。そして、第1のプログラムの第1の部分処理および第2の部分処理で使用される変数のうち、第1の変数(図中の”変数1”)のサイズが0.4GBであり、第2の変数(図中の”変数2”)のサイズが0.1GBである。また、図14Dおよび図14Eによれば、次のことが分かる。例えば第2のプログラム(図中の”プログラム2”)の第1の部分処理(図中の”部分処理1”)では、2つの変数(図中の”変数1”と”変数2”)が使用され、第2のプログラムの第2の部分処理(図中の”部分処理2”)では、1つの変数(図中の”変数2”)が使用される。そして、第2のプログラムの第1の部分処理および第2の部分処理で使用される変数のうち、第1の変数(図中の”変数1”)のサイズが0.2GBであり、第2の変数(図中の”変数2”)のサイズが0.3GBである。
他の点に関しては第2の実施形態と基本的に同様である。
[動作の説明]
次に、本実施形態の動作について説明する。図15〜図17は、本実施形態の動作の一例を示すフローチャートである。なお、図15は、本実施形態の全体の動作の例を示すフローチャートである。図16は、帯域内配置先決定部104が行う帯域内配置先の決定処理の処理フローの例を示すフローチャートである。図17は、帯域外配置先決定部105が行う帯域外配置先の決定処理の処理フローの例を示すフローチャートである。
なお、本実施形態の動作は、利用サイズ和の算出方法が異なる点以外は、第2の実施形態と基本的に同様である。
まず、図15を参照して全体の動作を説明する。図15に示す例では、まず、システム情報取得部101が、対象メモリのメモリサイズとメモリ帯域とを含むシステム情報を取得する(ステップS31)。なお、ステップS31の動作は第2の実施形態のステップS21の動作と同じである。
次に、プログラム情報取得部102が、対象プログラムの部分処理ごとの要求帯域と変数アクセス情報とを含むプログラム情報を取得する(ステップS32)。なお、ステップS31とステップS32とは順番を入れ替えてもよいし、並列に実行されてもよい。
次に、優先度設定部103が、システム情報に含まれるメモリ帯域を基に対象メモリの各々にメモリ優先度を設定するとともに、プログラム情報に含まれる部分処理の要求帯域を基に対象プログラムの部分処理の各々に部分処理優先度を設定する(ステップS33)。なお、ステップS33の動作は第2の実施形態のステップS23の動作と同じである。
次に、帯域内配置先決定部104が、各対象メモリのメモリ優先度、メモリサイズおよびメモリ帯域と、各対象プログラムの各部分処理の部分処理優先度、要求サイズおよび要求帯域とに基づいて、帯域内配置先を決定する処理を行う(ステップS34)。ここで、帯域内配置先決定部104は、各対象メモリにおける対象プログラムの部分処理による一次利用サイズの和および一次利用帯域の和が各対象メモリのリソース量(メモリサイズおよびメモリ帯域)を超過しないように、優先度の高い部分処理から順に優先度の高いメモリを割り当てる。なお、帯域内配置先の決定処理の詳細は後述する。
ステップS14の帯域内配置先の決定処理の結果、配置先が未決定の部分処理がある場合には(ステップS35のYes)、帯域外配置先決定部105が、配置先未決定の部分処理を対象に、帯域外配置先を決定する処理を行う(ステップS36)。帯域外配置先決定部105は、例えば、配置先未決定の部分処理のうち優先度の高い部分処理から順に、配置可能な対象メモリの中で対象プログラムの実行時間の増加値が最小となるメモリを割り当ててもよい。なお、帯域外配置先の決定処理の詳細は後述する。
次に、図16を参照して、本実施形態の帯域内配置先決定部104が行う帯域内配置先の決定処理(図15のステップS34)を説明する。図16に示す例では、図12に示す例では、帯域内配置先決定部104は、まずメモリ優先度順に配置先の候補とする対象メモリを選択する(ステップS341)。なお、ステップS341の動作は第2の実施形態のステップS241と同様でよい。以下、ここで選択した対象メモリを候補メモリという。
次に、帯域内配置先決定部104は、部分処理優先度順に、配置先未決定の部分処理を選択する(ステップS342)。なお、ステップS342の動作は第2の実施形態のステップS242と同様でよい。以下、ここで選択した部分処理を選択部分処理という。
次に、帯域内配置先決定部104は、候補メモリへの、選択部分処理によるデータの一次利用サイズと一次利用帯域とを算出する(ステップS343)。ここで、一次利用サイズには、選択部分処理で使用される変数の変数サイズの和を用いる。なお、選択部分処理が複数の場合には、一次利用サイズには、選択部分処理で使用される変数サイズの和を用いればよい。ただし、同じ対象プログラムにおいて重複して使用される変数については変数サイズを1回のみ加算する。なお、一次利用帯域は第2の実施形態と同様でよい。
次に、帯域内配置先決定部104は、候補メモリのメモリサイズとメモリ帯域を超過せずに選択部分処理のデータを配置可能か否かを判定する(ステップS344)。ここで、帯域内配置先決定部104は、候補メモリを選択部分処理の配置先とした場合の当該候補メモリにおける各部分処理による一次利用サイズの和と一次利用帯域の和とが、候補メモリのメモリサイズとメモリ帯域を超過しないか否かを判定すればよい。一次利用サイズの和は、より具体的には、候補メモリに現時点で配置が決まっている各部分処理の利用サイズの和に選択部分処理の利用サイズを足したものである。ただし、一次利用サイズの和に関しては、候補メモリに選択部分処理と変数を共有する同じプログラムの他の部分処理が含まれている場合には、当該変数に対する選択部分処理による一次利用サイズはゼロとして加算する。なお、一次利用帯域の和は第2の実施形態と同様でよい。
また、帯域内配置先決定部104は、ステップS344の判定でデータ配置を不可にした場合であっても、候補メモリのメモリサイズとメモリ帯域の両方を満たす範囲であれば、選択部分処理で使用される変数の一部についてデータ配置先を当該候補メモリに決定することも可能である。このとき、候補メモリにおける部分処理の一次利用サイズおよび一次利用帯域に代えて、候補メモリにおける各変数の利用サイズおよび利用帯域をそれぞれ用いればよい。なお、変数の利用サイズには変数サイズを用いればよい。また、変数の利用帯域には当該変数を用いる部分処理のうち最も要求帯域が大きい部分処理の要求帯域を用いればよい。なお、この場合も、対象メモリにおける一次利用サイズの和および一次利用帯域の和を求める際に、同じプログラムの他の部分処理の有無に応じて、当該変数の利用サイズをゼロにしたり、利用帯域をゼロとする処理を行えばよい。
以降の処理は第2の実施形態の帯域内配置先決定処理と同様である。
次に、図17を参照して、帯域外配置先決定部105が行う帯域外配置先の決定処理を説明する。図17に示す例では、図13に示す例では、帯域外配置先決定部105は、まず部分処理の優先度順に配置先未決定の部分処理を選択する(ステップS361)。なお、ステップS361の動作は第2の実施形態のステップS261と同様でよい。以下、ここで選択した部分処理を選択部分処理という。
次に、帯域外配置先決定部105は、メモリ優先度順に配置先の候補とする対象メモリを選択する(ステップS362)。なお、ステップS362の動作は第2の実施形態のステップS262と同様でよい。以下、ここで選択されたメモリを候補メモリという。
次に、帯域外配置先決定部105は、候補メモリへの、選択部分処理によるデータの一次利用サイズと一次利用帯域とを算出する(ステップS363)。なお、一次利用サイズと一次利用帯域の算出方法は、上記のステップS343と同様である。
次に、帯域外配置先決定部105は、候補メモリのメモリサイズを超過せずに選択部分処理のデータを配置可能か否かを判定する(ステップS364)。ここで、帯域外配置先決定部105は、候補メモリを選択部分処理の配置先とした場合、当該候補メモリにおける各部分処理による一次利用サイズの和が、当該候補メモリのメモリサイズを超過しないか否かを判定すればよい。なお、一次利用サイズ和の算出方法は、上記のステップS344と同様である。
以降の処理は第2の実施形態の帯域外配置先の決定処理と同様である。
なお、上記では対象プログラムの部分処理を単位にデータ配置先を決定する例を示したが、対象プログラムで用いられる変数単位でデータ配置先を決定することも可能である。その場合、図15〜図17で示した各動作において部分処理単位で処理している部分を、そのまま変数単位で処理すればよい。このとき、優先度設定部103は、変数優先度を、当該変数を用いる部分処理のうち最も要求帯域が大きい部分処理の要求帯域に応じて定めてもよい。また、帯域内配置先決定部104および帯域外配置先決定部105は、候補メモリにおける選択変数による利用サイズおよび利用帯域を、選択変数の変数サイズおよび当該選択変数を用いる部分処理のうち最も要求帯域が大きい部分処理の要求帯域としてもよい。なお、この場合も、対象メモリにおける一次利用サイズの和および一次利用帯域の和を求める際に、同じプログラムの他の部分処理の有無に応じて、当該変数の利用サイズをゼロにしたり、利用帯域をゼロとする処理を行う。
以上のように、本実施形態によれば、第1および第2の実施形態の効果に加えて、部分処理ごとの変数アクセス情報と要求帯域とを利用することで、より効率的なデータ配置が可能である。
なお、上記の各実施形態では図示省略しているが、各実施形態のデータ配置先決定装置は、配置先の決定結果を示す情報を出力する出力装置を有していてもよい。ここで、出力装置は、例えば、配置先の決定結果を示す情報とともに、当該配置を決定した際に対象メモリに対して算出した実行時間増加値を出力してもよい。このとき、出力手段は、帯域超過していない対象メモリについては実行時間増加値をゼロとして出力してもよい。
例えば、ユーザは、データ配置先決定装置にメモリの追加前後のシステムのシステム情報を与えて、それぞれのシステムにおける配置先の決定結果と、対象メモリに対して算出した実行時間の増加値とを含む結果情報を取得してもよい。各メモリの実行時間の増加値の合計を比較することで、メモリ帯域の異なるメモリを追加する場合のサービスプログラムの実行時間の増減の目安とできる。これにより、例えば、ユーザは、システム環境変更後のユーザシステムの好適な構成を容易に得ることができる。
実施形態4.
図18は、本発明の第4の実施形態に係るデータ配置先決定装置50の構成を示すブロック図である。図18に示すように、第4の実施形態のデータ配置先決定装置50は、システム情報取得部501と、プログラム情報取得部502と、優先度設定部503と、第1の配置先決定部504と、第2の配置先決定部505とを備える。
システム情報取得部501は、対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得する。
プログラム情報取得部502は、対象プログラムの各々についての、メモリに対する要求帯域と要求サイズとを取得する。
優先度設定部503は、対象プログラムの各々に対して要求帯域に基づく優先度を設定するとともに、候補メモリの各々に対してメモリ帯域に基づく優先度を設定する。
第1の配置先決定部504は、候補メモリの各々のメモリサイズとメモリ帯域とを超過しない範囲で、優先度設定手段503が設定した優先度に基づいて候補メモリの中から対象プログラムの各々で使用されるデータの配置先を決定する。
第2の配置先決定部505は、第1の配置先決定部504によって配置先が決定されていない配置先未決定プログラムの配置先を、候補メモリの各々のメモリサイズを超過しない範囲で、配置先未決定プログラムの優先度と対象プログラムの要求帯域と候補メモリのメモリ帯域とに基づいて、決定する。
本発明は、本実施形態の上記構成を少なくとも備えることにより、
メモリ帯域の異なる複数のメモリを搭載したシステムで実行されるプログラムの実行時間の効率化を図ることができる。
実施形態5.
図19は、本発明の第5の実施形態に係るデータ配置先決定装置50の構成例を示すブロック図である。図19に示すように、データ配置先決定装置50は、図18に示したデータ配置先決定装置50に加えて、出力部506を備えている。
出力部506は、第1の配置先決定部504および第2の配置先決定部505により決定された配置先を出力する。
上述した各実施形態において図3、図18及び図19に示した各部は、専用のHW(HardWare)(電子回路)によって実現することができる。また、各部は、ソフトウェアプログラムの機能(処理)単位(ソフトウェアモジュール)と捉えることができる。ただし、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図20を参照して説明する。
図20は、本発明の模範的な実施形態に係るデータ配置先決定装置を実行可能な情報処理装置900(コンピュータ)の構成を例示的に説明する図である。すなわち、図20は、図3、図18及び図19に示したデータ配置先決定装置を実現可能なコンピュータ(情報処理装置)の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
図20に示した情報処理装置900は、構成要素として下記を備えている。
・CPU(Central Processing Unit)901、
・ROM(Read_Only_Memory)902、
・RAM(Random_Access_Memory)903、
・ハードディスク904(記憶装置)、
・外部装置との通信インタフェース905(Interface:以降、「I/F」と称する)、
・CD−ROM(Compact_Disc_Read_Only_Memory)等の記録媒体907に格納されたデータを読み書き可能なリーダライタ908、
・入出力インタフェース909、
情報処理装置900は、これらの構成がバス906(通信線)を介して接続された一般的なコンピュータである。
そして、上述した実施形態を例に説明した本発明の実施形態は、図20に示した情報処理装置900に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図における、システム情報取得部101、プログラム情報取得部102、優先度設定部103、帯域内配置先決定部104および帯域外配置先決定部105、あるいいはフローチャート(図6乃至図8、図11乃至図13、図15乃至図17)の機能である。本発明は、その後、そのコンピュータプログラムを、当該ハードウェアのCPU901に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性の記憶メモリ(RAM903)またはハードディスク904等の不揮発性の記憶デバイスに格納されれば良い。
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、CD−ROM等の各種記録媒体907を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本発明の実施形態は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記録媒体907によって構成されると捉えることができる。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
また、上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)対象システムで実行されるプログラムのうち少なくともデータの配置先の決定対象とされるプログラムである対象プログラムの各々についての、メモリに対する要求帯域と要求サイズとに関する情報を含むプログラム情報を取得するプログラム情報取得手段と、対象プログラムで使用されるデータの配置先の候補とされるメモリである候補メモリの各々についての、メモリ帯域とメモリサイズとに関する情報を含むシステム情報を取得するシステム情報取得手段と、対象プログラムの各々に対して要求帯域に基づく優先度を設定するとともに、候補メモリの各々に対してメモリ帯域に基づく優先度を設定する優先度設定手段と、候補メモリの各々のメモリサイズとメモリ帯域とを超過しない範囲で、優先度設定手段が設定した優先度に基づいて候補メモリの中から対象プログラムの各々で使用されるデータの配置先を決定する第1の配置先決定手段と、第1の配置先決定手段によって配置先が決定されなかった配置先未決定プログラムがあった場合に、候補メモリの各々のメモリサイズを超過しない範囲で、配置先未決定プログラムの優先度と各対象プログラムの要求帯域と各候補メモリのメモリ帯域とに基づいて、配置先未決定プログラムの配置先を決定する第2の配置先決定手段とを備えたことを特徴とするデータ配置先決定装置。
(付記2)第2の配置先決定手段は、帯域超過による対象プログラムの総実行時間の増加を最小化する候補メモリへ、配置先未決定プログラムの配置先を決定する付記1に記載のデータ配置先決定装置。
(付記3)プログラム情報取得手段は、対象プログラムを分割した部分処理の各々についての、要求帯域および要求サイズに関する情報を少なくとも含むプログラム情報を取得し、優先度設定手段は、対象プログラムの部分処理の各々に対して要求帯域に基づく優先度を設定するとともに、候補メモリの各々に対してメモリ帯域に基づく優先度を設定し、第1の配置先決定手段は、候補メモリの各々のメモリサイズとメモリ帯域とを超過しない範囲で、優先度設定手段が設定した優先度に基づいて、対象プログラムの部分処理ごとにデータの配置先を決定し、第2の配置先決定手段は、第1の配置先決定手段によって配置先が決定されなかった配置先未決定の部分処理があった場合に、候補メモリの各々のメモリサイズを超過しない範囲で、配置先未決定の部分処理の優先度と各部分処理の要求帯域と各候補メモリのメモリ帯域とに基づいて、配置先未決定の部分処理の配置先を決定する付記1または付記2に記載のデータ配置先決定装置。
(付記4)プログラム情報取得手段は、対象プログラムを分割した部分処理の各々についての、要求帯域および使用する変数に関する情報を少なくとも含むプログラム情報を取得し、優先度設定手段は、対象プログラムの部分処理で使用される変数の各々に対して要求帯域に基づく優先度を設定するとともに、候補メモリの各々に対してメモリ帯域に基づく優先度を設定し、第1の配置先決定手段は、候補メモリの各々のメモリサイズとメモリ帯域とを超過しない範囲で、優先度設定手段が設定した優先度に基づいて、対象プログラムの部分処理で使用される変数の各々の配置先を決定し、第2の配置先決定手段は、第1の配置先決定手段によって配置先が決定されなかった配置先未決定変数があった場合に、候補メモリの各々のメモリサイズを超過しない範囲で、配置先未決定変数の優先度と各変数を使用する部分処理の要求帯域と各候補メモリのメモリ帯域とに基づいて、配置先未決定の部分処理の配置先を決定する付記1または付記2に記載のデータ配置先決定装置。
(付記5)第2の配置先決定手段は、配置先未決定プログラム、配置先未決定の部分処理または配置先未決定変数を配置可能な候補メモリの各々において、配置後の当該候補メモリにおけるメモリ帯域を超過した度合いを示すメモリ帯域超過度に基づいて、配置先未決定プログラム、配置先未決定の部分処理または配置先未決定変数の配置先を決定する付記1から付記4のうちのいずれかに記載のデータ配置先決定装置。
(付記6)第2の配置先決定手段は、配置先未決定プログラム、配置先未決定の部分処理または配置先未決定変数を配置可能な候補メモリの各々について、配置後の当該候補メモリにおけるメモリ帯域超過度に応じた当該候補メモリをデータ配置先とする対象プログラムの総実行時間の増加割合を算出し、増加割合の最も小さい候補メモリを配置先に決定する付記5に記載のデータ配置先決定装置。
(付記7)第2の配置先決定手段は、配置先未決定プログラム、配置先未決定の部分処理または配置先未決定変数を配置可能な候補メモリの各々について、配置後の当該候補メモリにおけるメモリ帯域超過度と当該候補メモリをデータの配置先とする対象プログラムの実行時間とを用いて、当該候補メモリをデータの配置先とする対象プログラムの総実行時間の増加割合を算出し、増加割合の最も小さい候補メモリを配置先に決定する付記5または付記6に記載のデータ配置先決定装置。
(付記8)第2の配置先決定手段は、配置先未決定プログラム、配置先未決定の部分処理または配置先未決定変数を配置可能な候補メモリの各々について、配置後の当該候補メモリにおけるメモリ帯域超過度と当該候補メモリをデータの配置先とする対象プログラムまたは部分処理の実行中のメモリアクセス時間に関連する情報とに基づいて当該候補メモリにおける対象プログラムの実行時間の増加度を算出し、増加度の最も小さい候補メモリを配置先に決定する付記5または付記6に記載のデータ配置先決定装置。
(付記9)第2の配置先決定手段は、配置先未決定プログラム、配置先未決定の部分処理または配置先未決定変数を配置可能な候補メモリの各々について、配置後の当該候補メモリにおけるメモリ帯域超過度と当該候補メモリをデータの配置先とする対象プログラムまたは部分処理の実行時間とに基づいて当該候補メモリにおける対象プログラムの実行時間の増加値を算出し、増加値の最も小さい候補メモリを配置先に決定する付記5または付記6に記載のデータ配置先決定装置。
(付記10)配置先決定結果を出力する出力手段を備えた付記1から付記9のうちのいずれかに記載のデータ配置先決定装置。
本発明は、例えば、対象メモリで実行されるサービスプログラムのデータの配置先の参考となる情報を取得する用途や、メモリ帯域の異なるメモリを追加する場合のサービスプログラムの実行時間の参考となる情報を取得する用途にも好適に適用可能である。
この出願は、2015年3月30日に出願された日本出願特願2015−067975を基礎とする優先権を主張し、その開示の全てをここに取り込む。
1 プロセッサ
2 メモリ
10 データ配置先決定装置
101 システム情報取得部
102 プログラム情報取得部
103 優先度設定部
104 帯域内配置先決定部
105 帯域外配置先決定部
50 データ配置先決定装置
501 システム情報取得部
502 プログラム情報取得部
503 優先度設定部
504 第1の配置先決定部
505 第2の配置先決定部
506 出力部
本発明は、プログラムで使用されるデータの配置先メモリを決定するデータ配置先決定装置、データ配置先決定方法およびデータ配置先決定プログラムに関する。
本発明に係る第1のデータ配置先決定プログラムは、コンピュータに、使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズを取得する処理、前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得する処理、前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定する処理、前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記対象プログラムの前記優先度と前記候補メモリの前記優先度とに基づいて、前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定する処理、および配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する処理を実行させる。

Claims (10)

  1. 使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズとを取得するプログラム情報取得手段と、
    前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得するシステム情報取得手段と、
    前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定する優先度設定手段と、
    前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記優先度設定手段が設定した前記優先度に基づいて前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定する第1の配置先決定手段と、
    前記第1の配置先決定手段によって配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する第2の配置先決定手段とを備えた
    データ配置先決定装置。
  2. 前記第2の配置先決定手段は、帯域超過による前記対象プログラムの総実行時間の増加を最小化する候補メモリを、前記配置先未決定プログラムの配置先に決定する
    請求項1に記載のデータ配置先決定装置。
  3. 前記プログラム情報取得手段は、前記対象プログラムを分割した部分処理の各々についての、前記要求帯域および前記要求サイズに関する情報を少なくとも含むプログラム情報を取得し、
    前記優先度設定手段は、前記対象プログラムの前記部分処理の各々に対して前記要求帯域に基づく前記優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく前記優先度を設定し、
    前記第1の配置先決定手段は、前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記優先度設定手段が設定した優先度に基づいて、前記対象プログラムの前記部分処理ごとにデータの配置先を決定し、
    前記第2の配置先決定手段は、前記第1の配置先決定手段によって配置先が決定されていない配置先未決定の部分処理の配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定の部分処理の前記優先度と前記部分処理の前記要求帯域と前記候補メモリの前記メモリ帯域とに基づいて、決定する
    請求項1または請求項2に記載のデータ配置先決定装置。
  4. 前記プログラム情報取得手段は、前記対象プログラムを分割した部分処理の各々についての、前記要求帯域および使用する変数に関する情報を少なくとも含むプログラム情報を取得し、
    前記優先度設定手段は、前記対象プログラムの前記部分処理で使用される前記変数の各々に対して前記要求帯域に基づく前記優先度を設定するとともに、前記候補メモリの各々に対してメモリ帯域に基づく前記優先度を設定し、
    前記第1の配置先決定手段は、前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記優先度設定手段が設定した前記優先度に基づいて、前記対象プログラムの部分処理で使用される前記変数の各々の配置先を決定し、
    前記第2の配置先決定手段は、前記第1の配置先決定手段によって配置先が決定されていない配置先未決定変数の配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定変数の前記優先度と前記変数を使用する前記部分処理の前記要求帯域と前記候補メモリの前記メモリ帯域とに基づいて、決定する
    請求項1または請求項2に記載のデータ配置先決定装置。
  5. 前記第2の配置先決定手段は、前記配置先未決定プログラム、前記配置先未決定の部分処理または前記配置先未決定変数を配置可能な前記候補メモリの各々において、配置後の当該候補メモリにおけるメモリ帯域を超過した度合いを示すメモリ帯域超過度に基づいて、前記配置先未決定プログラム、前記配置先未決定の部分処理または前記配置先未決定変数の配置先を決定する
    請求項4に記載のデータ配置先決定装置。
  6. 前記第2の配置先決定手段は、前記配置先未決定プログラム、前記配置先未決定の部分処理または前記配置先未決定変数を配置可能な前記候補メモリの各々について、配置後の当該候補メモリにおけるメモリ帯域超過度に応じた当該候補メモリをデータの配置先とする前記対象プログラムの総実行時間の増加割合を算出し、前記増加割合の最も小さい候補メモリを配置先に決定する
    請求項5に記載のデータ配置先決定装置。
  7. 前記第2の配置先決定手段は、前記配置先未決定プログラム、前記配置先未決定の部分処理または前記配置先未決定変数を配置可能な前記候補メモリの各々について、配置後の当該候補メモリにおけるメモリ帯域超過度と当該候補メモリをデータの配置先とする前記対象プログラムの実行時間とを用いて、当該候補メモリをデータの配置先とする前記対象プログラムの総実行時間の増加割合を算出し、前記増加割合の最も小さい候補メモリを配置先に決定する
    請求項5または請求項6に記載のデータ配置先決定装置。
  8. 決定された配置先を出力する出力手段を備えた
    請求項1から請求項7のうちのいずれか1項に記載のデータ配置先決定装置。
  9. 情報処理装置が、
    使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズ、および、前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得し、
    前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定し、
    前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記対象プログラムの優先度と前記候補メモリの前記優先度とに基づいて、前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定し、
    配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する
    データ配置先決定方法。
  10. コンピュータに、
    使用するデータの配置先の決定対象である対象プログラムの各々についての、メモリに対する要求帯域と要求サイズを取得する処理、
    前記対象プログラムで使用されるデータの配置先の候補である候補メモリの各々についての、メモリ帯域とメモリサイズとを取得する処理、
    前記対象プログラムの各々に対して前記要求帯域に基づく優先度を設定するとともに、前記候補メモリの各々に対して前記メモリ帯域に基づく優先度を設定する処理、
    前記候補メモリの各々の前記メモリサイズと前記メモリ帯域とを超過しない範囲で、前記対象プログラムの前記優先度と前記候補メモリの前記優先度とに基づいて、前記候補メモリの中から前記対象プログラムの各々で使用されるデータの配置先を決定する処理、および
    配置先が決定されていない配置先未決定プログラムの配置先を、前記候補メモリの各々の前記メモリサイズを超過しない範囲で、前記配置先未決定プログラムの前記優先度と前記対象プログラムの要求帯域と前記候補メモリのメモリ帯域とに基づいて、決定する処理
    を実行させるデータ配置先決定プログラムを記録するプログラム記録媒体。
JP2017509258A 2015-03-30 2016-03-22 データ配置先決定装置、方法およびプログラム Active JP6705443B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2015067975 2015-03-30
JP2015067975 2015-03-30
PCT/JP2016/001640 WO2016157826A1 (ja) 2015-03-30 2016-03-22 データ配置先決定装置、方法およびプログラム記録媒体

Publications (2)

Publication Number Publication Date
JPWO2016157826A1 true JPWO2016157826A1 (ja) 2018-02-01
JP6705443B2 JP6705443B2 (ja) 2020-06-03

Family

ID=57005867

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017509258A Active JP6705443B2 (ja) 2015-03-30 2016-03-22 データ配置先決定装置、方法およびプログラム

Country Status (3)

Country Link
US (1) US10120602B2 (ja)
JP (1) JP6705443B2 (ja)
WO (1) WO2016157826A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6582628B2 (ja) * 2015-07-02 2019-10-02 富士通株式会社 処理割当方法、処理割当装置、及び処理割当プログラム
CN108780565B (zh) * 2016-03-24 2022-08-02 富士胶片株式会社 图像处理装置、图像处理方法及存储介质
US11188231B2 (en) * 2019-03-01 2021-11-30 International Business Machines Corporation Data placement on storage devices

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000003268A (ja) 1998-06-11 2000-01-07 Mitsubishi Electric Corp メモリマップ最適化決定方法
JP2003330730A (ja) 2002-05-15 2003-11-21 Matsushita Electric Ind Co Ltd オペレーティングシステム配置装置
JP4149762B2 (ja) * 2002-08-09 2008-09-17 富士通株式会社 メモリ資源最適化支援方法、プログラム及び装置
JP2007026094A (ja) * 2005-07-15 2007-02-01 Matsushita Electric Ind Co Ltd 実行装置およびアプリケーションプログラム
JP2010113482A (ja) * 2008-11-05 2010-05-20 Panasonic Corp 資源割付方法、プログラム、及び資源割付装置
JP2011076516A (ja) 2009-10-01 2011-04-14 Seiko Epson Corp 配置指示情報更新プログラム
JP5849744B2 (ja) 2012-02-01 2016-02-03 株式会社リコー 関数配置装置、関数配置プログラム、関数配置方法
JP5776813B2 (ja) * 2014-04-03 2015-09-09 富士通株式会社 マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム
FR3030168B1 (fr) * 2014-12-15 2017-01-13 Thales Sa Procede de choix d'au moins un service et dispositif associe

Also Published As

Publication number Publication date
WO2016157826A1 (ja) 2016-10-06
JP6705443B2 (ja) 2020-06-03
US20180081581A1 (en) 2018-03-22
US10120602B2 (en) 2018-11-06

Similar Documents

Publication Publication Date Title
US9965324B2 (en) Process grouping for improved cache and memory affinity
US9477601B2 (en) Apparatus and method for determining a sector division ratio of a shared cache memory
CN108153589B (zh) 用于多线程的处理布置中的数据处理的方法和系统
US20130152089A1 (en) Job management apparatus and job management method
US8359291B2 (en) Architecture-aware field affinity estimation
WO2016157826A1 (ja) データ配置先決定装置、方法およびプログラム記録媒体
CN105849698B (zh) 动态编程中的执行防护
US9864693B2 (en) Data processing method, information processing device, and recording medium
JP6244949B2 (ja) 情報処理装置、制御方法、および制御プログラム
Wang et al. A fast work-efficient sssp algorithm for gpus
JP2021163398A (ja) 情報処理装置及び情報処理方法
US10102099B2 (en) Performance information generating method, information processing apparatus and computer-readable storage medium storing performance information generation program
JP6156379B2 (ja) スケジューリング装置、及び、スケジューリング方法
US10318422B2 (en) Computer-readable recording medium storing information processing program, information processing apparatus, and information processing method
CN113918638A (zh) 数据处理链路确定方法、系统、设备及存储介质
AU2020462915A1 (en) Information processing system for assisting in solving allocation problems, and method
JP6901685B2 (ja) 生成プログラム、生成方法、及び情報処理装置
Beach et al. Integrating acceleration devices using CometCloud
JP6322968B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP7156376B2 (ja) 観測事象判定装置、観測事象判定方法、及びプログラム
EP4312123A1 (en) Memory aware context switching
KR20110054102A (ko) 비정규 리덕션의 병렬화 방법
CN115981944A (zh) 内存测试方法、装置、设备及存储介质
WO2016122585A1 (en) Modifying characteristics of a memory segment

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170915

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190215

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200427

R150 Certificate of patent or registration of utility model

Ref document number: 6705443

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150