(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-07
(45)【発行日】2023-08-16
(54)【発明の名称】情報処理装置,ストレージシステム及びスケジューリングプログラム
(51)【国際特許分類】
G06F 9/48 20060101AFI20230808BHJP
G06F 3/06 20060101ALI20230808BHJP
G06F 13/10 20060101ALI20230808BHJP
【FI】
G06F9/48 300F
G06F3/06 302
G06F13/10 340B
(21)【出願番号】P 2019139673
(22)【出願日】2019-07-30
【審査請求日】2022-04-07
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【氏名又は名称】横田 功
(72)【発明者】
【氏名】飯澤 健
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2006-134203(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
G06F 3/06
G06F 13/10
(57)【特許請求の範囲】
【請求項1】
一連のジョブに関連する複数のタスクを処理する複数のスレッドと、
前記複数のスレッドに対するスケジューリングにおける次のタスクを決定する際に、前記次のタスクが予定時刻までに完了するかを、前記複数のスレッドのうちの割当先のスレッドに問い合わせ、前記複数のタスクのうち、当該割当先のスレッドにおいて前記予定時刻までに完了可能なタスクを前記次のタスクとして優先的に割り当てる割当部と、
を備え
、
前記割当部は、
前記次のタスクの割り当て前に、当該次のタスクについてのプリフェッチを、前記次のタスクに関連するデータが記録されている記憶装置に対して行ない、
前記次のタスクについての前記プリフェッチが前記予定時刻までに完了する場合に、当該次のタスクの割り当てを行なう、
情報処理装置。
【請求項2】
前記割当部は、前記次のタスクに関連するデータが記録されている記憶装置における性能を示す情報に基づき、当該次のタスクの割り当てを行なう、
請求項1に記載の情報処理装置
。
【請求項3】
一連のジョブに関連する複数のタスクに関連するデータが記録されている記憶装置と、
前記複数のタスクを処理する複数のスレッドと、
前記複数のスレッドに対するスケジューリングにおける次のタスクを決定する際に、前記次のタスクについての前記記憶装置に対するプリフェッチが予定時刻までに完了するかを、前記複数のスレッドのうちの割当先のスレッドに問い合わせ、前記複数のタスクのうち、当該割当先のスレッドにおいて前記予定時刻までに完了可能なタスクを前記次のタスクとして優先的に割り当てる割当部と、
を備え
、
前記割当部は、
前記次のタスクの割り当て前に、当該次のタスクについてのプリフェッチを、前記次のタスクに関連するデータが記録されている記憶装置に対して行ない、
前記次のタスクについての前記プリフェッチが前記予定時刻までに完了する場合に、当該次のタスクの割り当てを行なう、
ストレージシステム。
【請求項4】
コンピュータに、
一連のジョブに関連する複数のタスクを処理し、
前記複数のタスクを処理する複数のスレッドに対するスケジューリングにおける次のタスクを決定する際に、前記次のタスクが予定時刻までに完了するかを、前記複数のスレッドのうちの割当先のスレッドに問い合わせ、前記複数のタスクのうち、当該割当先のスレッドにおいて前記予定時刻までに完了可能なタスクを前記次のタスクとして優先的に割り当て
、
前記次のタスクの割り当て前に、当該次のタスクについてのプリフェッチを、前記次のタスクに関連するデータが記録されている記憶装置に対して行ない、
前記次のタスクについての前記プリフェッチが前記予定時刻までに完了する場合に、当該次のタスクの割り当てを行なう、
処理を実行させる、スケジューリングプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置,ストレージシステム及びスケジューリングプログラムに関する。
【背景技術】
【0002】
ストレージシステムにおいて、Object Storage Device(OSD)のデータにアクセスする際には、プリフェッチのI/O処理に関するタスクスケジューリングが実施される。クライアントによりジョブが投入されると、ジョブを実行するためのCentral Processing Unit(CPU)やDynamic Random Access Memory(DRAM)のリソースであるExecuterがジョブに割り当てられる。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2001-344153号公報
【文献】特開平9-198249号公報
【文献】国際公開第2016/001959号
【文献】特開2000-187638号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
DRAMの記憶領域内に設定されるパーティション毎にOSDの負荷が異なるため、プリフェッチにかかる時間もパーティション毎に異なる。例えば、プリフェッチ要求の発行の際に、対象のOSDが既に他のプリフェッチ要求を実行していれば、後から発行されたプリフェッチ要求は待たされるためプリフェッチ完了までの時間は長くなる。
【0005】
これにより、タスク実行開始までにプリフェッチが完了しないタスクが発生し、タスクがパーティションの処理を開始するまでにI/O待ちが発生することになり、ジョブ実行時間が延びるおそれがある。
【0006】
1つの側面では、ストレージシステムにおけるジョブの実行時間を短縮させる。
【課題を解決するための手段】
【0007】
1つの側面では、一連のジョブに関連する複数のタスクを処理する複数のスレッドと、前記複数のスレッドに対するスケジューリングにおける次のタスクを決定する際に、前記次のタスクが予定時刻までに完了するかを、前記複数のスレッドのうちの割当先のスレッドに問い合わせ、前記複数のタスクのうち、当該割当先のスレッドにおいて前記予定時刻までに完了可能なタスクを前記次のタスクとして優先的に割り当てる割当部と、を備え、前記割当部は、前記次のタスクの割り当て前に、当該次のタスクについてのプリフェッチを、前記次のタスクに関連するデータが記録されている記憶装置に対して行ない、前記次のタスクについての前記プリフェッチが前記予定時刻までに完了する場合に、当該次のタスクの割り当てを行なう。
【発明の効果】
【0008】
1つの側面では、ストレージシステムにおけるジョブの実行時間を短縮させることができる。
【図面の簡単な説明】
【0009】
【
図1】実施形態の一例におけるストレージシステムの構成例を模式的に示すブロック図である。
【
図2】
図1に示した情報処理装置のハードウェア構成例を模式的に示すブロック図である。
【
図3】
図1に示したOSDのハードウェア構成例を模式的に示すブロック図である。
【
図4】関連例におけるタスク実行及びプリフェッチの時系列の第1の例を示すグラフである。
【
図5】関連例におけるタスク実行及びプリフェッチの時系列の第2の例を示すグラフである。
【
図6】
図1に示したOSDにおける性能特性情報を例示するテーブルである。
【
図7】
図1に示したOSDにおけるdeadline情報を例示するテーブルである。
【
図8】
図1に示したOSDにおけるI/Oスケジュールを例示するテーブルである。
【
図9】
図1に示したストレージシステムにおけるスケジューリング処理の第1の例を示すグラフである。
【
図10】
図1に示したストレージシステムにおけるスケジューリング処理の第2の例を示すグラフである。
【
図11】
図1に示したストレージシステムにおけるスケジューリング処理を説明するフローチャートである。
【
図12】
図1に示したストレージシステムにおけるスケジューリング処理による効果を説明するグラフである。
【発明を実施するための形態】
【0010】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【0011】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0012】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【0013】
〔A〕実施形態の一例
〔A-1〕システム構成例
図1は、実施形態の一例におけるストレージシステム100の構成例を模式的に示すブロック図である。
【0014】
ストレージシステム100は、計算クラスタ10,ストレージクラスタ20及びクライアント群30を備える。計算クラスタ10とストレージクラスタ20とクライアント群30とは、ネットワーク4を介して接続される。クライアント群30は、計算クラスタ10を介して、ストレージクラスタ20にアクセスする。
【0015】
クライアント群30は、複数(図示する例では3つ)のクライアント3を含む。各クライアント3は、計算クラスタ10に対して、ストレージクラスタ20のデータへのアクセスを要求する。
【0016】
計算クラスタ10は、複数(図示する例では6つ)の情報処理装置1を含む。各情報処理装置1は、クライアント群30からストレージクラスタ20に対するアクセスを処理する。なお、情報処理装置1の詳細については、
図2を用いて後述する。
【0017】
ストレージクラスタ20は、複数(図示する例では6つ)のObject Storage Device(OSD)2を含む。各OSD2は、Dynamic Random Access Memory(DRAM)22及びHard Disk Drive(HDD)23を備える。DRAM22には、種々の制御情報が記録される。HDD23には、クライアント群30からのアクセス対象であるデータが記憶される。なお、OSD2の詳細については、
図3を用いて後述する。
【0018】
図2は、
図1に示した情報処理装置1のハードウェア構成例を模式的に示すブロック図である。
【0019】
情報処理装置1は、タスクスケジューラ11,複数(図示する例では4つ)のコア12(「スレッド」と称されてもよい。),タスクキュー13及びDRAM14を備える。
【0020】
計算クラスタ10は、クライアント群30からジョブが投入されると、ジョブを実行するためのCPUやメモリ等のリソースであるExecutor(別言すれば、情報処理装置1)を割り当てる。
【0021】
DRAM14は、複数(図示する例では4つ)のパーティション141を有する。パーティション141は、データセットが分割されたものである。各パーティション141は、一意なオブジェクト識別子(ID)を持つオブジェクトとしてストレージクラスタ20に格納され、DRAM14にコピーされる。各タスクは、1つのパーティション141を処理する。データセットは、ジョブが処理するデータであり、ストレージクラスタ20に格納されている。
【0022】
タスクキュー13には、未実行のタスクが登録される。タスクは、ジョブを分割した並列実行可能な実行単位である。
【0023】
タスクスケジューラ11は、割当部の一例であり、CPUのコア12に対して、タスクを割り当てるコンポーネントである。また、タスクスケジューラ11は、ストレージクラスタ20に対して、タスクキュー13の中のd個のタスクが処理するパーティション141のプリフェッチ要求を発行する(符号A1参照)。
【0024】
ここで、dは、prefetching depth(別言すれば、タスクスケジューラ11が同時に発行するプリフェッチ要求の数)であり、自然数である。
図2に示すように、dは、Executorに割り当てられたコア12の数であるkと等しくてよい。
【0025】
ストレージクラスタ20では、情報処理装置1からプリフェッチ要求を受け取ると、HDD23から指定されたDRAM14のパーティション141へのデータセットのコピーが行なわれる。
【0026】
タスクスケジューラ11は、スケジューリング結果に応じて新しいタスクをコア12に割り当てる(符号A2参照)。そして、当該タスクは、処理対象のパーティション141をストレージクラスタ20から読み出してDRAM14に書き込む処理を行なう(符号A3参照)。当該パーティション141は、OSD2のDRAM22から削除される。
【0027】
別言すれば、複数のコア12は、一連のジョブに関連する複数のタスクを処理する。タスクスケジューラ11は、複数のコア12に対するスケジューリングにおける次のタスクを決定する際に、次のタスクが予定時刻までに完了するかを、複数のコア12のうちの割当先のコア12に問い合わせる。そして、タスクスケジューラ11は、複数のタスクのうち、割当先のコア12において予定時刻までに完了可能なタスクを次のタスクとして優先的に割り当てる。
【0028】
また、タスクスケジューラ11は、次のタスクの割り当て前に、次のタスクについてのプリフェッチを、次のタスクに関連するデータが記録されているOSD2に対して行なう。
【0029】
更に、タスクスケジューラ11は、次のタスクについてのプリフェッチが予定時刻までに完了する場合に、次のタスクの割り当てを行なう。
【0030】
なお、プリフェッチ以外のジョブについてのタスクの割り当てが行なわれてもよい。
【0031】
図3は、
図1に示したOSD2のハードウェア構成例を模式的に示すブロック図である。
【0032】
OSD21は、記憶装置の一例であり、CPU21,DRAM22及びHDD23を備える。
【0033】
HDD23は、複数のオブジェクトを記憶する。
【0034】
DRAM22は、性能特性情報221,deadline情報222及びInput/Output(I/O)スケジュール223を記憶する。性能特性情報221は、HDD23の性能特性を示す。deadline情報222は、reserveで指定されたオブジェクトのうち、プリフェッチ未完了のオブジェクトとそのdeadlineとの関係を示す。I/Oスケジュール223は、どのオブジェクトをどのタイミングでプリフェッチするかを一本の時系列で表わした時系列である。性能特性情報221,deadline情報222及びI/Oスケジュール223については、
図6~
図8を用いてそれぞれ後述する。
【0035】
CPU21は、例示的に、種々の制御や演算を行なう処理装置であり、DRAM22に格納されたOperating System(OS)やプログラムを実行することにより、種々の機能を実現する。
【0036】
なお、種々の機能を実現するためのプログラムは、例えばフレキシブルディスク、CD(CD-ROM、CD-R、CD-RW等)、DVD(DVD-ROM、DVD-RAM、DVD-R、DVD+R、DVD-RW、DVD+RW、HD DVD等)、ブルーレイディスク、磁気ディスク、光ディスク、光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されてよい。そして、コンピュータ(本実施形態ではCPU21)は上述した記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いてよい。また、プログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、記憶装置から通信経路を介してコンピュータに提供してもよい。
【0037】
種々の機能を実現する際には、内部記憶装置(本実施形態ではDRAM22)に格納されたプログラムがコンピュータ(本実施形態ではCPU21)によって実行されてよい。また、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【0038】
CPU21は、例示的に、OSD2全体の動作を制御する。OSD2全体の動作を制御するための装置は、CPU21に限定されず、例えば、MPUやDSP,ASIC,PLD,FPGAのいずれか1つであってもよい。また、OSD2全体の動作を制御するための装置は、CPU,MPU,DSP,ASIC,PLD及びFPGAのうちの2種類以上の組み合わせであってもよい。なお、MPUはMicro Processing Unitの略称であり、DSPはDigital Signal Processorの略称であり、ASICはApplication Specific Integrated Circuitの略称である。また、PLDはProgrammable Logic Deviceの略称であり、FPGAはField Programmable Gate Arrayの略称である。
【0039】
OSD2は、reserve及びcancelのApplication Programming Interface(API)を有する。
【0040】
reserveの入力は、オブジェクトID及びdeadlineである。reserveの出力は、OK,NG,最短完了時刻又はEAGAINである。
【0041】
reserveは、指定されたオブジェクトのプリフェッチが、指定された時刻(別言すれば、deadline)までに完了するかを回答する。完了する場合はOKが、完了しない場合はNG及び最短完了時刻(別言すれば、プリフェッチが完了を完了可能な最短の時刻)が回答される。また、あるオブジェクトに対するreserveが呼ばれてから、該当オブジェクトに対するcancelが呼ばれるまでは、このOSD2に対するreserveは全てEAGAINで失敗する。
【0042】
cancelの入力はオブジェクトIDであり、出力はない。
【0043】
cancelは、指定したオブジェクトに対するreserveの効果を取り消す。reserveの効果の取り消し後には、該当のOSD2に対するreserveが成功するようになる。
【0044】
また、プリフェッチ要求が送られる前に、先行して当該オブジェクトに対するreserveが発行される。reserveが発行されない場合には、プリフェッチは失敗する。当該オブジェクトのプリフェッチは、先行するreserveで指定したdeadlineまでに完了することが保証される。cancelと同様に、OSD2がプリフェッチ要求を受け取った時点で先行するreserveの効果は消え、当該OSD2に対するreserveが成功するようになる。
【0045】
reserve及びcancelは、例えば、OSD2のDRAM22に格納されている性能特性情報221,deadline情報222及びI/Oスケジュール223によって実現される。
【0046】
図4は、関連例におけるタスク実行及びプリフェッチの時系列の第1の例を示すグラフである。
【0047】
タスクキューの先頭からd(=k=4)個のタスク#1~#4に対して、プリフェッチ要求が発行される(符号B1参照)。同時に、それらのタスクがコアに割り当てられる(符号B2参照)。これらのタスクはストレージクラスタへパーティションを要求し、読み出しが完了次第、処理が開始される(符号B3参照)。プリフェッチが完了していないパーティションへの読み出しアクセスは、プリフェッチが完了するまで待たされる。
【0048】
あるタスクが完了すると、タスクスケジューラは次のタスクを空いたコアに割り当てる。当該タスクが処理するパーティションのプリフェッチが完了している場合に、タスクは即座にパーティションをExecutorのDRAMにコピーし、データ処理を開始することができる。
【0049】
また、タスクのデータ処理開始と同時に、タスクキューの次のタスクに対するプリフェッチが発行される。タスクの選択は、予め決められたFirst In First Out(FIFO)等のスケジューリングポリシーに従って行なわれてよい。
【0050】
図5は、関連例におけるタスク実行及びプリフェッチの時系列の第2の例を示すグラフである。
【0051】
DRAMの記憶領域内に設定されるパーティション毎にOSDの負荷が異なるため、プリフェッチにかかる時間もパーティション毎に異なる。例えば、プリフェッチ要求の発行の際に、対象のOSDが既に他のプリフェッチ要求を実行していれば、後から発行されたプリフェッチ要求は待たされるためプリフェッチ完了までの時間は長くなる。
【0052】
これにより、タスク実行開始までにプリフェッチが完了しないタスクが発生し、タスクがパーティションの処理を開始するまでにI/O待ちが発生することになり、ジョブ実行時間が延びるおそれがある。
【0053】
図5に示す例では、タスク#1及び#3のプリフェッチがコアにおける処理の実行開始までに完了しなかったため(符号C1参照)、網掛け部で示すようにタスク#1及び#3のI/O待ちが発生している(符号C2参照)。
【0054】
なお、実際にはOSDのDRAMからのパーティションの読み出し、及び、ExecutorのDRAMへの転送が発生するが、それらにかかる時間はI/O及びデータ処理にかかる時間に比べ十分に小さいと見做し、
図5には示していない。
【0055】
図6は、
図1に示したOSD2における性能特性情報221を例示するテーブルである。
【0056】
性能特性情報221は、例えば、OSD2のHDD23における、平均シーク時間,平均回転待ち時間及びデータ転送時間を含む。平均シーク時間は、該当のオブジェクトが記録されたトラックにHDD23の磁気ヘッドが移動するのに要する平均の時間である。平均回転待ち時間は、トラック内の該当のオブジェクトが記録された位置が磁気ヘッドまで回転してくるまでに要する平均の時間である。データ転送時間は、OSD2から情報処理装置1へデータを転送するのに要する時間である。
【0057】
タスクスケジューラ11は、次のタスクに関連するデータが記録されているOSD2における性能を示す性能特性情報221に基づき、次のタスクの割り当てを行なう。
【0058】
図7は、
図1に示したOSD2におけるdeadline情報222を例示するテーブルである。
【0059】
deadline情報には、Object Identifier(OID)で示される各オブジェクトに対して、deadlineが対応づけられている。
【0060】
図8は、
図1に示したOSDにおけるI/Oスケジュール223を例示するテーブルである。
【0061】
I/Oスケジュール223には、各時刻におけるイベントが登録されている。イベントは、例えば、各OIDに対するプリフェッチ開始やプリフェッチ完了である。
【0062】
図9は、
図1に示したストレージシステム100におけるスケジューリング処理の第1の例を示すグラフである。
【0063】
reserveでは、指定されたオブジェクトのサイズ及び性能特性情報221に基づき、指定されたオブジェクトのプリフェッチが指定されたdeadlineまでに完了するか否かが判定される。
【0064】
例えば、現在のI/Oスケジュール223が
図9において表わされている場合に、現在、オブジェクト#1及び#2に対するプリフェッチがスケジュールされている(符号D1及びD2参照)。
【0065】
そこに、新たなオブジェクト#3に対するreserveが発行されたとする。このreserveが成功するか否かは、オブジェクト#3のサイズによって変わる。例えば、オブジェクト#3のサイズが小さい場合には、オブジェクト#1とオブジェクト#2との間のタイミングでプリフェッチを行なうことができる(符号D3参照)。この場合には、reserveは、OKを返す。
【0066】
図10は、
図1に示したストレージシステム100におけるスケジューリング処理の第2の例を示すグラフである。
【0067】
図10に示すように、オブジェクト#3のサイズが大きい場合には、オブジェクト#2の後にオブジェクト#3のプリフェッチを行なわざるを得ず、指定されたdeadlineを満たすことができない(符号E1参照)。この場合には、reserveは、NGを及び最短完了時刻を返す。
【0068】
図9及び
図10のいずれの場合でも、OSD2はオブジェクト#3のプリフェッチを仮にスケジュールし、オブジェクト#3に対するcancel又はプリフェッチ要求を受け取るまでは、他のオブジェクトに対するreserveはEAGAINを返して失敗する。
【0069】
なお、確定済みのI/Oスケジュール223が変更される(別言すれば、オブジェクト#1のプリフェッチが早められる)ことで、新たなreserveを成功させるような最適化も可能である。
【0070】
cancelは、指定されたオブジェクトに対するプリフェッチの仮スケジュールを削除する。
【0071】
プリフェッチ要求は、指定されたオブジェクトに対するプリフェッチの仮スケジュールを確定する。
【0072】
〔A-2〕動作例
図1に示したストレージシステム100におけるスケジューリング処理を、
図11に示すフローチャート(ステップS1~S8)に従って説明する。
【0073】
タスクスケジューラ11は、タスクキュー13の全タスクについて、処理対象のパーティション141に対してreserveを発行し、deadlineには現在時刻を指定する(ステップS1)。
【0074】
タスクスケジューラ11は、最短完了時刻の早い順にタスクをk個選択してプリフェッチを発行し、残りのタスクにはcancelを発行する(ステップS2)。
【0075】
タスクスケジューラ11は、プリフェッチ済みのタスクのうち、任意の1個を空いたコア12で実行開始する(ステップS3)。
【0076】
タスクスケジューラ11は、未プリフェッチのタスクがあるかを判定する(ステップS4)。
【0077】
未プリフェッチのタスクがない場合には(ステップS4のNoルート参照)、タスクスケジューラ11は、残りのプリフェッチ済みのタスクを実行し(ステップS5)、スケジューリング処理は終了する。
【0078】
一方、未プリフェッチのタスクがある場合には(ステップS4のYesルート参照)、タスクスケジューラ11は、実行開始したタスクの完了予定時刻を算出する(ステップS6)。
【0079】
タスクスケジューラ11は、全ての未プリフェッチのタスクについて、処理対象のパーティション141に対してreserveを発行し、deadlineには実行したタスクの完了予定時刻を指定する(ステップS7)。
【0080】
タスクスケジューラ11は、OKが返ってきたタスクのうち任意の1個、又は、NGが返ってきたタスクのうち最短完了時刻が最も早いタスクに対してプリフェッチ要求を発行し、残りのタスクにはcancelを発行する(ステップS8)。そして、処理はステップS3へ戻る。
【0081】
〔A-3〕効果
図12は、
図1に示したストレージシステム100におけるスケジューリング処理による効果を説明するグラフである。
【0082】
Executorによるタスクの実行、及び、ストレージクラスタ20によるプリフェッチを時系列で表わすと、
図12に示すようになる。
【0083】
図5に示した関連例と比較して、reserveがNGを返したパーティション141を処理するタスク#1及び#3の代わりに、reserveがOKを返したパーティション141を処理するタスク#7及び#8がスケジュールされている。これにより、タスクのI/O待ち時間を短縮できる。
【0084】
上述した情報処理装置1,ストレージシステム100及びスケジューリングプログラムによれば、例えば以下の効果を奏することができる。
【0085】
複数のコア12は、一連のジョブに関連する複数のタスクを処理する。タスクスケジューラ11は、複数のコア12に対するスケジューリングにおける次のタスクを決定する際に、次のタスクが予定時刻までに完了するかを、複数のコア12のうちの割当先のコア12に問い合わせる。そして、タスクスケジューラ11は、複数のタスクのうち、割当先のコア12において予定時刻までに完了可能なタスクを次のタスクとして優先的に割り当てる。
【0086】
これにより、ストレージシステム100におけるジョブの実行時間を短縮させることができる。
【0087】
タスクスケジューラ11は、次のタスクに関連するデータが記録されているOSD2における性能を示す性能特性情報221に基づき、次のタスクの割り当てを行なう。
【0088】
これにより、OSD2へのアクセス時間を考慮したタスクの割り当てができる。
【0089】
タスクスケジューラ11は、次のタスクの割り当て前に、次のタスクについてのプリフェッチを、次のタスクに関連するデータが記録されているOSD2に対して行なう。
【0090】
これにより、プリフェッチを行なう場合におけるタスクの割り当てを効率的に行なうことができる。
【0091】
タスクスケジューラ11は、次のタスクについてのプリフェッチが予定時刻までに完了する場合に、次のタスクの割り当てを行なう。
【0092】
これにより、プリフェッチが予定時刻までに完了するかを確実に判定できる。
【0093】
〔B〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0094】
〔C〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0095】
(付記1)
一連のジョブに関連する複数のタスクを処理する複数のスレッドと、
前記複数のスレッドに対するスケジューリングにおける次のタスクを決定する際に、前記次のタスクが予定時刻までに完了するかを、前記複数のスレッドのうちの割当先のスレッドに問い合わせ、前記複数のタスクのうち、当該割当先のスレッドにおいて前記予定時刻までに完了可能なタスクを前記次のタスクとして優先的に割り当てる割当部と、
を備える、情報処理装置。
【0096】
(付記2)
前記割当部は、前記次のタスクに関連するデータが記録されている記憶装置における性能を示す情報に基づき、当該次のタスクの割り当てを行なう、
付記1に記載の情報処理装置。
【0097】
(付記3)
前記割当部は、前記次のタスクの割り当て前に、当該次のタスクについてのプリフェッチを、前記次のタスクに関連するデータが記録されている記憶装置に対して行なう、
付記1又は2に記載の情報処理装置。
【0098】
(付記4)
前記割当部は、前記次のタスクについての前記プリフェッチが前記予定時刻までに完了する場合に、当該次のタスクの割り当てを行なう、
付記3に記載の情報処理装置。
【0099】
(付記5)
一連のジョブに関連する複数のタスクに関連するデータが記録されている記憶装置と、
前記複数のタスクを処理する複数のスレッドと、
前記複数のスレッドに対するスケジューリングにおける次のタスクを決定する際に、前記次のタスクについての前記記憶装置に対するプリフェッチが予定時刻までに完了するかを、前記複数のスレッドのうちの割当先のスレッドに問い合わせ、前記複数のタスクのうち、当該割当先のスレッドにおいて前記予定時刻までに完了可能なタスクを前記次のタスクとして優先的に割り当てる割当部と、
を備える、ストレージシステム。
【0100】
(付記6)
前記割当部は、前記記憶装置における性能を示す情報に基づき、当該次のタスクの割り当てを行なう、
付記5に記載のストレージシステム。
【0101】
(付記7)
前記記憶装置は、前記性能を示す情報を記憶し、
前記割当部は、前記記憶装置から前記性能を示す情報を取得する、
付記6に記載のストレージシステム。
【0102】
(付記8)
コンピュータに、
一連のジョブに関連する複数のタスクを処理し、
前記複数のタスクを処理する複数のスレッドに対するスケジューリングにおける次のタスクを決定する際に、前記次のタスクが予定時刻までに完了するかを、前記複数のスレッドのうちの割当先のスレッドに問い合わせ、前記複数のタスクのうち、当該割当先のスレッドにおいて前記予定時刻までに完了可能なタスクを前記次のタスクとして優先的に割り当てる、
処理を実行させる、スケジューリングプログラム。
【0103】
(付記9)
前記次のタスクに関連するデータが記録されている記憶装置における性能を示す情報に基づき、当該次のタスクの割り当てを行なう、
処理を前記コンピュータに実行させる、付記8に記載のスケジューリングプログラム。
【0104】
(付記10)
前記次のタスクの割り当て前に、当該次のタスクについてのプリフェッチを、前記次のタスクに関連するデータが記録されている記憶装置に対して行なう、
処理を前記コンピュータに実行させる、付記8又は9に記載のスケジューリングプログラム。
【0105】
(付記11)
前記次のタスクについての前記プリフェッチが前記予定時刻までに完了する場合に、当該次のタスクの割り当てを行なう、
処理を前記コンピュータに実行させる、付記10に記載のスケジューリングプログラム。
【符号の説明】
【0106】
100 :ストレージシステム
10 :計算クラスタ
1 :情報処理装置
11 :タスクスケジューラ
12 :コア
13 :タスクキュー
14 :DRAM
141 :パーティション
20 :ストレージクラスタ
2 :OSD
21 :CPU
22 :DRAM
221 :性能特性情報
222 :情報
223 :I/Oスケジュール
223 :スケジュール
23 :HDD
30 :クライアント群
3 :クライアント
4 :ネットワーク