JP4951326B2 - I/o要求の処理順序を最適化するためのコンピュータプログラム - Google Patents

I/o要求の処理順序を最適化するためのコンピュータプログラム Download PDF

Info

Publication number
JP4951326B2
JP4951326B2 JP2006333932A JP2006333932A JP4951326B2 JP 4951326 B2 JP4951326 B2 JP 4951326B2 JP 2006333932 A JP2006333932 A JP 2006333932A JP 2006333932 A JP2006333932 A JP 2006333932A JP 4951326 B2 JP4951326 B2 JP 4951326B2
Authority
JP
Japan
Prior art keywords
request
requests
queue
order
performance
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.)
Expired - Fee Related
Application number
JP2006333932A
Other languages
English (en)
Other versions
JP2008146420A (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.)
Nomura Research Institute Ltd
Original Assignee
Nomura Research Institute Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nomura Research Institute Ltd filed Critical Nomura Research Institute Ltd
Priority to JP2006333932A priority Critical patent/JP4951326B2/ja
Publication of JP2008146420A publication Critical patent/JP2008146420A/ja
Application granted granted Critical
Publication of JP4951326B2 publication Critical patent/JP4951326B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、I/O要求(入出力要求)の処理順序の最適化に関する。
例えば、特許文献1には、アプリケーションからのアクセス要求を一元監視し、アプリケーションを追加した場合の予想負荷データを出力することが開示されている。また、特許文献2には、アクセスが局所的に集中する際に、高速書込みできるバッファに一時蓄積して、シーク/サーチ時間を考慮したスケジューリングを行うことが開示されている。また、特許文献3には、[登録時刻*スケジュールパラメータ]なる評価式を使用してI/O要求の発行順序を決めることが開示されている。さらに、特許文献4には、トランザクション実効効率を最適化すべくDBMSのアクセスプランを生成することが開示されている。
特開2005−149283号公報 特開平10−111762号公報 特開平10−289189号公報 特開2002−32249号公報
ところで、I/O要求発行元からI/O要求を受信して一旦キューに蓄積し該キューから出力されたI/O要求について所定の処理が完了した場合に所定の応答をI/O要求発行元に返すI/O制御システムとして、例えば、データベースを管理するソフトウェアであるDBMS(DataBase Management System)が知られている。DBMSは、アプリケーションからのI/O要求に基づいて、データベースに関する操作(以下、「データベース操作」)を行う。データベース操作とは、例えば、データの書込み(更新)、データの読み出し(参照)、データの削除等である。DBMSは、そのI/O要求について所定の処理が完了した場合に、所定の応答を、そのI/O要求の発行元であるアプリケーションに返す。所定の処理としては、例えば、後述する排他制御権の取得、データベース操作の一つとして記憶装置に対してI/Oコマンドを発行する処理がある。
DBMSは、一般に、オペレーティングシステム(OS)上で稼動し、OSから認識される複数のプロセスからなるプロセス群として構成される。以下、DBMSにおける個々のプロセスを「DBMSプロセス」と言う。複数のDBMSプロセスは、それぞれ、複数のアプリケーションプロセス(アプリケーションプログラムにおけるプロセス)と通信し、そのアプリケーションプロセスからのI/O要求を処理することになる。このため、複数のDBMSプロセスが、同一の記憶領域に対して同時にアクセスすることが起こりうる。
これを防ぐために、ミューテックスなどを応用した排他制御が用いられている。この場合、ある記憶領域に対する排他制御権(言い換えればI/O実行権)を取得できたDBMSプロセスのみが、該記憶領域に対してI/Oを実行することができる一方で、同じ記憶領域にI/Oを実行したい他のDBMSプロセスは、記憶領域に対応した排他制御権を取得できるまで、その記憶領域に対するI/Oの実行が待たされることになる。
一つのI/O要求で複数の記憶領域に対してそれぞれI/Oが発生する場合があるが、その場合は、それら複数の記憶領域の全てについて排他制御権を取得できたときに、それら複数の記憶領域の各々にI/Oを行うことが可能になる。このようなI/O要求についての処理の完了、言い換えれば、I/O要求を発行してから所定の応答をDBMSから受信するまでのアプリケーションにとっての待ち時間は、それら複数の記憶領域のうちの最も遅くに終わる処理に依存する。
通常、複数のアプリケーションプロセスからそれぞれ発行されたI/O要求は、DBMSで管理されているキュー(典型的にはFIFO(First In First Out)形式のバッファ)に一旦蓄積され、そのキューから出力された順序で処理されるが、このような環境下で、I/O要求を受け付けた順番通りに処理していくと、DBMSのスループットの劣化につながるおそれがある。
以上のような問題点は、DBMSに限らず、他種の前述したI/O制御システムにも同様に存在し得る。
従って、本発明の目的は、I/O制御システムでのI/O要求処理順序を最適化することでそのI/O制御システムのスループットを向上させることである。
I/O制御システムのキューにどんな順序でどれだけの数のI/O要求が並んでいて各I/O要求のI/O先はどの記憶領域であるかのチェックを行う。そして、そのチェックの結果を基に、複数の記憶領域のうちの、キュー内に並んでいる複数のI/O要求でI/O先とされる二以上の記憶領域の各々について、I/O先とされるI/O要求の数であるI/O数を算出し、I/O数が多い記憶領域をI/O先とするI/O要求ほど早い順番とするようキュー内での複数のI/O要求の順序を並び替える。
キューで蓄積されたまま残っている複数のI/O要求でI/O先とされる二以上の記憶領域のそれぞれについてI/O数を算出し、該算出されたI/O数に着目した並び替え、具体的には、I/O数が多い記憶領域をI/O先とするI/O要求ほど優先的に先に処理するような並び替えを行うことにより、I/O制御システムのスループットの向上が期待できる。
この技術は、I/O制御システムに適用することができる。ここで言う「I/O制御システム」は、DBMSに代表されるコンピュータプログラムであっても良いし、該コンピュータプログラムを読み込んで実行することによりI/O制御機能(例えばDBMSとしての機能)を発揮するコンピュータマシン(例えばサーバマシン)であっても良い。
また、“I/O”とは、入出力の略である。故に、I/O要求は、入力要求であっても良いし、書込み要求であっても良い。また、I/O要求は、直接的に入力或いは出力を要求するものに限らず、入力或いは出力が行われることになる要求であってもよい。例えば、I/O制御システムがDBMSであって、該DBMSが、prepare(SQL文)を受信しそれに応答して所定の準備ができた後にcommitを受信するタイプのDBMSである場合には、prepare及びcommitのうちの少なくとも一方が上述したI/O要求となる。
また、上記チェックは、定期的に或いは不定期的に行うことができる。I/O要求の順序の並び替えは、典型的には、チェックが行われる都度に行われることになるが、それに限らず、複数回のチェックが行われてから一回の並び替えが行われる方式であっても良い。
<第一の実施形態>
以下、本発明の第一の実施形態に係るI/O要求の処理順序の最適化方式について、図面を参照して説明する。なお、以下の説明では、I/O制御システムは、DBMS(特に、リレーショナルデータベース管理システム(RDBMS))であるとする。また、以下、説明を分かり易くするため、一つのI/O要求は、一つのトランザクションであるとし、一つのアプリケーションプロセスから送信され、オペレーティングシステム(OS)からCPU時間が割り当てられた一つのDBMSプロセスによってキューから読み出されて処理されるものとする。
図1は、本実施形態に係るシステム全体の構成を示す図である。
サーバ104と、クライアント101(ここでは、クライアント(1)101a、クライアント(2)101b、クライアント(3)101c)とが、それぞれネットワーク103に接続されている。
サーバ104は、DBMS107を備えたデータベースサーバとして機能する。各クライアント101のアプリケーション102(ここでは、アプリケーション(1)102a、アプリケーション(2)102b、アプリケーション(3)102c)における一のプロセス(アプリケーションプロセス)は、DBMS107に対して、データベース操作の内容を例えばSQLで記述した要求(以下、「I/O要求」)を送信する。I/O要求を受信したDBMS107は、その受信したI/O要求を待ち受けキュー105(ここではFIFO(First-In First-Out)型のバッファ)に一時蓄積する。DBMS107のプロセス群1071のうちの、OSからCPU時間が割り当てられた一のプロセス(DBMSプロセス)が、待ち受けキュー105の先頭にあるI/O要求を読み出して解釈して、そのI/O要求に対応したデータベース操作を行う。そのデータベース操作により、ストレージ108に対してI/Oコマンドが発行される。なお、ここで、ストレージ108は、例えば、一以上のディスク型記憶装置(以下、単に「ディスク」と言う)1081を備えた装置とすることができる。ストレージ108では、複数のディスク1081でRAID(Redundant Array of Independent (or Inexpensive) Disks)が構成されていても良いし、一以上のディスク1081の記憶空間を利用して論理ユニット(論理的な記憶装置)が用意されていても良い。ディスク1081や論理ユニットに代えて他種の二次記憶装置が採用されても良い(一次記憶装置はサーバ104内の図示しないメモリ)。つまり、二次記憶装置は、物理的な記憶装置であっても良いし論理的な記憶装置であっても良い。
DBMS107では、複数の論理的な記憶領域、並びに、それら複数の論理的な記憶領域の各々とストレージ108における物理的な記憶領域との対応付けを表す情報が管理されている。ここでは、論理的な記憶領域を、ブロック1074とし、複数のブロック1074と複数の物理的な記憶領域との対応付けを表した情報を、ブロック索引1073とする。I/O要求には、例えば、I/O先を表す情報(以下、I/O先情報)として、物理的な記憶領域を表す情報(以下、物理領域情報、例えばアドレス)が記録されていて、DBMS107では、その物理領域情報を用いてブロック索引1073を参照することで、その物理領域情報が表す物理的な記憶領域に対応したブロック1074(つまり、I/O先となるブロック1074)を特定することができる。一つのブロック1074に対応付けられる一つの物理的な記憶領域は、ブロック索引1073においてどのように定義されても良い。具体的には、ストレージ108は、いくつかの物理的な記憶領域に分離され、その分離された記憶領域ごとにデータベース操作が行われる。この分離された記憶領域は、排他制御の単位となるものであり、以下、この領域を排他制御単位と呼ぶ。排他制御単位は、様々な態様をとることができ、例えば、ディスク1081、ファイル1082、レコード1083、及び論理ユニットのうちの少なくとも一つとしても良い(その際、例えば、複数のディスク1081をまたぐ形で定義されても良いし、ディスク1081の一部として定義されても良い)。このような排他制御単位に一つのブロック1074が対応付けられているため、ブロック1074も、排他制御単位となる。
この実施形態では、例えば以下の流れで、一つのI/O要求(以下、この説明において、「対象I/O要求」と言う)が完結する。
(ステップ1)アプリケーションプロセスがprepare文(SQL)を発行する。
(ステップ2)DBMS107がアプリケーションプロセスからの該SQLを解釈して、対象I/O要求に変換した後、待ち受けキュー105に一旦蓄積する。
(ステップ3)アプリケーションプロセスがcommit文(SQL)を発行する。
(ステップ4)待ち受けキュー105に蓄積された対象I/O要求のcommitフラグを有効にする。
(ステップ5)待ち受けキュー105の前方にあるI/O要求のなかで、commitフラグが有効になっているものがDBMSプロセスによって取り出される都度、それより後方に蓄積されている対象I/O要求の順番が一つ繰り上がる。このような処理が繰り返されることで、commitフラグが有効になっている対象I/O要求が取り出される可能性が高まり、やがて、DBMSプロセスによって、対象I/O要求が待ち受けキュー105から取り出される。DBMSプロセスが、対象I/O要求に含まれている情報とブロック索引1073とを用いて、I/O先のブロック1074(以下、対象ブロック1074)を特定し、対象ブロック1074に対応するミューテックス1072の取得を試みる。取得できなければ、待ちとなる。また、対象ブロック1074が複数個ある場合には、それら複数の対象ブロック1074にそれぞれ対応した複数のミューテックス1072を全て取得できるまで、待ちとなる。
(ステップ6)ミューテックス1072を取得できたならば、DBMSプロセスが、ストレージ108内の、対象ブロック1074に対応した物理的な記憶領域を有する二次記憶装置に対し、該物理的な記憶領域を指定したI/Oコマンドを送信する。該I/Oコマンドに対して所定のコマンド応答(例えばI/O成功)を受信した場合、DBMSプロセスは、ミューテックス1072を解放し、対象I/O要求に対する所定の要求応答(例えば成功)を、アプリケーションプロセスに通知する。
(ステップ7)アプリケーションプロセスが、成功を受信する。
以上の流れにおいて、(ステップ1)〜(ステップ7)までが、アプリケーションプログラム102にとっての待ち時間である。なお、前述したコマンド応答とは、DBMSが、I/Oコマンドの送信先の二次記憶装置から受信する、該I/Oコマンドに対する応答である。一方、前述した要求応答とは、DBMSが、I/O要求の送信元のアプリケーションに送信する、該I/O要求に対する応答である。
本実施形態では、待ち受けキュー105に蓄積されている複数のI/O要求についての全体的な待ち時間を短縮することを図るべく、最適化部106が備えられる。最適化部106は、待ち受けキュー105(典型的には、FIFO(First-In First-Out)型のバッファ)で並んでいる複数のI/O要求と、それら複数のI/O要求から特定される複数のブロックとを基にしたマトリクスを作成し、該マトリクス上での並び替えを実行することで、上記の全体的な待ち時間を短縮することができる。最適化部106は、DBMS107同様、サーバ104のCPU(図示せず)で実行されるコンピュータプログラムである。最適化部106は、DBMS107に組み込まれていても良いし、DBMS107と通信可能にDBMS107の外に存在していても良い。
図2は、最適化部106の機能の説明図である。
最適化部106は、キュー監視蓄積部1061と、I/O性能蓄積部1062と、I/O行列置換部1063とを備える。
キュー監視蓄積部1061は、待ち受けキュー105の状況を定期的にチェックし、該状況を表す情報(以下、「キュー状況情報」)2611を、所定の記憶域261(例えばサーバ104における図示しないメモリ上の領域)に蓄積する。キュー状況情報2611としては、例えば、待ち受けキュー105に蓄えられているI/O要求の数、順序、各I/O要求の到着時刻、commitフラグ、要求内容等がある。要求内容には、書込み又は読込みといったデータベース操作の種別や、I/O先のブロック1074等の情報が含まれる。
I/O性能蓄積部1062は、二次記憶装置ごとに、その二次記憶装置に対応するI/O性能を取得する。ここで言うI/O性能とは、例えば、DBMSプロセスによって二次記憶装置にI/Oコマンドが発行されてから所定の応答がその二次記憶装置から戻ってくるまでの時間長である。I/O性能蓄積部1062は、取得したI/O性能を表す数値(I/O性能値)を用いて、該I/O性能の二次記憶装置に対応したI/O性能情報2612を更新する。I/O性能情報2612は、例えば、所定の記憶域261に二次記憶装置毎に用意される。I/O性能情報2612には、各時点で取得されたI/O性能値と、第一の時点から第二の時点までの複数のI/O性能値の統計(I/O性能統計)とが含まれる。I/O性能統計は、例えば、I/O性能蓄積部1062によって求められる。I/O性能統計は、典型的には、標準正規分布に従うとみなすことができる。このI/O性能統計は、例えば、この第一実施形態に係るシステムで業務を開始する前のテスト稼動において、各ブロックサイズが適切かどうかを管理者が判断するのに有用である。例えば、管理者は、同種の二次記憶装置(例えば、データ転送速度やI/O速度が同程度である二次記憶装置)のI/O性能統計を参照することにより、同種の二次記憶装置であるにも関わらずI/O性能(例えば、平均、標準偏差)に想定誤差以上の差があるか否かを判断し、そのような差がある場合には、I/O性能の低い方の二次記憶装置に対応付けるブロックサイズを、I/O性能の高い方の二次記憶装置に対応付けるブロックサイズに比して、小さくする(言い換えれば、一つのブロックに割り当てる物理的な記憶領域のサイズを小さくする)といったチューニングを施すことができる。上記の判断及びチューニングは、コンピュータプログラム(例えば最適化部106に含まれるプログラム)によって自動的に行われても良い。
I/O行列置換部1063は、キュー監視蓄積部1061が蓄積したキュー状況情報に基づいて、待ち受けキュー105で並んでいるI/O要求の順序を、例えば図示のように並び替える。
以下、図3及び図4を参照して、この並び替え処理の詳細を説明する。なお、各図において、“R”は、Request(要求)の頭文字を意味し、“B”は、Block(ブロック)の頭文字を意味する。また、以下では簡単のために、待ち受けキュー105には、ある時点のスナップショットとして7つのI/O要求R1〜R7が蓄えられていて、I/O要求R1〜R7は、全て、commitフラグが有効になっており、各々のI/O要求は、ブロックB1〜B7の範囲にI/Oを発生せしめるという前提で説明する。
I/O行列置換部1063が、例えば、キュー状況情報を解釈し、該解釈の結果を基に、図3(a)で示されるようなマトリクスを作成する。このマトリクスは、行方向に、待ち受けキュー105に蓄えられているI/O要求R1〜R7を配列し(つまり、キュー状況情報から特定される順序に従ってI/O要求R1〜R7を配列し)、列方向に、ブロックB1〜B7を、それぞれ配列したものである。各行において、その行に対応したI/O要求でI/O先となっているブロックに対応した位置には、所定の値(図では丸印で表している)がセットされる。従って、このマトリクスからは、例えば、I/O要求R1では、ブロックB1及びB5がI/O先とされていることがわかる。
このようなマトリクスを作成した後、列の置換処理と、行の置換処理とが行われる。
列の置換処理は、以下の通りである。すなわち、I/O行列置換部1063が、各ブロック毎のI/O数(丸印の数)を計算する。そして、I/O行列置換部1063は、図3(b)に示すように、I/O数の多いブロック(列)ほど左に寄せる。この結果、左から順に、B1、B6、B2、B5、B4、B7、B3となるように並び替えられる。
行の置換処理では、I/O数の多いブロックに着目して、着目したブロックをI/O先とするI/O要求(行)の順番がなるべく先になるように並び替えられる。その際、その着目しているブロックよりもI/O数の多いブロックに着目した並び(上詰め)を崩さないようにし、崩れるようであれば、行の置換処理を終える。
具体的には、例えば、まず、図4(a)に示すように、最もI/O数の多いブロックB1に着目して、ブロックB1がI/O先になっているI/O要求が上位にくるように(出力される順番が先になるように)並び替える。ここでは、I/O要求R2のみがブロックB1へのI/Oを行わないため、I/O要求R2に対応した行は最下位へ移動させられる。
次に、図4(b)に示すように、2番目にI/O数の多いブロックB6に着目して、B1の上詰め状態を崩さないようにして、ブロックB6がI/O先になっているI/O要求(行)が上位にくるように並び替える。
次に、図4(c)に示すように、3番目にI/O数の多いブロックB2に着目して、B1及びB6の上詰め状態を崩さないようにして、ブロックB2がI/O先になっているI/O要求(行)が上位にくるように並び替える。
次に、4番目にI/O数の多いブロックB5に着目して、B1、B6及びB2の上詰め状態を崩さないようにして、ブロックB5がI/O先になっているI/O要求(行)が上位にくるように並び替えることを試みる。しかし、ここでは、ブロックB2に着目した上詰め後のマトリクスである図4(d)のマトリクスからわかるように、ブロックB5をI/O先とするI/O要求R4、R1及びR7のいずれをより上位にしようとすると、B1、B6及びB2のいずれかの上詰め状態が崩れてしまうことになる。
従って、この段階で、行の置換処理を終了する。
以上の一連の処理によって、I/O要求の処理順序の最適化が完了する。以下、この最適化により期待できる効果を検証する。その際、一つのブロックについてのI/O(具体的には、該ブロックに対応した物理的な記憶領域を有する二次記憶装置に対するI/O)に関する処理で遅れる確率(P)を一律に0.05とする。遅れる確率(P)とは、例えば、その二次記憶装置のI/O性能の標準正規分布(I/O性能情報中の標準正規分布)において、標準偏差(σ)が±2σの範囲から外れる確率である。
(1)並び替え前[図3(a)参照]
・ブロックB1:I/O要求R3〜R7と5つ連続でI/Oが発生しているので、
遅れる確率:PB1=1−(1−0.05)5= 0.2262190625
・ブロックB5:最終のI/O要求R7でI/Oが発生するが、前のI/O要求R6ではブロックB5についてI/Oが発生しないので、
遅れる確率:PB5=0.05
・ブロックB7:最終のI/O要求R7でI/Oが発生するが、前のI/O要求R6ではブロックB7についてI/Oが発生しないので、
遅れる確率:PB7=0.05
他のブロックに関しては、最終I/O要求(R7)が送出されるタイミングでは新たなI/Oが発生しない。それ以前の遅れは、R7のタイムスロットで吸収される。
それぞれの遅れは独立に発生すると考えてよい。そのため、B1、B5及びB7のうち、2つ以上で遅れが同時に発生する確率は、それぞれの確率の積となるため、それらは無視できるほど小さな値になる。故に、最終のI/O要求R7のタイミングで遅れが生じる確率Pは、
P≒PB1+PB5+PB7=0.226 + 0.05 + 0.05 = 0.326
となる。
(2)並べ替え後[図4(d)参照]
・ブロックB6:最終のI/O要求R2でI/Oが発生するが、前のI/O要求R7ではブロックB6についてI/Oが発生しないので、
B6=0.05
・ブロックB2:最終のI/O要求R2でI/Oが発生するが、前のI/O要求R7ではブロックB2についてI/Oが発生しないので、
B2=0.05
それぞれの遅れは独立に発生すると考えてよい。そのため、B6及びB2の両方で同時に遅れが発生する確率は、それぞれの確率の積となるが、それらは無視できるほど小さな値になる。故に、最終のI/O要求R2で遅れが生じる確率Pは、
P≒PB6+PB2=0.05 + 0.05=0.1
となる。
以上、第一の実施形態によれば、待ち受けキュー105で蓄積されたまま残っている複数のI/O要求でI/O先とされる二以上のブロックのそれぞれについてI/O数を算出し、I/O数が多いブロックをI/O先とするI/O要求ほど優先的に先に処理するような並び替えが行われる。これにより、DBMS107のスループットの向上が期待できる。
<第二の実施形態>
以下、第二の実施形態について説明する。その際、第一の実施形態との相違点について主に説明し、第一の実施形態との共通点については説明を省略或いは簡略する。
I/O行列置換部1063が、行の合成処理を実行する。以下、それについて、図5(a)を例に採り説明する。I/O行列置換部1063は、行の置換処理後のマトリクス(図4(d)参照)を基に、行ベクトルの内積が 0 になる2つ以上の行があるか否か(I/O先となるブロックが重なり合わないI/O要求)があるか否かを判断する。そのような2つ以上の行があれば、I/O行列置換部1063は、2つ以上の行を合成、すなわち、2つ以上のI/O要求(例えばR2及びR7)を一つのI/O要求にまとめる。これにより、DBMS107のスループットの更なる向上が期待できる。
なお、このように2つのI/O要求を一つにまとめた場合、それら2つのI/O要求がそれぞれ2つのアプリケーション102から発行されたI/O要求であれば、一つにまとめられたI/O要求の処理が済んだ場合に、DBMS107によって、それら2つのアプリケーション102に、完了が通知される。
また、例えばブロックの数が膨大であって、一つのマトリクスで行の置換処理などを行うことが困難な場合、I/O行列置換部1063は、マトリクスを多段で用意し、多段のマトリクスのうちの少なくとも一つで、列の置換処理、行の置換処理、行の合成処理を行っても良い。例えば、図5(b)に例示するように、第一段のマトリクスにおいてN個(Nは2以上の整数)のブロックにそれぞれ対応するN個の位置を、第二段(第一段の一つ上の段)のマトリクスにおいて一つの位置に対応付けても良い。その場合、第二段のマトリクスにおいて、行列が交差する各位置には、その位置に対応するN個のブロックが全てI/O先である場合を1としたときの数値が設定される。図5(b)の例では、第二段のマトリクスの或る位置には、8個のブロックのうちの4個のブロックがI/O先となっているので、0.5という値が設定される。この第二段のマトリクスで、列の置換処理、行の置換処理、行の合成処理を行っても良い。行の合成処理の際は、例えば、I/O行列置換部1063は、行ベクトルの内積が所定値以下になる2つ以上の行があるか否かを判断し(例えば、行の合成処理を行ってもI/O先が重なり合う可能性が0に極めて近い2つ以上の行があるかを判断し)、そのような2つ以上の行があれば、行の合成を行っても良い。
<第三の実施形態>
この第三の実施形態では、I/O性能統計がより有効に活用される。具体例としては、以下の第一〜第三の例とがある。
第一の例は、I/O性能の向上化である。例えば、I/O性能蓄積部1062が、定期的に又は不定期的に、図6(a)に例示する処理を実行する。具体的には、例えば、I/O性能蓄積部1062が、同種の二次記憶装置のI/O性能統計を参照することにより、同種の二次記憶装置間でI/O性能(例えば、平均、標準偏差)に想定誤差以上の差があるか否かを判断する(ステップS101)。そのような差がある場合には、I/O性能蓄積部1062は、同種の二次記憶装置のうちのI/O性能の低い方の二次記憶装置に対して最適化処理を実行させる(S102)。
ここで、複数の二次記憶装置のうちのどれが同種の二次記憶装置であるかは、例えば、二次記憶装置に関する属性情報が書かれた管理テーブルを参照する等の方法により、特定することができる。
また、二次記憶装置に対して実行させる最適化処理とは、例えば、デフラグメンテーション処理、すなわち、二次記憶装置内のデータの断片化を解消する処理である。I/O性能蓄積部1062は、例えば、OS211でサポートされているユーティリティ機能を呼び出すことで、所望の二次記憶装置に対する最適化処理を実行させることができる。
第二の例は、待ち受けキュー105からのI/O要求の出力タイミングの決定である。すなわち、この第三の実施形態では、OS211によって決定されたタイミングではなく、最適化部106のキュー制御部(図示せず)によって決定されたタイミングで待ち受けキュー105からI/O要求が出力される。具体例を図6(b)に示す。
すなわち、キュー制御部は、I/O要求を読み出した場合に、該I/O要求の処理の際に発行されるI/Oコマンドの発行先二次記憶装置に対応したI/O性能統計を基に、該二次記憶装置についてのI/O性能を予測する(S201)。ここで予測されるI/O性能は、例えば、標準正規分布での平均であっても良いし、標準正規分布における所定の範囲内での或るI/O性能であっても良い。
キュー制御部は、予測されたI/O性能に基づいて、次のI/O要求を読み出すタイミング(例えば今回の読出しから何秒後に読み出すか)を決定する(S202)。そして、キュー制御部は、そのタイミングで次のI/O要求を読出し(S203)、その読み出したI/O要求について、再びS201を実行する。
第三の例は、I/O行列置換部1063による行の置換処理において、どのようなブロックを優先してI/O要求を並び替えるかの決定である。すなわち、上述した第一の実施形態では、I/O数が多い順が、ブロックの優先順位の高い順であるが、この第三の例では、必ずしも、I/O数が多い順が、ブロックの優先順位の高い順とはならない。例えば、ブロックB1のI/O数が最も多いが、ブロックB2に対応した二次記憶装置のI/O性能がブロックB1に対応した二次記憶装置のI/O性能よりもかなり低い場合には、ブロックB2を最優先とした行の置換処理が行われても良い。
上述した本発明の幾つかの実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。
本発明の一実施形態に係るシステム全体の構成を示す。 最適化部の機能の説明図。 並び替え処理における列の置換処理の説明図。 並び買え処理における行の置換処理の説明図。 (a)は、並び替え処理における行の合成処理の説明図。(b)は、マトリクスが多段になった場合の一例の説明図。 (a)は、I/O性能統計の利用方法の第一の例を示す図。(b)は、I/O性能統計の利用方法の第二の例を示す図。
符号の説明
101…クライアント 102…アプリケーションプログラム 105…待ち受けキュー 106…最適化部 107…DBMS 1061…キュー監視蓄積部 1062…I/O性能蓄積部 1063…I/O行列置換部

Claims (6)

  1. I/O要求発行元からI/O要求を受信して一旦キューに蓄積し該キューから出力されたI/O要求について所定の処理が完了した場合に該I/O要求に対する応答である要求応答を前記I/O要求発行元に返すI/O制御システムに適用可能な、I/O要求の処理順序の最適化をコンピュータに実行させるためのコンピュータプログラムであって、
    前記キューにどんな順序でどれだけの数のI/O要求が並んでいて各I/O要求のI/O先はどの記憶領域であるかのチェックを行うキュー状況チェックステップと、
    前記チェックの結果を基に、それぞれが複数のレコードを記憶している複数の物理記憶領域にそれぞれ対応した複数のブロックのうちの、前記キュー内に並んでいる複数のI/O要求でI/O先とされる二以上のブロックの各々について、I/O先とされるI/O要求の数であるI/O数を算出し、I/O数が多いブロックをI/O先とするI/O要求ほど早い順番とするよう前記キュー内での複数のI/O要求の順序を並び替える順序並び替えステップと
    をコンピュータに実行させるコンピュータプログラム。
  2. 前記所定の処理とは、前記キューから出力されたI/O要求でのI/O先とされるブロックに対応した物理記憶領域を有する記憶装置にI/Oコマンドを発行し、該I/Oコマンドに対する応答であるコマンド応答を該対応した記憶装置から受信することであり、
    前記I/O制御システムが発行する各I/Oコマンドについて、前記I/O制御システムがI/Oコマンドを記憶装置に発行してからそれのコマンド応答を該記憶装置から受信するまでの時間長であるI/O性能を取得し、取得したI/O性能を記憶手段に蓄積するI/O性能蓄積ステップ、
    を更にコンピュータに実行させる請求項1記載のコンピュータプログラム。
  3. 前記記憶手段に記憶されている複数のI/O性能を基に、各記憶装置毎にI/O性能の統計を取得し、同種の記憶装置間でI/O性能の差が所定値以上に大きいか否かを判別し、大きい場合には、前記同種の記憶装置のうちのI/O性能の低い方の記憶装置で最適化処理を実行する記憶装置最適化ステップ、
    を更にコンピュータに実行させる請求項2記載のコンピュータプログラム。
  4. 前記順序並び替えステップでは、前記記憶手段に蓄積されている複数のI/O性能と、前記キュー内で並んでいる前記複数のI/O要求でI/O先とされる前記二以上のブロックとに基づき、該二以上のブロックの各々のI/O性能を求め、前記取得されたI/O数に加えて、前記二以上のブロックの各々についてのI/O性能を基に、前記二以上のブロックの各々の優先順位を決定し、優先順位の高いブロックをI/O先とするI/O要求ほど早い順番になるよう前記複数のI/O要求の順序を並び替える、
    請求項2記載のコンピュータプログラム。
  5. 前記順序並び替えステップでは、更に、前記チェックの結果から、前記キューに並んでいる複数のI/O要求のうち、I/O先となるブロックが互いに重複する確率が所定値以下の二以上のI/O要求を特定し、特定した二以上のI/O要求を、それら二以上のI/O要求で指定されている二以上のブロックをI/O先とする一つのI/O要求に合成する、
    請求項1記載のコンピュータプログラム。
  6. I/O要求発行元からI/O要求を受信して一旦キューに蓄積し該キューから出力されたI/O要求について所定の処理が完了した場合に該I/O要求に対する応答である要求応答を前記I/O要求発行元に返すI/O制御システムであって、
    前記キューにどんな順序でどれだけの数のI/O要求が並んでいて各I/O要求のI/O先はどの記憶領域であるかのチェックを行うキュー状況チェック部と、
    前記チェックの結果を基に、それぞれが複数のレコードを記憶している複数の物理記憶領域にそれぞれ対応した複数のブロックのうちの、前記キュー内に並んでいる複数のI/O要求でI/O先とされる二以上のブロックの各々について、I/O先とされるI/O要求の数であるI/O数を算出し、I/O数が多いブロックをI/O先とするI/O要求ほど早い順番とするよう前記キュー内での複数のI/O要求の順序を並び替える順序並び替え部と
    を備えるI/O制御システム。
JP2006333932A 2006-12-12 2006-12-12 I/o要求の処理順序を最適化するためのコンピュータプログラム Expired - Fee Related JP4951326B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006333932A JP4951326B2 (ja) 2006-12-12 2006-12-12 I/o要求の処理順序を最適化するためのコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006333932A JP4951326B2 (ja) 2006-12-12 2006-12-12 I/o要求の処理順序を最適化するためのコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2008146420A JP2008146420A (ja) 2008-06-26
JP4951326B2 true JP4951326B2 (ja) 2012-06-13

Family

ID=39606521

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006333932A Expired - Fee Related JP4951326B2 (ja) 2006-12-12 2006-12-12 I/o要求の処理順序を最適化するためのコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP4951326B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566281B2 (en) * 2008-12-18 2013-10-22 Lsi Corporation Method for implementing multi-array consistency groups using a write queuing mechanism
US10095442B2 (en) 2015-08-04 2018-10-09 Toshiba Memory Corporation Memory device that changes execution order of commands

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000048549A (ja) * 1998-08-03 2000-02-18 Fujitsu Ltd テープ装置
JP2001222380A (ja) * 2000-02-07 2001-08-17 Hitachi Ltd 外部記憶装置とそれを備えた情報処理システム

Also Published As

Publication number Publication date
JP2008146420A (ja) 2008-06-26

Similar Documents

Publication Publication Date Title
JP4611830B2 (ja) データベース管理システム及び方法
US6085200A (en) System and method for arranging database restoration data for efficient data recovery in transaction processing systems
JP5765416B2 (ja) 分散ストレージシステムおよび方法
CN112534396A (zh) 数据库系统中的日记表
US20090125678A1 (en) Method for reading data with storage system, data managing system for storage system and storage system
JP2001067187A (ja) ストレージサブシステム及びその制御方法
US11321302B2 (en) Computer system and database management method
US7769732B2 (en) Apparatus and method for streamlining index updates in a shared-nothing architecture
JP2781092B2 (ja) システム間排他制御方式
JP6272556B2 (ja) 共有リソース更新装置及び共有リソース更新方法
JP4951326B2 (ja) I/o要求の処理順序を最適化するためのコンピュータプログラム
US7908434B2 (en) Raid apparatus, cache management method, and computer program product
US20060206543A1 (en) Database reorganization program and method
US8332595B2 (en) Techniques for improving parallel scan operations
CN114556320A (zh) 切换到最终一致的数据库副本
US8290935B1 (en) Method and system for optimizing database system queries
CN107924399B (zh) 处理对主机而言数据传输量不明的检索请求的检索处理系统和方法
US7949632B2 (en) Database-rearranging program, database-rearranging method, and database-rearranging apparatus
JP2010152435A (ja) 情報処理装置及び情報処理方法及びプログラム
JP2007206913A (ja) データベースアクセスシステム、アプリケーションサーバノード、データベースアクセス方法及びプログラム
JP2010224672A (ja) データ処理方法、システム、およびプログラム
JP5674850B2 (ja) データベース管理システム及び方法
JP5283675B2 (ja) データベース管理システム及び方法
CN114168306B (zh) 调度方法及调度装置
CN113051274B (zh) 一种海量标签存储系统及方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111129

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120125

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120312

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150316

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees