(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-26
(45)【発行日】2023-01-10
(54)【発明の名称】制御装置、及び制御プログラム
(51)【国際特許分類】
G06F 3/06 20060101AFI20221227BHJP
G06F 16/185 20190101ALI20221227BHJP
G06F 12/06 20060101ALI20221227BHJP
【FI】
G06F3/06 301Z
G06F3/06 304R
G06F3/06 301X
G06F16/185
G06F12/06 515J
(21)【出願番号】P 2019031240
(22)【出願日】2019-02-25
【審査請求日】2021-11-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(72)【発明者】
【氏名】飯澤 健
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2011-138321(JP,A)
【文献】米国特許出願公開第2017/0139833(US,A1)
【文献】米国特許出願公開第2007/0185933(US,A1)
【文献】国際公開第2016/001959(WO,A1)
【文献】特開2010-176497(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
G06F 16/185
G06F 12/06
(57)【特許請求の範囲】
【請求項1】
データセットに含まれる
N個のデータの各々に対して所定の処理を行なう処理装置から、前記
N個のデータのうちの第
i(iは1以上且つN以下)のデータに対する
第iの読出要求を受信する受信部と、
互いに読出性能の異なる複数の記憶階層のうちの前記第
iのデータを記憶する第1の記憶階層から、前記第
iのデータを読み出し、読み出した前記第
iのデータを、前記
第iの読出要求に応じて前記処理装置へ送信する送信部と、
前記処理装置による前記所定の処理の処理時間を
、前記受信部が前記第iの読出要求を受信した受信時刻から、第(i-1)のデータを前記送信部が前記処理装置に送信した送信時刻を減じることで算出する
算出部と、
前記第(i-1)のデータを記憶する記憶階層からの前記第(i-1)のデータの読み出しが完了する読出完了時刻に前記複数の記憶階層の各々の読出性能
に応じた前記第iのデータの読出時間を加算することで推定される前記第iのデータの読出完了時刻が、前記第(i-1)のデータの読出完了時刻と前記第(i-1)のデータに対する第(i-1)の読出要求の受信時刻とのうちの遅い方に前記処理時間
を加算することで推定される前記第iの読出要求の推定受信時刻以前となるような読出性能を有する記憶階層を、前記第
iのデータを記憶させる記憶階層
に決定する決定部と、
前記第
iのデータを、前記第1の記憶階層から、決定した前記記憶階層へ移動する移動部と、を備える、
制御装
置。
【請求項2】
前記決定部は、
複数の
前記読出完了時刻において、前記推定受信時刻以前である1以上の読出完了時刻が存在するか否かを判定し、
前記1以上の読出完了時刻が存在する場合、前記1以上の読出完了時刻のうちの、前記推定受信時刻との時刻差が最小である読出完了時刻に対応する記憶階層を、前記第
iのデータを記憶させる前記記憶階層に決定する、
請求項
1に記載の制御装置。
【請求項3】
前記決定部は、前記1以上の読出完了時刻が存在しない場合、前記複数の記憶階層のうちの読出性能の高い順に選択される記憶階層を、前記第
iのデータを記憶させる前記記憶階層に決定する、
請求項
2に記載の制御装置。
【請求項4】
前記処理装置は、前記
N個のデータの各々に対して前記所定の処理を行なう、一連の処理を1単位として、前記一連の処理を複数回実行し、
前記決定部は、前記一連の処理の完了後であって、次の前記一連の処理が実行される前に、前記第
iのデータを記憶させる前記記憶階層を決定する、
請求項1~
3のいずれか1項に記載の制御装置。
【請求項5】
前記決定部は、前記
N個のデータの各々を記憶させる記憶階層をそれぞれ決定し、
前記移動部は、前記
N個のデータの各々を、決定した前記記憶階層へそれぞれ移動する、
請求項1~
4のいずれか1項に記載の制御装置。
【請求項6】
コンピュータに、
データセットに含まれる
N個のデータの各々に対して所定の処理を行なう処理装置から、前記
N個のデータのうちの第
i(iは1以上且つN以下)のデータに対する
第iの読出要求を受信し、
互いに読出性能の異なる複数の記憶階層のうちの前記第
iのデータを記憶する第1の記憶階層から、前記第
iのデータを読み出し、
読み出した前記第
iのデータを、前記
第iの読出要求に応じて前記処理装置へ送信し、
前記処理装置による前記所定の処理の処理時間を
、前記第iの読出要求を受信した受信時刻から、第(i-1)のデータを前記処理装置に送信した送信時刻を減じることで算出し、
前記第(i-1)のデータを記憶する記憶階層からの前記第(i-1)のデータの読み出しが完了する読出完了時刻に前記複数の記憶階層の各々の読出性能
に応じた前記第iのデータの読出時間を加算することで推定される前記第iのデータの読出完了時刻が、前記第(i-1)のデータの読出完了時刻と前記第(i-1)のデータに対する第(i-1)の読出要求の受信時刻とのうちの遅い方に前記処理時間
を加算することで推定される前記第iの読出要求の推定受信時刻以前となるような読出性能を有する記憶階層を、前記第
iのデータを記憶させる記憶階層
に決定し、
前記第
iのデータを、前記第1の記憶階層から、決定した前記記憶階層へ移動する、
処理を実行させる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置、及び制御プログラムに関する。
【背景技術】
【0002】
データを格納する情報処理システムとして、複数の記憶装置(記憶媒体)を組み合わせた階層ストレージシステムが知られている。記憶装置の種類(種別)としては、例えば、性能の高い(アクセス速度の速い)順に、SSD(Solid State Drive)、HDD(Hard Disk Drive)、テープドライブ(TD;Tape Drive)、等が挙げられる。
【0003】
階層ストレージシステムにおいては、ストレージ制御装置等の制御装置(以下、「サーバ」と表記する場合がある)が、データへのアクセス頻度に応じて、データを配置する記憶装置の階層(記憶階層)を変更する階層制御を行なうことがある。
【0004】
階層制御では、サーバは、アクセス頻度の低いデータを性能の低い記憶装置に配置する一方、アクセス頻度の高いデータ又は当該データに関連するデータを性能の高い記憶装置に配置する。これにより、階層ストレージシステムは、性能の高い記憶装置の使用効率を高めることができ、アクセス元である情報処理装置(以下、「クライアント」と表記する場合がある)に対する応答性能を向上させることができる。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2006-79432号公報
【文献】特表2015-501958号公報
【文献】特開2003-131908号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
階層ストレージシステムには、人工知能(AI;Artificial Intelligence)を利用した機械学習又はデータマイニング等の一連の処理で利用されるデータが格納されることがある。なお、「一連の処理」は、体系化され反復的に行なわれ得る処理群を意味し、「ワークフロー」又は「WF」(Workflow)と称されてもよい。
【0007】
機械学習やデータマイニング等のWFでは、クライアントは、従来の人手(人力)で行なわれるアクセスに代えて、WFを実行するためのアプリケーションにより、階層ストレージシステムに対するアクセス(例えばデータの読み出し)を行なう。
【0008】
当該アプリケーションから階層ストレージシステムへのアクセスは、例えば、アクセス対象のデータ範囲やその遷移、アクセスの頻度や回数、等の点において、従来の人手で行なわれるアクセスとは異なるアクセス傾向を持つ場合がある。
【0009】
そのため、階層ストレージシステムにおいては、サーバにより、このようなアプリケーションを実行するクライアントからのアクセスに対する適切な階層制御が行なわれず、当該クライアントに対する応答性能が低下する場合がある。
【0010】
1つの側面では、本発明は、複数の記憶階層におけるデータの適切な配置先を決定することを目的の1つとする。
【課題を解決するための手段】
【0011】
1つの側面では、制御装置は受信部と、送信部と、算出部と、決定部と、移動部と、を備えてよい。前記受信部は、データセットに含まれるN個のデータの各々に対して所定の処理を行なう処理装置から、前記N個のデータのうちの第i(iは1以上且つN以下)のデータに対する第iの読出要求を受信してよい。前記送信部は、互いに読出性能の異なる複数の記憶階層のうちの前記第iのデータを記憶する第1の記憶階層から、前記第iのデータを読み出し、読み出した前記第iのデータを、前記第iの読出要求に応じて前記処理装置へ送信してよい。前記算出部は、前記処理装置による前記所定の処理の処理時間を、前記受信部が前記第iの読出要求を受信した受信時刻から、第(i-1)のデータを前記送信部が前記処理装置に送信した送信時刻を減じることで算出してよい。前記決定部は、前記第(i-1)のデータを記憶する記憶階層からの前記第(i-1)のデータの読み出しが完了する読出完了時刻に前記複数の記憶階層の各々の読出性能に応じた前記第iのデータの読出時間を加算することで推定される前記第iのデータの読出完了時刻が、前記第(i-1)のデータの読出完了時刻と前記第(i-1)のデータに対する第(i-1)の読出要求の受信時刻とのうちの遅い方に前記処理時間を加算することで推定される前記第iの読出要求の推定受信時刻以前となるような読出性能を有する記憶階層を、前記第iのデータを記憶させる記憶階層に決定してよい。前記移動部は、前記第iのデータを、前記第1の記憶階層から、決定した前記記憶階層へ移動してよい。
【発明の効果】
【0012】
1つの側面では、複数の記憶階層におけるデータの適切な配置先を決定することができる。
【図面の簡単な説明】
【0013】
【
図1】クライアント及びサーバの動作例を時系列で示す図である。
【
図2】
図1に示すワークフロー後に、サーバがデータセットをHDDからSSDに再配置した場合の例を示す図である。
【
図3】
図1に比べて処理時間の長いワークフロー後に、サーバがデータセットをHDDからSSDに再配置した場合の例を示す図である。
【
図4】一実施形態の一例としての階層ストレージシステムの構成例を示すブロック図である。
【
図5】一実施形態に係るコンピュータのハードウェア構成例を示すブロック図である。
【
図6】一実施形態の一例としてのストレージ制御装置の機能構成例を示すブロック図である。
【
図10】処理装置の動作状態とパラメータとの関係の一例を説明する図である。
【
図11】処理装置の動作状態とパラメータとの関係の一例を説明する図である。
【
図12】判定部による判定処理の一例を説明する図である。
【
図13】判定部による判定処理の一例を説明する図である。
【
図14】一実施形態に係るストレージ制御装置の動作例を説明するフローチャートである。
【
図15】
図14に示す再配置先算出処理の動作例を説明するフローチャートである。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【0015】
〔1〕一実施形態
〔1-1〕比較例
まず、一実施形態の比較例について説明する。階層ストレージシステムにおいて、サーバは、ネットワークを介して接続された複数のクライアントからの要求に応じて、記憶装置に対するアクセスを行なう。
【0016】
以下、クライアントが、階層ストレージシステムに格納されているデータを順次読み出し、画像認識等の機械学習やデータマイニング等の処理を行なう場合を想定する。
【0017】
この場合、サーバにおけるワークロードは、従来の人手でデータ操作を行なう場合のワークロードに比べ、以下の点が異なる。なお、「ワークロード」は、サーバの処理(作業)負荷やリソースの利用状況を示す情報(例えば指標)であり、WFを実行するクライアントからのアクセスの傾向に相関のある(例えばアクセスの傾向に応じて変化する)情報である。
【0018】
・クライアントは、階層ストレージシステムから読み出したデータに対して計算処理を行なう。そのため、クライアントが或るデータを読み出してから次のデータを読み出すまでに、換言すれば、サーバが読出要求を受信してから次の読出要求を受信するまでに、ある程度の時間間隔が開く。
【0019】
・クライアントが同一のアプリケーションによる処理を繰り返し実行する場合、或るデータに対する処理時間は略一定となる。
【0020】
このようなワークロードにおいて、各クライアントが以下の動作を行なう場合を想定する。
【0021】
(i)クライアントは、WF開始時、複数のデータ(以下、「データセット」と表記する場合がある)に含まれるデータ一覧と、これらのデータを読み出す順番とをサーバに対して通知する。以下、この通知を「プリフェッチ要求」と表記する場合がある。
【0022】
(ii)クライアントは、WFにおいて、データセットに対して順番に読出アクセスを行なう。ここで、「読出アクセス」とは、クライアントがサーバに対して読出要求を送信し、サーバから当該データを受信(取得)することを意味する。
【0023】
(iii)クライアントは、或るデータを読み出し、読み出したデータに対して処理を行なった後、次のデータに対する読出要求をサーバに送信する。
【0024】
(iv)クライアントは、WFを複数回繰り返して実行する。
【0025】
また、このようなワークロードにおいて、サーバが以下の動作を行なう場合を想定する。
【0026】
(I)サーバは、プリフェッチ要求で指定された順番に、データを記憶装置(SSD、HDD、又は、TD)から、読み出したデータを一時的に格納するRAM(Random Access Memory)に読み出す。
【0027】
(II)サーバは、クライアントから読出要求を受信すると、以下の(II-1)及び(II-2)のいずれか一方の処理を行なう。
【0028】
(II-1)読出要求で要求されたデータが既にRAMに格納されている場合、サーバは、読出要求に係るデータをRAMから読み出し、読み出したデータをクライアントに送信する。また、サーバは、当該データをRAMから削除する。
【0029】
(II-2)読出要求で要求されたデータがRAMに格納されていない場合、サーバは、クライアントを待たせ、読出要求に係るデータを記憶装置からRAMに読み出し、RAMから当該データを読み出してクライアントに送信する。また、サーバは、当該データをRAMから削除する。
【0030】
図1は、クライアント及びサーバの動作例を時系列で示す図である。
図1において、横軸は時刻を示す。
【0031】
図1の例において、網掛けで示す“I/O(Read)”がサーバの処理であり、クライアントから1つのデータの読出要求を受信してから読出要求に係るデータをクライアントに送信するまでの上記(I)及び(II)の処理に対応する。また、
図1の例において、白抜きで示す“Compute”がクライアントの処理であり、サーバから読出要求に係るデータを受信してから、受信したデータに対する処理を行なうまでの上記(ii)及び(iii)の処理の一部に対応する。
【0032】
また、“I/O(Read)”及び“Compute”の1組の処理が、データセットに含まれる1つのデータに対する処理であり、
図1の例では、“data1”、“data2”、“data3”の3つのデータの処理を示す。
【0033】
図1に示すWFの例としては、動画像処理が挙げられる。クライアントは、サーバから動画像を1フレームずつ読み出し、1フレームの画像データに対して物体検出等の処理を行なっている間に、次のフレームをサーバから読み出す。この場合、フレームがデータ、動画像ファイル全体がデータセットに相当する。
【0034】
なお、
図1に示すように、クライアントは、“data3”についてサーバから受信したデータに対する処理が完了すると、データセットの先頭(“data1”)から処理を繰り返すために(上記(iv)参照)、再び“data1”に係る読出要求をサーバに送信する。
【0035】
ここで、サーバは、WFの終了時、換言すれば、プリフェッチ要求で指定された最後のデータを読み出した後、プリフェッチ要求で指定されたデータセット全体をSSDに移動(再配置)する。なお、データ(データセット)が既にSSDに配置されている場合は、何もしなくてよい(再配置を省略してよい)。
【0036】
図2は、
図1に示すWF後に、サーバがデータセットをHDDからSSDに再配置した場合の例を示す図である。
【0037】
図2に示すように、サーバは、データセットをHDD(又はTD)等の低速デバイスから、SSD等の高速デバイスに移動させることで、2回目以降のWFにおいて、データを記憶装置から読み出す処理を高速化することができる。その結果、WF完了にかかる時間を短縮させることができる。
【0038】
ここで、サーバによる記憶装置からデータを読み出す時間と、読み出したデータに対するクライアントによる処理時間との比率は、WF(換言すれば、クライアント)により異なる。
【0039】
図3に示すように、例えば、
図2に示す例に比べてデータに対する処理時間が長いWFを想定する。最初に、このWFによりアクセスされるデータセットが、階層ストレージシステムのHDDに格納されている場合、サーバは、1回目のWF終了後に、データセット全体をSSDに移動する。
【0040】
図3に示すように、このワークロードの場合、最初にアクセスされるオブジェクト(データ;“data1”)の読出高速化は、高速化された分の時間だけ、ワークロード全体の完了時間の短縮に繋がる。しかし、次以降にアクセスされるオブジェクト(
図3の例では“data2”及びそれ以降のデータ)の読み出し高速化は、ワークロード全体の完了時間の短縮には寄与しない。これは、サーバが“data2”を早いタイミングで読み出したとしても、クライアントからの“data2”の読出要求は、その前の“data1”に対するクライアントでの処理が完了しないと送信されず、サーバで“data2”の読出要求の待ち合わせが発生するためである。
【0041】
以上のように、1回目のWF完了後に、当該データセットを無条件にSSDに移動させることは、HDDやTDよりも比較的低容量且つ高価格であるSSD容量の圧迫に繋がる。その結果、SSDに移動させることで大きな性能向上効果を見込めるデータセットを十分にSSDに配置することができず、階層ストレージシステムにアクセスする全クライアントの平均性能が低下する場合がある。
【0042】
そこで、一実施形態では、1つの側面において、複数の記憶装置におけるデータの適切な配置先を決定する手法を説明する。
【0043】
〔1-2〕一実施形態の構成例
図4は、一実施形態の一例としての階層ストレージシステム1の構成例を示すブロック図である。階層ストレージシステム1は、ストレージシステム又は情報処理システムの一例である。
図4に示すように、階層ストレージシステム1は、例示的に、1以上の階層ストレージ装置2、及び、複数の処理装置6を備えてよい。なお、階層ストレージ装置2が備える処理装置6は、1台でもよい。
【0044】
階層ストレージ装置2は、ストレージ装置、情報処理装置、又はコンピュータの一例である。階層ストレージ装置2は、1以上のストレージ制御装置20、並びに、複数種類の記憶装置の一例であるSSD3、HDD4及びTD5を備えてよく、ストレージ制御装置20により、これらの記憶装置の記憶領域を複数の処理装置6に提供してよい。以下、SSD3、HDD4及びTD5を総称して記憶装置30と表記する場合がある。
【0045】
ストレージ制御装置20は、制御装置(コントローラ)、情報処理装置、又はコンピュータの一例であり、例えば、CM(Controller Module)であってもよい。なお、階層ストレージ装置2は、冗長化やスケールアウトのために、2以上のストレージ制御装置20を備えてもよい。
【0046】
ストレージ制御装置20は、複数の記憶装置30の各々と通信可能に接続され、処理装置6に対するアクセス制御、並びに、記憶装置30に対するアクセス制御及び階層制御、等の種々の制御を行なう。ストレージ制御装置20による制御には、上記(I)及び(II)に記載した処理の少なくとも一部が含まれてよい。
【0047】
SSD3、HDD4及びTD5は、互いに性能の異なる、換言すれば、互いに異なる階層である、複数種類の記憶装置30の一例であり、互いに読出性能の異なる複数の記憶階層の一例である。SSD3、HDD4及びTD5は、階層ストレージを構成してよい。
【0048】
図4に示すように、複数種類(種別)の記憶装置30としては、例えば、SSD3等の半導体ドライブ装置、HDD4の磁気ディスク装置、及び、TD5等の外部記録媒体装置、等が挙げられる。TD5は、例えば、磁気テープカートリッジや光ディスクカートリッジ等の媒体カートリッジ(記録媒体)を挿抜可能であり、挿入された媒体カートリッジに対してデータのリード及びライトを行なう、テープライブラリ装置であってもよい。
【0049】
半導体ドライブ装置は、高速アクセスが可能な高速記憶装置の一例である。外部記録媒体装置は、比較的低速な低速記憶装置の一例である。磁気ディスク装置は、高速記憶装置と低速記憶装置との間のアクセス性能である中速記憶装置の一例である。
【0050】
なお、階層ストレージ装置2が備える記憶装置30は、上述したものに限定されず、性能及び記憶容量の少なくとも一方が互いに異なる、2種類以上の記憶装置であってよい。また、
図4の例では、階層ストレージ装置2が、SSD3、HDD4及びTD5をそれぞれ1台ずつ備えるものとして示すが、これに限定されるものではなく、階層ストレージ装置2は、SSD3、HDD4及びTD5を、それぞれ、2台以上備えてもよい。
【0051】
階層ストレージ装置2が提供する記憶領域には、処理装置6においてアプリケーションの実行により読み出され使用されるデータが格納されてよい。なお、当該データは、処理装置6又は図示しない他のコンピュータから階層ストレージ装置2に送信され、階層ストレージ装置2により記憶装置30に格納されてよい。
【0052】
処理装置6は、PC(Personal Computer)又はサーバ等の情報処理装置の一例であり、図示しないCPU(Central Processing Unit)等のプロセッサを備えてよい。処理装置6は、例えば、プロセッサによりOS(Operating System)上でアプリケーションを実行することで、種々の機能を実現してよい。一実施形態において、処理装置6は、アプリケーションにより、上述した(i)~(iv)のWFを実行するものとする。
【0053】
なお、処理装置6は、1以上のVM(Virtual Machine;仮想マシン)を実行し、1以上のVMにおいてOSを実行してもよい。この場合、処理装置6は、1以上のVMのOS上でそれぞれアプリケーションを実行し、各アプリケーションにより、上述した(i)~(iv)のWFを実行してもよい。
【0054】
このように、処理装置6は、データセットに含まれる複数のデータの各々に対して所定の処理を行なう、一連の処理(WF)を1単位として、一連の処理を複数回実行する。
【0055】
一連の処理としては、非限定的な一例として、画像認識等の機械学習における動画像処理やデータマイニング等が挙げられる。この場合、データセットは、動画像処理やデータマイニングの処理対象であり、例えばファイルである。また、データセットに含まれる各データは、動画像処理やデータマイニングにおける所定の処理が行なわれる1単位のデータであり、例えば、動画像における画像データ(フレーム)である。なお、所定の処理としては、例えば、画像データに対する物体検出や圧縮伸張等の処理が挙げられる。
【0056】
所定の処理には、上記に加えて、1ファイルとして扱われる情報を分割して得られる所定の処理単位の各々に対して、互いに同様の(一定の)態様で行なわれる種々の処理が含まれてよい。
【0057】
階層ストレージ装置2と複数の処理装置6の各々とは、ネットワーク7を介して相互に通信可能に接続されてよい。ネットワーク7としては、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、及び、インターネットの少なくとも1つを含んでよい。
【0058】
なお、ネットワーク7は、例えば、VPN(Virtual Private Network)等の仮想的なネットワークを含んでもよい。また、ネットワーク7は、例えば、SAS(Serial Attached Small Computer System Interface)又はFC(Fibre Channel;ファイバチャネル)等のインタフェース(IF;Interface)を介したSAN(Storage Area Network)を含んでもよい。
【0059】
〔1-3〕ハードウェア構成例
次に、ストレージ制御装置20及び処理装置6のハードウェア(HW;Hardware)構成例を説明する。ストレージ制御装置20及び処理装置6は、いずれも同様又は類似のハードウェア構成を備えてよい。そこで、以下、コンピュータ10のハードウェア構成例を参照して、ストレージ制御装置20及び処理装置6のハードウェア構成例を説明する。
図5は、一実施形態に係るコンピュータ10のハードウェア構成例を示すブロック図である。
【0060】
コンピュータ10は、HW構成として、例示的に、プロセッサ10a、メモリ10b、記憶部10c、IF部10d、I/O(Input / Output)部10e、及び、読取部10fを備えてよい。
【0061】
プロセッサ10aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ10aは、コンピュータ10内の各ブロックとバス10iで相互に通信可能に接続されてよい。なお、プロセッサ10aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【0062】
プロセッサ10aとしては、例えば、CPU、MPU、GPU、APU、DSP、ASIC、FPGA等の集積回路(IC;Integrated Circuit)が挙げられる。MPUはMicro Processing Unitの略称である。GPUはGraphics Processing Unitの略称であり、APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
【0063】
メモリ10bは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ10bとしては、例えばDRAM(Dynamic RAM)等の揮発性メモリが挙げられる。
【0064】
記憶部10cは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。記憶部10cとしては、HDD等の磁気ディスク装置、例えばSSD等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。
【0065】
また、記憶部10cは、コンピュータ10の各種機能の全部若しくは一部を実現するプログラム10gを格納してよい。例えば、ストレージ制御装置20のプロセッサ10aは、記憶部10cに格納されたプログラム10gをメモリ10bに展開して実行することにより、ストレージ制御装置20としての機能を実現できる。また、処理装置6のプロセッサ10aは、記憶部10cに格納されたプログラム10gをメモリ10bに展開して実行することにより、処理装置6としての機能を実現できる。
【0066】
IF部10dは、図示しないネットワーク(
図4に示すネットワーク7を含んでもよい)との間の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部10dは、LAN、或いは、光通信(例えばFC)等に準拠したアダプタを含んでよい。例えば、プログラム10gは、当該通信IFを介して、ネットワークからコンピュータ10にダウンロードされ、記憶部10cに格納されてもよい。
【0067】
なお、ストレージ制御装置20のIF部10dは、ネットワーク7に対する通信IFに加えて、SSD3、HDD4及びTD5にそれぞれ対応する1以上の通信IFや、冗長化して備えられた他のストレージ制御装置20に対する通信IF等を備えてもよい。
【0068】
I/O部10eは、マウス、キーボード、又は操作ボタン等の入力部、並びに、タッチパネルディスプレイ、LCD(Liquid Crystal Display)等のモニタ、プロジェクタ、又はプリンタ等の出力部、の一方又は双方を含んでよい。
【0069】
読取部10fは、記録媒体10hに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部10fは、記録媒体10hを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部10fとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体10hにはプログラム10gが格納されてもよく、読取部10fが記録媒体10hからプログラム10gを読み出して記憶部10cに格納してもよい。
【0070】
記録媒体10hとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等が挙げられる。なお、CDとしては、例示的に、CD-ROM、CD-R、CD-RW等が挙げられる。また、DVDとしては、例示的に、DVD-ROM、DVD-RAM、DVD-R、DVD-RW、DVD+R、DVD+RW等が挙げられる。
【0071】
上述したコンピュータ10のハードウェア構成は例示である。従って、コンピュータ10内でのハードウェアの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。
【0072】
例えば、ストレージ制御装置20としてのコンピュータ10において、I/O部10e及び読取部10fの少なくとも一方は、省略されてもよい。また、ストレージ制御装置20としてのコンピュータ10は、記憶部10cとして、記憶装置30(SSD3、HDD4、及びTD5)の少なくとも1つを用いてもよい。
【0073】
〔1-4〕機能構成例
図6は、一実施形態の一例としてのストレージ制御装置20の機能構成例を示すブロック図である。なお、
図6は、処理装置6から階層ストレージ装置2に対するデータの読出アクセスが行なわれる場合の機能構成に着目した図である。ストレージ制御装置20は、例示的に、メモリ部21、受付部22、アクセス部23、計測部24、判定部25、及び、移動制御部26を備えてよい。
【0074】
メモリ部21は、ストレージ制御装置20の制御に用いられる種々の情報を記憶する。メモリ部21は、例示的に、複数の記憶領域を備えてよく、これらの記憶領域に、読出データ21a、計測値21b、パラメータ21c、及び階層テーブル21dをそれぞれ記憶してよい。メモリ部21は、
図5に示すメモリ10b及び記憶部10cの少なくとも一方が有する記憶領域により実現されてよい。
【0075】
受付部22は、例えば、処理装置6で実行されるアプリケーション(
図6中、「APP」と表記)61からプリフェッチ要求及び読出要求を受信し、受信した要求の種別や内容等の情報を取得して、取得した情報をアクセス部23に送信(出力)する。また、受付部22は、後述するアクセス部23から読出データ21aを受信すると、当該データを読出要求への応答として処理装置6に送信する。
【0076】
プリフェッチ要求は、WFを開始するタイミングで処理装置6から送信され、受付部22により受信される。プリフェッチ要求には、データセットに含まれるデータ一覧と、データ一覧で指定された複数のデータの読出順序と、が含まれてよい。なお、WFが繰り返し実行される場合、アプリケーション61は、プリフェッチ要求を、WFを開始する各タイミングで送信してもよいし、1回目にWFを開始するタイミングで送信してもよい。
【0077】
読出要求は、データの先読みを指示するタイミング(WFを開始するタイミング又は1つ前のデータに対する処理が完了したタイミング)で処理装置6から送信され、受付部22により受信される。読出要求には、データ一覧に含まれるデータのうちの読出対象のデータを特定する情報が含まれてよい。
【0078】
なお、データセットからのデータの読出順序は、プリフェッチ要求で指定されているため、読出対象のデータを特定する情報は、プリフェッチ要求に含まれるデータ一覧から読出対象のデータのエントリを特定する情報であってもよい。或いは、データ一覧の中の未読出のデータを読出順に読み出すことが分かっているため、読出対象のデータを特定する情報は、単に、プリフェッチ要求又はデータセットを特定する情報であってもよい。
【0079】
以上のように、受付部22は、処理装置6から、複数のデータのうちの第1のデータに対する読出要求を受信する受信部の一例である。
【0080】
アクセス部23は、プリフェッチ要求で指定された順番に、データを記憶装置30から読み出し、読み出したデータを読出データ21aとして、RAMの一例であるメモリ部21に格納する。
【0081】
また、アクセス部23は、読出要求を受信すると、読出要求で指定された読出対象のデータがメモリ部21に格納されているか(プリフェッチ済みか)否かを判定する。
【0082】
読出対象のデータがメモリ部21に格納されている場合、アクセス部23は、メモリ部21から読出対象の読出データ21aを読み出し、受付部22に送信(出力)する。
【0083】
一方、読出対象のデータがメモリ部21に格納されていない場合、アクセス部23は、読出対象のデータを記憶装置30から読み出し、読み出したデータを読出データ21aとして、メモリ部21に格納する。そして、アクセス部23は、メモリ部21から読出対象の読出データ21aを読み出し、受付部22に送信(出力)する。
【0084】
なお、アクセス部23は、読出データ21aを受付部22に送信すると、メモリ部21から読出データ21aを削除する。
【0085】
ここで、アクセス部23は、メモリ部21に記憶された階層テーブル21dを参照することで、読出対象のデータが格納(配置)されている記憶装置30(SSD3、HDD4、又はTD5)を特定してよい。
【0086】
図7は、階層テーブル21dの一例を示す図である。階層テーブル21dは、データセット(例えばファイル)に含まれる複数のデータの各々が格納(配置)されている記憶装置30を示す情報である。なお、
図7には、階層テーブル21dをテーブル形式で例示しているが、これに限定されるものではなく、階層テーブル21dは配列やDB(Database)等の種々の形態でメモリ部21に格納されてよい。
【0087】
階層テーブル21dは、例示的に、データセット及びデータを特定する情報、データの格納先の記憶装置30を特定する情報、及び、記憶装置30におけるデータの格納位置を示す情報、を含んでよい。
【0088】
図7の例では、階層テーブル21dは、データID(Identifier)、格納先、及び、格納位置を含んでよい。データIDには、データセット及びデータセット内のデータを特定できる情報が設定されてよい。
図7に例示するように、データIDには、データセットのID“ds1”と当該データセット内のデータのID“data00001”とを結合したIDが設定されてもよい。なお、データIDは、これに限定されるものではなく、該当データの先頭の論理アドレス(例えば、LBA;Logical Block Address)等が設定されてもよい。
【0089】
格納先には、データが格納される記憶装置30の識別情報が設定されてよい。格納位置には、記憶装置30におけるデータの記憶位置を特定可能な情報が設定されてよい。例えば、SSD3又はHDD4の格納位置には、ボリューム上の物理アドレス等が設定されてもよいし、ブロックやセグメント等のサイズに対応するオフセットが設定されてもよい。また、例えば、TD5の格納位置には、記憶媒体に割り当てられたLV(Logical Volume)及びPV(Physical Volume)の少なくとも一方をボリューム番号等が設定されてもよい。
【0090】
アクセス部23は、階層テーブル21dを参照し、読出対象のデータの格納先の記憶装置30を特定し、格納位置から読出対象のデータを読み出してよい。
【0091】
階層テーブル21dは、例えば、後述する移動制御部26によるデータの再配置処理に応じて更新されてよい。
【0092】
以上のように、受付部22及びアクセス部23は、複数の記憶階層のうちの第1のデータを記憶する第1の記憶階層から、第1のデータを読み出し、読み出した第1のデータを、読出要求に応じて処理装置6へ送信する送信部の一例である。
【0093】
計測部24は、データセットに含まれるデータごとに、WFを実行する処理装置6によるデータに対する処理時間を計測し、計測結果を計測値21bとしてメモリ部21に格納する。なお、ストレージ制御装置20が、1以上の処理装置6との間で複数のWFを処理する場合、メモリ部21には、WFごとの計測値21bが記憶されてよい。
【0094】
図8は、計測値21bの一例を示す図である。
図8に示すように、メモリ部21には、処理時間T
P(i)を含む計測値21bがWFごと(WF#0、WF#1、・・・)に格納されてよい。なお、データセットに含まれる全データ数をNとし、データセットに含まれるi番目のデータ(WFでi番目に読み出されるデータ)をd
iとすると、処理時間T
P(i)は、当該WFを実行する処理装置6がデータd
iを処理するのにかかる時間を意味する。ここで、iは、1以上且つN未満の整数である。
【0095】
例えば、計測部24は、下記式(1)を計算することで、処理時間TP(i)を算出してよい。
【0096】
処理時間TP(i)
= (処理装置6からデータdi+1に対する読出要求を受信した時刻)
- (処理装置6にデータdiを送信した時刻) (1)
【0097】
上記式(1)では、処理装置6にデータdiを送信した時刻を、処理装置6がデータdiを利用できるようになる時刻と推定する。また、上記式(1)では、処理装置6からデータdi+1に対する読出要求を受信した時刻を、処理装置6が次のデータdi+1を要求する時刻、すなわち、処理装置6がデータdiに対する処理を終了した時刻と推定する。
【0098】
これにより、計測部24は、処理装置6がデータdiに対して処理を行なうことができた時間を推定(近似)することができるため、処理装置6から処理時間の実測値を取得せずに済み、容易に処理時間TP(i)を取得することができる。従って、実測値を取得するための処理装置6の処理負荷やネットワーク7の通信負荷等の増加を抑制できる。
【0099】
計測部24は、或る処理装置6により繰り返し実行されるWFについて、1回目のWFの実行中に、WFの対象のデータセットに含まれる各データdiに対する処理時間TP(i)を計測(算出)してよい。
【0100】
なお、計測部24による処理時間TP(i)を計測のタイミングは、これに限定されるものではなく、例えば、処理時間TP(i)がWF実行の度に変わる可能性を考慮し、TP(i)の測定は、WFが実行される度に行なわれてもよい。
【0101】
このように、計測部24は、処理装置6による所定の処理の処理時間TP(i)を測定する測定部の一例である。この測定部は、受付部22が第iのデータに対する読出要求を受信した受信時刻TD(i)と、受付部22及びアクセス部23が複数のデータのうちの第(i-1)のデータを処理装置6に送信した送信時刻と、に基づいて、処理時間TP(i)を算出する。
【0102】
判定部25は、計測部24が計測した計測値21bと、パラメータ21cと、に基づいて、WFにおける処理対象のデータセットに含まれる各データを配置(再配置)する記憶装置30の階層を判定し、判定結果を移動制御部26に通知する。すなわち、判定部25は、処理対象のデータセットを、データ単位で適切な記憶装置30に配置(再配置)するための判定を行なう。
【0103】
判定部25は、或る処理装置6により繰り返し実行されるWFのうち、計測部24により処理時間TP(i)が計測されたWFの実行後に、判定を行なってよい。例えば、判定部25は、計測部24による処理時間TP(i)の計測がWFの実行の都度行なわれる場合には、WFの実行の都度、換言すれば、WFの完了後であって、次のWFが実行される前に、判定を行なってよい。
【0104】
移動制御部26は、判定部25からの通知に基づき、複数の記憶装置30における階層間でのデータの移動を制御する。例えば、移動制御部26は、判定部25から、或るデータの移動先がSSD3と判定された判定結果の通知を受信すると、当該データを、現在の格納先である記憶装置30からSSD3に移動(再配置)する。また、移動制御部26は、階層テーブル21dにおける当該データのエントリに対して、格納先及び格納位置の内容を、移動先(再配置先)の情報に更新する。
【0105】
なお、移動制御部26は、通知に係るデータの移動先が、現在の格納先と同一の階層(例えば同じ性能)である場合、移動制御を抑制してよい。或いは、判定部25は、判定したデータの移動先が、現在の格納先と同一の階層である場合、当該データについて、移動制御部26に対する判定結果の通知を制御してもよい。
【0106】
移動制御部26によるデータの移動制御は、例えば、データセットに含まれる全てのデータについて、判定部25から通知を受信した場合(WFが完了した場合)に、例えばデータセットに含まれる全てのデータを対象に実行されてよい。
【0107】
なお、移動制御部26によるデータの移動制御は、判定部25からデータごとに通知を受信する都度(WFの実行中に)、受信した通知に基づきデータ単位で実行されてもよい。
【0108】
このように、移動制御部26は、第1のデータを、第1の記憶階層から、判定部25が決定した記憶階層へ移動する移動部の一例である。
【0109】
〔1-5〕判定部の説明
次に、上述した判定部25について説明する。判定部25は、計測値21bと、パラメータ21cと、に基づいて、データごとに移動先(配置先)の記憶装置30の階層を判定する。
【0110】
図9は、パラメータ21cの一例を示す図である。
図9に示すように、パラメータ21cは、N、d
i、S
i、B
D、T
I/O(i)、t
S(i)、t
F(i)、及び、t
D(i)を含んでよい。なお、パラメータ21cは、これらの値を、変数又は配列等の形式でメモリ部21(例えばメモリ10b)に格納してよい。N及びd
iは、上述の通りであり、他の記号は以下の通りである。
【0111】
Si:データdiのサイズ
BD:データセット格納先であるデバイスDの読出性能
TI/O(i):ストレージ制御装置20がデータdiを読み出す読出時間
tS(i):ストレージ制御装置20がデータdiの読み出しを開始する時刻
tF(i):ストレージ制御装置20がデータdiの読み出しを完了する時刻
tD(i):ストレージ制御装置20がデータdiに対する処理装置6からの
読出要求を受信する時刻
【0112】
なお、上記の説明において、デバイスDは、データセットが格納されているSSD3、HDD4又はTD5のいずれかを示す。BDは、SSD3の読出性能BSSD、HDD4の読出性能BHDD、TD5の読出性能BTD、を含んでよく、これらの値はいずれも既知であるものとする。
【0113】
また、N、di、Siは、いずれも、記憶装置30へのデータセットの格納のタイミング以降、ストレージ制御装置20において取得可能である。
【0114】
さらに、TI/O(i)は、データdiがデバイスDに格納されている場合、下記(2)式により算出可能である。パラメータ21cは、BSSD、BHDD、BTDのそれぞれの場合におけるTI/O(i)を含んでもよい。
【0115】
TI/O(i)=Si/BD (2)
【0116】
パラメータ21cのうち、N、di、Siの値については、例えば、判定部25による処理に先立って(例えば記憶装置30にデータセットが格納されたタイミング以降に)設定されてもよい。また、パラメータ21cのうち、BD、TI/O(i)の値については、例えば、判定部25による処理に先立って(例えばストレージ制御装置20が起動した後等に)設定されてもよい。
【0117】
ここで、
図3を参照して説明したように、一実施形態で想定するワークロードの場合、ストレージ制御装置20がSSD3から“data2”を早いタイミングで読み出したとしても、処理装置6からの“data2”の読出要求の待ち合わせが発生することがある。一方で、ストレージ制御装置20が“data2”を低速なHDD4やTD5に配置したことにより、“data2”の読み出しが完了する前に、処理装置6による“data1”に対する処理が完了し、処理装置6において“data2”の待ち合わせが発生することがある。
【0118】
そこで、判定部25は、計測部24により計測された処理時間TP(i)と、パラメータ21cの値と、に基づいて、処理装置6が当該WFに係るデータセットにおけるi番目のデータにアクセスする時刻を推定する。そして、判定部25は、推定した時刻と、アクセス部23が記憶装置30からデータdiの読み出しを完了する時刻との関係から、データdiの適切な配置先を決定するのである。
【0119】
このために、判定部25は、処理時間TP(i)と、パラメータ21cのうちのN、di、Si、BD、TI/O(i)の値と、に基づき、以下のように、tS(i)、tD(i)、及びtF(i)を算出してよい。なお、1番目のデータd1については、tS(1)=0と定義する。
【0120】
なお、処理時間TP(i)は、WFの実行中に計測部24により計測された実測値であるのに対し、判定部25が算出する、以下のtS(i)、tD(i)、及びtF(i)は、処理時間TP(i)を用いて算出した算出値である。
【0121】
例えば、tS(i)、tD(i)、及びtF(i)の算出には、後述するように、tD(i-1)、tF(i-1)等の、1つ前の算出値が用いられる。このように、tS(i)、tD(i)、及びtF(i)の算出値は、過去の算出結果を利用して推定される推定値(シミュレート値)と捉えられてよい。このため、tS(i)、tD(i)、及びtF(i)は、それぞれ、データdiの読み出しの推定開始時刻、データdiの読出要求の推定受信時刻tD(i)、及びデータdiの読み出しの推定完了時刻tF(i)と捉えられてよい。
【0122】
一実施形態では、サブセット内のデータが順番に読み出されると仮定するため、tS(i)について、下記式(3)の関係が成立する。
【0123】
tS(i)=tF(i-1) (但し、i≧2) (3)
【0124】
また、判定部25は、上記式(1)を変形した下記式(4)によりtD(i)を算出してよい。
【0125】
tD(i)=max(tD(i-1),tF(i-1))+TP(i-1) (4)
【0126】
さらに、判定部25は、下記式(5)によりtF(i)を算出してよい。
【0127】
tF(i)=tS(i)+TI/O(i) (5)
【0128】
ここで、上記式(4)のmax演算子は、tD(i-1)及びtF(i-1)のうちの値の大きい方を選択する演算子である。以下、上記式(4)のmax演算子について説明する。
【0129】
(t
D(i-1)>t
F(i-1)の場合)
t
D(i-1)>t
F(i-1)は、
図10に示すように、処理装置6がデータd
i-2に対する処理を行なっている間に、アクセス部23によるデータd
i-1の読み出しが完了したことを意味する。
【0130】
この場合、処理装置6がストレージ制御装置20にデータd
iの読出要求を送信するタイミングは、以下の(a)~(c)を全て完了したタイミングとなる(
図10参照)。
【0131】
(a)処理装置6が、データdi-2に対する処理を完了する。
(b)処理装置6が、データdi-1の読出要求をストレージ制御装置20に送信する。
(c)処理装置6が、データdi-1に対する処理を完了する。
【0132】
従って、t
D(i-1)>t
F(i-1)の場合、max(t
D(i-1),t
F(i-1))=t
D(i-1)となる(
図10参照)。
【0133】
(t
D(i-1)<t
F(i-1)の場合)
t
D(i-1)<t
F(i-1)は、
図11に示すように、アクセス部23がデータd
i-1の読み出しを完了する前に、処理装置6が、データd
i-2に対する処理を完了し、ストレージ制御装置20にデータd
i-1の読出要求を送信したことを意味する。
【0134】
この場合、処理装置6がストレージ制御装置20にデータd
iの読出要求を送信するタイミングは、以下の(d)及び(e)を全て完了したタイミングとなる(
図11参照)。
【0135】
(d)アクセス部23が、サーバがデータdi-1の読み出しを完了して、当該データdi-1を処理装置6に送信する。
(e)処理装置6が、データdi-1に対する処理を完了する。
【0136】
従って、t
D(i-1)<t
F(i-1)の場合、max(t
D(i-1),t
F(i-1))=t
F(i-1)となる(
図11参照)。
【0137】
なお、判定部25は、算出したtS(i)、tD(i)、tF(i)を、対応するWFのパラメータ21cに設定してよい。
【0138】
次に、上記式(3)~(5)に基づく、判定部25によるi番目のデータの配置先の決定処理の一例を説明する。
【0139】
(i=1の場合)
判定部25は、データd1を最もアクセス性能の高いSSD3に配置すると判定する。これは、アクセス部23が、WFの処理対象のデータセットにおける最初のデータを読み出す間は、処理装置6を待たせることになるからである。
【0140】
なお、判定部25は、上記式(3)~(5)に対してそれぞれi=1を代入した下記式(6)~(8)を算出し、tS(1)、tD(1)、tF(1)を求めてよい。
【0141】
tS(1)=0 (6)
tD(1)=max(tD(0),tF(0))+TP(0)=0 (7)
tF(1)=tS(1)+TI/O(1)=S1/BSSD (8)
【0142】
上記式(6)において、tS(1)は、上記で定義した通り“0”となる。また、上記式(7)において、tD(0)、tF(0)、TP(0)はいずれも存在しないため“0”となり、tD(1)は“0”となる。なお、判定部25は、“0”であることが分かっているtS(1)及びtD(1)の算出を省略してもよい。
【0143】
また、上記式(8)において、tS(1)は、上記式(6)から“0”となるため、tF(1)は、アクセス部23がSSD3からデータd1を読み出すのにかかる時間であるTI/O(1)と一致する。
【0144】
(i=2の場合)
判定部25は、上記式(3)~(5)のそれぞれに対して、i=2及びパラメータ21cの値を代入した下記式(9)~(11)を算出する。例えば、判定部25は、下記式(11)の算出において、TI/O(2)(=S2/BD)のBDとして、BSSD、BHDD、BTDのそれぞれを用いた場合のtF(2)を算出してよい。
【0145】
tS(2)=tF(1) (9)
tD(2)=max(tD(1),tF(1))+TP(1)
=tS(2)+TP(1) (10)
tF(2)=tS(2)+TI/O(2) (11)
【0146】
上記式(10)において、tF(1)は、上記式(9)からtS(2)となる一方、tD(1)は、最初のデータd1の読出要求の受信時刻であり、tS(2)よりも前となるから、max(tD(1),tF(1))は、tS(2)となる。
【0147】
判定部25は、上記式(10)及び(11)から、tF(2)≦tD(2)を満たすデバイスDが存在するか否かを判定し、判定結果に応じて、データd2の配置先の記憶装置30を以下のように決定する。なお、判定部25は、BSSD、BHDD、BTDのそれぞれを用いた場合のtF(2)を用いて、判定を行なってよい。
【0148】
(t
F(2)≦t
D(2)を満たすデバイスDが存在する場合)
図12に例示するように、上記式(10)及び(11)の算出結果がt
F(2)≦t
D(2)を満たす場合、アクセス部23によるデータd
2の読出完了時点で、処理装置6における1つ前のデータd
1に対する処理が完了していない。
【0149】
この場合、データd2を格納する記憶装置30(例えばSSD3)の性能が過多である(早い)ことを意味する。オーバスペックな記憶装置30がデータd2を格納することで、当該記憶装置30の容量が圧迫されるため、当該記憶装置30に移動させることで性能向上効果を見込めるデータセット又はデータを、十分に当該記憶装置30に配置することができなくなる。従って、階層ストレージ装置2にアクセスする全処理装置6の平均性能が低下する場合がある。
【0150】
そこで、判定部25は、tF(2)≦tD(2)を満たすデバイスDのうち、tD(2)-tF(2)が最小となるデバイスDをデータd2の配置先の記憶装置30として選択する。
【0151】
これにより、
図12に例示する場合よりも、アクセス部23によるデータd
2の読出時間がかかる(アクセス性能がより低い)記憶装置30(例えばHDD4やTD5)がデータd
2の配置先の記憶装置30として選択される。従って、データd
2の読出完了時刻であるt
F(2)を、処理装置6からのデータd
2の読出要求の受信時刻t
D(2)(換言すれば、処理装置6によるデータd
1の処理完了時刻)に近付けることができ、データd
2を適切な記憶装置30に配置できる。
【0152】
(t
F(2)≦t
D(2)を満たすデバイスDが存在しない場合)
図13に例示するように、上記式(10)及び(11)の算出結果がt
F(2)≦t
D(2)を満たさない場合、処理装置6からのデータd
2の読出要求の受信時点で、アクセス部23によるデータd
2の読み出しが完了していない。
【0153】
この場合、データd2を格納する記憶装置30(例えばHDD4)の性能が不足しており、処理装置6によるデータd2に対する処理の実行を遅延させることを意味する。従って、記憶装置30がボトルネックとなり、当該処理装置6の性能(スループット)が低下することになる。
【0154】
そこで、判定部25は、データd2の読出時間を短縮するために、アクセス性能の高い記憶装置30(例えば最もアクセス性能の高いSSD3)をデータd2の配置先の記憶装置30として選択する。
【0155】
これにより、
図12に例示する場合よりも、アクセス部23によるデータd
2の読出時間が短い(アクセス性能がより高い)記憶装置30(例えばSSD3)がデータd
2の配置先の記憶装置30として選択される。従って、データd
2の読出完了時刻であるt
F(2)を、処理装置6からのデータd
2の読出要求の受信時刻t
D(2)に近付けることができ、データd
2を適切な記憶装置30に配置できる。
【0156】
(i≧3の場合)
判定部25は、上記式(3)~(5)のそれぞれに対して、i(但し、3≦i≦N)及びパラメータ21cの値を代入することで、tS(i)、tD(i)、tF(i)を算出してする。
【0157】
なお、判定部25による、tS(i)、tD(i)、tF(i)の算出処理やデータdiの再配置先の記憶装置30の選択処理は、i=2の場合と同様である。
【0158】
例えば、判定部25は、算出したtD(i)及びtF(i)について、tF(i)≦tD(i)を満たすデバイスDがあるか否かを判定し、判定結果に応じて、データdiの配置先の記憶装置30を決定してよい。なお、判定部25は、i≧3の場合においても、BSSD、BHDD、BTDのそれぞれを用いた場合のtF(i)を用いて、判定を行なってよい。
【0159】
tF(i)≦tD(i)を満たすデバイスDが存在する場合、判定部25は、tF(i)≦tD(i)を満たすデバイスDのうち、tD(i)-tF(i)が最小となるデバイスDをデータdiの配置先の記憶装置30として選択する。
【0160】
一方、tF(i)≦tD(i)を満たすデバイスDが存在しない場合、判定部25は、データdiの読出時間を短縮するために、アクセス性能の高い記憶装置30(例えば最もアクセス性能の高いSSD3)をデータdiの配置先の記憶装置30として選択する。
【0161】
以上のように、判定部25は、i番目のデータ(i=1,2,・・・,N)を配置するデバイスDを、次の手順で決定してよい。
【0162】
判定部25は、複数の記憶装置30の各々の読出性能に基づいて、複数の記憶装置30の各々から第1のデータを読み出す場合のそれぞれの読出完了時刻tF(i)を推定する。
【0163】
判定部25は、計測部24が測定した処理時間TP(i-1)に基づいて、受付部22が第1のデータに対する読出要求を受信する場合の推定受信時刻tD(i)を推定する。
【0164】
判定部25は、推定した複数の読出完了時刻tF(i)と、推定した推定受信時刻tD(i)とに基づいて、第1のデータを記憶させる記憶装置30を決定する。
【0165】
例えば、推定受信時刻tD(i)と、読出完了時刻tF(i)とは、下記式(12)及び下記式(13)により推定されてよい。
【0166】
tD(i)
=max(tD(i-1),tF(i-1))+TP(i-1) (12)
但し、tD(0)=tF(0)=TP(0)=tI/O(0)=0
tF(i)=tF(i-1)+TI/O(i) (13)
【0167】
例えば、上記式(12)及び上記式(13)としたとき、判定部25は、tF(i)≦tD(i)を満たすデバイスDが有るか否かを判定する。換言すれば、判定部25は、複数の読出完了時刻tF(i)において、推定受信時刻tD(i)以前である1以上の読出完了時刻tF(i)が存在するか否かを判定する。
【0168】
そして、判定部25は、tF(i)≦tD(i)を満たすデバイスDが有る場合、当該デバイスDのうち、tD(i)-tF(i)が最小となるデバイスDをデータdiの配置先として選択する。換言すれば、判定部25は、1以上の読出完了時刻tF(i)が存在する場合、1以上の読出完了時刻tF(i)のうちの、推定受信時刻tD(i)との時刻差が最小である読出完了時刻tF(i)に対応する記憶装置30を、第1のデータを記憶させる記憶装置30に決定する。
【0169】
一方、判定部25は、tF(i)≦tD(i)を満たすデバイスDがなければ、複数の記憶装置30のうちの読出性能の高い順に選択される記憶装置30、例えば、最もアクセス性能の高いSSD3をデータdiの配置先として選択する。
【0170】
なお、上記式(1)では、処理時間TP(i)を算出する式を示したが、上記式(12)のように、処理時間TP(i-1)を算出するためには、上記式(1)を下記式(14)に置き換えればよい。
【0171】
処理時間TP(i-1)
= (処理装置6からデータdiに対する読出要求を受信した時刻)
- (処理装置6にデータdi-1を送信した時刻) (14)
【0172】
このように、判定部25は、複数の記憶階層の各々の読出性能BDと、計測部24が測定した処理時間TP(i-1)とに基づいて、複数の記憶階層の中から、第1のデータを記憶させる記憶階層を決定する決定部の一例である。
【0173】
以上のように、一実施形態に係るストレージ制御装置20によれば、処理装置6で実行されるアプリケーションから与えられたWFと、記憶装置30の性能情報とに基づき、処理装置6においてデータに対するアクセスが行なわれる開始時刻を推定できる。そして、ストレージ制御装置20により、推定結果に基づいて、当該データを最適な性能の記憶装置30に配置することができる。
【0174】
これにより、処理装置6によるデータに対する処理性能に適合した(マッチした)性能の記憶装置30に、データを配置することができる。従って、処理装置6におけるデータに対する処理の待ち時間の低減、及び、ストレージ制御装置20における性能の高い記憶装置30の記憶リソースの有効活用、を図ることができる。
【0175】
また、他の処理装置6におけるWF実行の際に、性能の高い記憶装置30の記憶リソースを利用できる可能性が向上するため、階層ストレージ装置2にアクセスする全処理装置6の平均性能を向上させることができる。
【0176】
このように、一実施形態に係るストレージ制御装置20は、期限(上限時間)を意識した(deadline-aware)階層ストレージシステム1にアクセスする複数の処理装置6に対して、安定したパフォーマンスで読出データを送信することができる。
【0177】
〔1-6〕動作例
次に、
図14及び
図15を参照して、上述の如く構成された一実施形態に係るストレージ制御装置20ストレージ制御装置20の動作例を説明する。
【0178】
まず、
図14を参照して、処理装置6によりWFが複数回に亘って実行される場合を説明する。
図14は、一実施形態に係るストレージ制御装置20の動作例を説明するフローチャートである。
【0179】
図14に示すように、ストレージ制御装置20は、記憶装置30のいずれかの階層にデータセットを格納する(ステップS1)。例えば、ストレージ制御装置20は、データセットを処理装置6から受信してもよい。
【0180】
ストレージ制御装置20の受付部22は、処理装置6からのWF実行要求の受信を待ち受ける(ステップS2、ステップS2でNo)。なお、WF実行要求は、WFの対象のデータセットのプリフェッチ要求と、当該データセットに含まれる最初のデータの読出要求と、の少なくとも一方を含んでよく、一実施形態では、双方を含むものとする。
【0181】
WF実行要求を受信すると(ステップS2でYes)、受付部22は、WF実行要求をアクセス部23に通知する。
【0182】
アクセス部23は、WF実行要求の受信に応じて、階層テーブル21dに基づいて、WF実行に伴う記憶装置30へのアクセスを行なう。例えば、アクセス部23は、記憶装置30からメモリ部21への読出データ21aのプリフェッチを行なうとともに、読出要求の受信に応じて、メモリ部21から読出データ21aを読み出して処理装置6に送信する。また、計測部24は、アクセス部23による記憶装置30へのアクセスに係る時刻を計測することで、処理装置6によるデータに対する処理時間TP(i)を計測(推定)する(ステップS3)。
【0183】
判定部25は、計測値21bと、パラメータ21cとに基づいて、再配置先算出処理を実行し(ステップS4)、各データの移動先として選択した記憶装置30の情報を移動制御部26に通知する。例えば、判定部25は、WF実行が完了したときに、ステップS4の処理を実行してよい。
【0184】
移動制御部26は、判定部25からの通知に応じて、データごとの再配置処理を実行する(ステップS5)。再配置処理には、階層テーブル21dの更新処理が含まれてよい。
【0185】
受付部22は、処理装置6又は他のコンピュータから、データセットの削除要求を受信したか否かを判定する(ステップS6)。なお、データセットの削除要求は、例えば、処理装置6又は他のコンピュータが、データセットに対するWF実行を終了する(繰り返しのWF実行を終了する)と判断した場合に送信されてよい。
【0186】
データセットの削除要求を受信しない場合(ステップS6でNo)、処理がステップS2に移行し、受付部22は、2回目以降のWF実行要求の受信を待ち合わせる。
【0187】
一方、データセットの削除要求を受信した場合(ステップS6でYes)、ストレージ制御装置20は、ステップS1で記憶装置30に格納した(或いはステップS5で他の記憶装置30に再配置した)データセットを削除し(ステップS7),処理が終了する。
【0188】
次に、
図15を参照して、
図14のステップS4に示す再配置先算出処理の動作例を説明する。なお、パラメータ21cのうち、N、d
i、S
iの値については、例えば、
図14のステップS4による処理に先立って、データセットの情報に基づき設定されてよい。また、パラメータ21cのうち、B
D、T
I/O(i)の値については、例えば、ストレージ制御装置20が起動した後等に設定されてもよい。
【0189】
判定部25は、変数iに“1”を設定し(ステップS11)、i>Nか否かを判定する(ステップS12)。
【0190】
i>Nの場合(ステップS12でYes)、処理が終了する。一方、i>Nではない場合(ステップS12でNo)、判定部25は、下記式(15)及び(16)を算出する(ステップS13)。
【0191】
tD(i)
=max(tD(i-1),tF(i-1))+TP(i-1) (15)
tF(i)=tF(i-1)+TI/O(i) (16)
【0192】
次いで、判定部25は、tF(i)≦tD(i)を満たすデバイスDが存在するか否かを判定する(ステップS14)。
【0193】
tF(i)≦tD(i)を満たすデバイスDが存在する場合(ステップS14でYes)、判定部25は、tD(i)-tF(i)が最小となるデバイスDをデータdiの配置先として選択し(ステップS15)、処理がステップS17に移行する。
【0194】
一方、tF(i)≦tD(i)を満たすデバイスDが存在しない場合(ステップS14でNo)、判定部25は、SSD3をデータdiの配置先として選択し(ステップS16)、処理がステップS17に移行する。
【0195】
ステップS17では、判定部25は、変数iに“1”を加算し、処理がステップS12に移行する。
【0196】
〔2〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
【0197】
例えば、
図6に示すストレージ制御装置20の各機能ブロックは、任意の組み合わせで併合してもよく、それぞれ分割してもよい。ストレージ制御装置20の機能ブロックとしては、受付部22、アクセス部23、計測部24、判定部25、及び、移動制御部26が挙げられる。
【0198】
また、上述のように、処理装置6によるデータに対する処理時間がWF実行の度に変わる可能性を考慮し、処理時間Tp(i)の計測、再配置先の記憶装置30の判定、及び、再配置処理の実行を、WFが実行される度に行なわれてよい。
【0199】
例えば、判定部25は、繰り返し実行されるWFごとに計測された計測値21bをメモリ部21に保持(待避)してもよい。そして、判定部25は、処理時間Tp(i)が、過去のWFにおいて計測された処理時間Tp(i)と変わらない、又は、変化が所定の閾値(例えば数%程度)以下の場合、判定を中止してもよい。判定部25による判定の中止は、データ単位であってもよいし、WF単位で、当該WFに係る全てのデータの判定を中止してもよい。また、判定部25による判定の中止に伴い、移動制御部26による移動制御も中止してよい。
【0200】
さらに、一実施形態では、計測部24が、処理装置6によるデータdiごとの処理時間TP(i)を計測し、判定部25が、各処理時間TP(i)を対応するデータdiの格納先の記憶装置30の判定に用いるものとしたが、これに限定されるものではない。例えば、計測部24は、データセットに含まれるデータd1~dNに共通の処理時間TPを、例えば処理時間TP(1)~TP(N)の平均又は加重平均を取ることにより算出してもよい。この場合、判定部25は、共通の処理時間TPを、データd1~dNの各々の格納先の記憶装置30の判定に用いてよい。
【0201】
また、一実施形態では、階層ストレージシステム1を例に挙げて説明したが、これに限定されるものではなく、複数の記憶階層を備える種々の情報処理システムに対しても、一実施形態に係る手法を適用することで、一実施形態と同様の効果を奏することができる。
【0202】
〔3〕付記
以上の一実施形態に関し、さらに以下の付記を開示する。
【0203】
(付記1)
データセットに含まれる複数のデータの各々に対して所定の処理を行なう処理装置から、前記複数のデータのうちの第1のデータに対する読出要求を受信する受信部と、
互いに読出性能の異なる複数の記憶階層のうちの前記第1のデータを記憶する第1の記憶階層から、前記第1のデータを読み出し、読み出した前記第1のデータを、前記読出要求に応じて前記処理装置へ送信する送信部と、
前記処理装置による前記所定の処理の処理時間を測定する測定部と、
前記複数の記憶階層の各々の読出性能と、前記測定部が測定した前記処理時間とに基づいて、前記複数の記憶階層の中から、前記第1のデータを記憶させる記憶階層を決定する決定部と、
前記第1のデータを、前記第1の記憶階層から、決定した前記記憶階層へ移動する移動部と、を備える、
制御装置。
【0204】
(付記2)
前記複数のデータは、N個のデータであり、
前記第1のデータは、第i(iは1以上且つN以下)のデータであり、
前記測定部は、前記受信部が前記第iのデータに対する読出要求を受信した受信時刻と、前記送信部が前記複数のデータのうちの第(i-1)のデータを前記処理装置に送信した送信時刻と、に基づいて、前記処理装置による前記第iのデータに対する前記所定の処理の前記処理時間を算出する、
付記1に記載の制御装置。
【0205】
(付記3)
前記決定部による、前記第1のデータを記憶させる前記記憶階層の決定は、
前記複数の記憶階層の各々の読出性能に基づいて、前記複数の記憶階層の各々から前記第1のデータを読み出す場合のそれぞれの読出完了時刻を推定し、
前記測定部が測定した前記処理時間に基づいて、前記受信部が前記第1のデータに対する読出要求を受信する場合の推定受信時刻を推定し、
推定した複数の前記読出完了時刻と、推定した前記推定受信時刻とに基づいて、前記第1のデータを記憶させる前記記憶階層を決定する、
付記1又は付記2に記載の制御装置。
【0206】
(付記4)
前記決定部は、
前記複数の読出完了時刻において、前記推定受信時刻以前である1以上の読出完了時刻が存在するか否かを判定し、
前記1以上の読出完了時刻が存在する場合、前記1以上の読出完了時刻のうちの、前記推定受信時刻との時刻差が最小である読出完了時刻に対応する記憶階層を、前記第1のデータを記憶させる前記記憶階層に決定する、
付記3に記載の制御装置。
【0207】
(付記5)
前記決定部は、前記1以上の読出完了時刻が存在しない場合、前記複数の記憶階層のうちの読出性能の高い順に選択される記憶階層を、前記第1のデータを記憶させる前記記憶階層に決定する、
付記4に記載の制御装置。
【0208】
(付記6)
前記処理装置は、前記複数のデータの各々に対して前記所定の処理を行なう、一連の処理を1単位として、前記一連の処理を複数回実行し、
前記決定部は、前記一連の処理の完了後であって、次の前記一連の処理が実行される前に、前記第1のデータを記憶させる前記記憶階層を決定する、
付記1~5のいずれか1項に記載の制御装置。
【0209】
(付記7)
前記決定部は、前記複数のデータの各々を記憶させる記憶階層をそれぞれ決定し、
前記移動部は、前記複数のデータの各々を、決定した前記記憶階層へそれぞれ移動する、
付記1~6のいずれか1項に記載の制御装置。
【0210】
(付記8)
コンピュータに、
データセットに含まれる複数のデータの各々に対して所定の処理を行なう処理装置から、前記複数のデータのうちの第1のデータに対する読出要求を受信し、
互いに読出性能の異なる複数の記憶階層のうちの前記第1のデータを記憶する第1の記憶階層から、前記第1のデータを読み出し、
読み出した前記第1のデータを、前記読出要求に応じて前記処理装置へ送信し、
前記処理装置による前記所定の処理の処理時間を測定し、
前記複数の記憶階層の各々の読出性能と、測定した前記処理時間とに基づいて、前記複数の記憶階層の中から、前記第1のデータを記憶させる記憶階層を決定し、
前記第1のデータを、前記第1の記憶階層から、決定した前記記憶階層へ移動する、
処理を実行させる、制御プログラム。
【0211】
(付記9)
前記複数のデータは、N個のデータであり、
前記第1のデータは、第i(iは1以上且つN以下)のデータであり、
前記測定は、前記第iのデータに対する読出要求を受信した受信時刻と、前記複数のデータのうちの第(i-1)のデータを前記処理装置に送信した送信時刻と、に基づいて、前記処理装置による前記第iのデータに対する前記所定の処理の前記処理時間を算出する、
付記8に記載の制御プログラム。
【0212】
(付記10)
前記第1のデータを記憶させる前記記憶階層の決定は、
前記複数の記憶階層の各々の読出性能に基づいて、前記複数の記憶階層の各々から前記第1のデータを読み出す場合のそれぞれの読出完了時刻を推定し、
測定した前記処理時間に基づいて、前記第1のデータに対する読出要求を受信する場合の推定受信時刻を推定し、
推定した複数の前記読出完了時刻と、推定した前記推定受信時刻とに基づいて、前記第1のデータを記憶させる前記記憶階層を決定する、
付記8又は付記9に記載の制御プログラム。
【0213】
(付記11)
前記第1のデータを記憶させる前記記憶階層の決定は、
前記複数の読出完了時刻において、前記推定受信時刻以前である1以上の読出完了時刻が存在するか否かを判定し、
前記1以上の読出完了時刻が存在する場合、前記1以上の読出完了時刻のうちの、前記推定受信時刻との時刻差が最小である読出完了時刻に対応する記憶階層を、前記第1のデータを記憶させる前記記憶階層に決定する、
付記10に記載の制御プログラム。
【0214】
(付記12)
前記第1のデータを記憶させる前記記憶階層の決定は、前記1以上の読出完了時刻が存在しない場合、前記複数の記憶階層のうちの読出性能の高い順に選択される記憶階層を、前記第1のデータを記憶させる前記記憶階層に決定する、
付記11に記載の制御プログラム。
【0215】
(付記13)
前記処理装置は、前記複数のデータの各々に対して前記所定の処理を行なう、一連の処理を1単位として、前記一連の処理を複数回実行し、
前記第1のデータを記憶させる前記記憶階層の決定は、前記一連の処理の完了後であって、次の前記一連の処理が実行される前に、前記第1のデータを記憶させる前記記憶階層を決定する、
付記8~12のいずれか1項に記載の制御プログラム。
【0216】
(付記14)
前記コンピュータに、
前記複数のデータの各々を記憶させる記憶階層をそれぞれ決定し、
前記複数のデータの各々を、決定した前記記憶階層へそれぞれ移動する、
処理を実行させる、付記8~13のいずれか1項に記載の制御プログラム。
【符号の説明】
【0217】
1 階層ストレージシステム
10 コンピュータ
2 階層ストレージ装置
20 ストレージ制御装置
21 メモリ部
21a 読出データ
21b 計測値
21c パラメータ
21d 階層テーブル
22 受付部
23 アクセス部
24 計測部
25 判定部
26 移動制御部
3 SSD
30 記憶装置
4 HDD
5 TD
6 処理装置
61 アプリケーション
7 ネットワーク