JP5158576B2 - 入出力制御システム、入出力制御方法、及び、入出力制御プログラム - Google Patents

入出力制御システム、入出力制御方法、及び、入出力制御プログラム Download PDF

Info

Publication number
JP5158576B2
JP5158576B2 JP2009517771A JP2009517771A JP5158576B2 JP 5158576 B2 JP5158576 B2 JP 5158576B2 JP 2009517771 A JP2009517771 A JP 2009517771A JP 2009517771 A JP2009517771 A JP 2009517771A JP 5158576 B2 JP5158576 B2 JP 5158576B2
Authority
JP
Japan
Prior art keywords
input
output
information
cache
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009517771A
Other languages
English (en)
Other versions
JPWO2008149657A1 (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
Priority to JP2009517771A priority Critical patent/JP5158576B2/ja
Publication of JPWO2008149657A1 publication Critical patent/JPWO2008149657A1/ja
Application granted granted Critical
Publication of JP5158576B2 publication Critical patent/JP5158576B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system

Description

本発明は、コンピュータの入出力制御システム、入出力制御方法、および、入出力制御プログラムに関する。本発明は、特に、キャッシュを用いて外部記憶装置へアクセスを行うコンピュータに使用される入出力制御システム、入出力制御方法、および、入出力制御プログラムに関する。
現在のコンピュータは、プログラム、および、データを主記憶装置に展開し、ハードディスクのような外部記憶装置への入出力を伴いながら処理を実行して、コンピュータサービスを実現している。ここで、プログラムは、動作手順をコンピュータで動作できる形の命令で記述したものである。実際には同一プログラムを用いて、複数の処理が動作している。すなわち、同じ手順に沿って、複数の作業がなされている。このプログラムに沿って処理している単位を、プロセスと呼ぶ。
コンピュータの作業を制御しているプログラムがオペレーティングシステム(OS)である。OS上では、多くのプロセスが動作し、外部記憶装置に対してデータの入出力を行っている。ここで、プロセスが動作するために外部記憶装置から主記憶装置へプログラム本体を読込む処理も、プログラム本体というデータの外部記憶装置からの入力であり、外部記憶装置に対するデータの入出力の一部である。
データの入出力処理は、プロセスの応答性に大きく影響する。プロセスの応答性とは、プロセスに対して要求を入力したときに、要求に対する処理を行い、何らかの結果、応答を返すまでの性能を呼ぶ。例えば、ワープロソフトの読込プロセスの場合、プロセスの応答性は、ドキュメントファイルを開くまでの時間になる。入力プロセスの場合、キー入力してから、1文字が入力処理され表示されるまでの時間になる。
また、別の例として、インターネットのページアクセスの場合、プロセスの応答性は、ユーザから見るとアクセスプロセスの応答性であり、URLを入力してから対応ページがウェブブラウザに表示されるまでになる。しかし、ウェブブラウザから見ると、ページアクセスは複数のファイル、ドキュメントへのアクセスとなり、それぞれの「ファイル、ドキュメントをアクセスする」という要求と「対応するデータが転送され受信完了する」という結果とから構成されている。したがって、ページアクセスは複数の応答から成り立っていることになる。
このように、プロセスの応答性は、様々な粒度で存在する。
データの入出力は、外部記憶装置への入出力を必要とする場合がある。その入出力は、コンピュータが演算装置、主記憶装置を用いて計算処理するのに比べて、多くの時間を要する。そのため、データの入出力処理は、プロセス実行において比重が大きくなる傾向があり、応答性に大きく影響する。従って、1つのプロセスの応答性を向上させるためには、データの入出力処理、すなわち、外部記憶装置へのデータの転送速度、記憶速度などを向上させる必要がある。
通常、連続したデータを外部記憶装置へバースト的に入出力するほど転送速度は向上する。これは、ハードディスク等でシークするというオーバヘッドなどが除かれたり、バスをフルに利用してデータ転送できたりするためである。しかし、一つのプロセスが膨大なデータを一度に入出力し、データ入出力を優先すると、他のプロセスは入出力ができなくなり、待機状態へ移り、処理が中断される。結果として、他のプロセスの応答性が下がるため、全体の平均的な応答性が下がるという問題が生じる。そのため、OSは入出力スケジューラを持ち、連続データの入出力による高速化と各プロセスへの応答性向上のトレードオフを調整しながら入出力制御を行っている。
例えば、DANIEL P.BOVET、MARCO CESATI著、“I/O Scheduling Algorithms”、Understanding the LINUX KERNEL、米国、O’REILLY、2005年11月、580〜583頁に、Linuxの入出力スケシュール機構が開示されている。すなわち、Linuxでは、I/O elevatorとよばれる入出力スケシュール機構を持ち、利用用途の違いによって、Noopスケジューラ、Deadlineスケジューラ、Anticipatoryスケジューラ、CFQ(Complete Fairness Queueing)スケジューラなどを設定することができる。
入出力スケジューラは、入出力制御を行う過程において、入出力要求に対して、優先度による能力配分を行っている。このとき、入出力の優先度を決定するパラメータは、例えば、プロセスグループのIDやプロセスのID、また、そのプロセスに設定した入出力の優先度、入出力先の外部記憶装置の識別子などが挙げられる。入出力要求に対して、入出力スケジューラは、例えば、プロセスIDを参照してプロセスごとに要求処理の時間や要求処理の回数等を均等に配分したり、特定のプロセスIDに対しては数倍の要求処理をしたりなどを行う。
また、OSには、主記憶装置に一時記憶領域を確保し、外部記憶装置のデータを保有することで、入出力処理を見かけ上、高速化させる手法が採用されている。この一時記憶領域をキャッシュ、ファイルキャッシュ、I/Oキャッシュ、または、バッファ、I/Oバッファなどと呼ぶ(以下、キャッシュと統一して呼ぶこととする)。
現在のコンピュータにおいて、一般的に、外部記憶装置と主記憶装置との間のデータ転送に比べて、演算装置と主記憶装置との間のデータ転送の方が高速である。そのため、OSは、データを外部記憶装置に対して入出力するとき、ひとまずキャッシュに対して入出力させておき、タイミングを見計らって、キャッシュと外部記憶装置との間で入出力を行う。プロセスからしてみると、キャッシュに対してデータを入出力できた時点で入出力処理は完了する。データ領域の再利用性が高い場合、キャッシュへの入出力が繰り返され、外部記憶装置へのデータの入出力を回避することが可能なため、入出力を高速化することが可能になる。
データの読込みにおいては、キャッシュ領域上にデータが存在しないときが外部記憶装置からのデータ入力(読込み)のタイミングとなる。OSは、そのタイミングで外部記憶装置からキャッシュへデータを読み込んでいる。データの書込みにおいては、キャッシュ領域上で更新されたデータを外部記憶装置へ反映させるため、所定の事象がデータ出力(書込み)の契機となる。OSは、その出力契機でキャッシュ領域のデータを外部記憶装置へ書き込んでいる。このように、キャッシュ領域上の更新されたデータをあるタイミングで外部記憶装置へ書き込む(出力する)ことをライトバックと呼ぶ。
データの反映が行わなければ、キャッシュ上に保存されている更新データは外部記憶装置に反映されず、データの不整合などを起こす原因となる。キャッシュから外部記憶装置への出力契機としては、例えば、一定時間ごとがある。また別の例として、主記憶装置における未使用領域が少なくなったときがある。また別の例として、更新されたデータが一定以上になったときがある。更に別の例として、外部記憶装置への入出力処理が行われていないときがある。
キャッシュに関する制御を行うのが、キャッシュ管理機構である。キャッシュ管理機構は、キャッシュの領域の確保や解放や、また、キャッシュの利用状況(どのファイルに対するキャッシュかなど)を管理している。キャッシュ管理機構は、ファイルシステムや主記憶管理システムと混在して存在している場合が多い。また、キャッシュにおけるライトバックは、ライトバックプロセスが実行する。
例えばDANIEL P.BOVET、MARCO CESATI著、”Writing Dirty Pages to Disk”、Understanding the LINUX KERNEL、米国、O’REILLY、2005年11月、622〜630頁に、Linuxのライトバックプロセスが開示されている。すなわち、Linuxでは、bdflushやpdflushと呼ばれるライトバックプロセスが、ライトバックを行っている。ライトバックプロセスは、前述のタイミングを契機に、更新のあったキャッシュ領域、すなわち、書込みがあったキャッシュ領域を探索する。そして、更新キャッシュ領域のデータを外部記憶装置へ出力する(書き込む)ためのデータ出力要求を作成し、入出力スケジュール機構へ発行している。このとき、探索速度を向上させるため、更新キャッシュ領域を予め更新リストなどで管理することもできる。
ライトバックプロセスは、データ出力要求を発行するときに、一度に全ての更新データを出力するのではなく、適度な更新キャッシュ領域を選択して出力要求を発行する。更新データの選択としては、例えば、データ利用時刻が一番古いデータを優先するLRU(Least Recently Used)法が挙げられる。また、別の更新データの選択として、ファイルシステム順に検索する手法が挙げられる。また、別の更新データの選択として、特定の外部記憶装置に対するキャッシュ領域のみを選択する手法が挙げられる。さらに、上記に挙げた更新データの選択手法を組み合わせた手法も、更新データの選択手法となる。また、更新データを選択するデータ量は、ファイル単位、一定ページサイズ(単一ページを含む)などが挙げられる。
外部記憶装置へのデータ出力要求は、少なくとも、出力先の外部記憶装置を特定する識別子(例えば、PCI機器番号やデバイス番号、Linuxにおけるメジャー番号、マイナー番号など)と外部記憶装置へ反映させるために選ばれたキャッシュ領域を示す情報(例えば、データのアドレス、ページ番号など)とを含む。
図1は、従来技術におけるキャッシュを用いた入出力を説明する概念図である。プロセス1、プロセス2はデータの入出力を繰り返すことで、プログラムを実行する。プロセス1、2はOS1000へデータの入出力を要求し、OS1000はキャッシュ1300を用いてプロセス1,2からの入出力を高速化する。キャッシュ管理機構1320は、主意記憶装置1200上からキャッシュ1300を確保する。キャッシュ管理機構1320は、キャッシュ1300内のキャッシュ領域1310を確保し、プロセス1、2からの入出力要求に対応する。図1において、“プロセス”の後に続く数字をプロセスIDとし、入出力要求に対して、プロセスID=xのy番目のデータ入出力要求を“x−y”と表現する。
まず、入力の場合の例を説明する。
例えば、プロセス1からの入力要求“1−1”に対して、キャッシュ管理機構1320はキャッシュ領域1310に、キャッシュ領域“1−1”を確保する。そのキャッシュ領域“1−1”上にデータは存在しないため、OS1000はプロセス1のコンテキストのまま、データ入力要求を入出力スケジューラ1400に発行する。入出力スケジューラ1400は、外部記憶装置1600へ入力要求“1−1”を要求し、外部記憶装置1600からデータをキャッシュ領域1310のキャッシュ領域“1−1”へ転送する。OS1000は、読み込んだデータをプロセスへ返答する、すなわち、プロセス空間へコピー、マッピングすることで読込要求は完了する。
上記入力の場合、OS1000がプロセス1のコンテキストのまま入力要求を入出力スケジューラ1400に発行するとき、OS1000は、その入力要求を発行した現在動作中のプロセスのプロセス情報(例示:プロセスID)を保持している。したがって、入出力スケジューラ1400は、その入力要求を受け取るとき、そのプロセス情報を特定することができる。例えば、上記の例(入力要求“1−1”)では、入力要求の要求元のプロセスID=1であることを特定できる。ここで、入出力スケジューラ1400は、既述のように、プロセス(例示:プロセスID)に応じた優先度等を用いた入出力制御を実行することができる。従って、図1に示されるような場合では、プロセスの優先度等に応じて、入力要求に関する処理を実行することができる。それにより、入出力スケジューラによる入力に関する処理の応答性を向上させることができる。
次回以降の同じ入力要求(読込要求)“1−1”に関しては、キャッシュ1300上に、その入力要求に対応するキャッシュ領域“1−1”が存在する。従って、そのキャッシュ領域“1−1”からプロセス空間へデータをコピー、マッピングすることで入力要求に対する処理は完了する。そのため、読込速度を向上させることができる。
次に、出力の場合の例を説明する。
プロセス1からの出力要求“1−3”に対して、キャッシュ管理機構1320はキャッシュ領域1310に、キャッシュ領域“1−3”を確保する。書き込むデータをプロセス空間からキャッシュ領域1310のキャッシュ領域“1−3”へコピーすることで出力要求に対する処理は完了する。プロセスから見て、出力処理はキャッシュ1300への出力のみで終了するため、高速に出力処理を実行することができる。一方、実際に外部記憶装置1600へ出力結果、すなわち、更新データを反映させるのは、ライトバックプロセス1500が行う。
図1において、プロセスからのデータ出力要求“x−y”に対するライトバックプロセス1500から外部記憶装置1600へのデータ出力要求を“RB(x−y)”と表現する。ライトバックプロセス1500は、前述のタイミングを契機に起動し、ライトバックを開始する。更新キャッシュ領域1310のキャッシュ領域“1−3”を発見し、外部記憶装置1600への出力が行われる。すなわち、ライトバックプロセス1500は、更新キャッシュ領域1310のキャッシュ領域“1−3”に対する外部記憶装置1600への出力要求を入出力スケジューラ1400に発行する。このとき、ライトバックプロセス1500のコンテキストとして、出力要求は発行される。そのため、外部記憶装置1600への出力要求“RB(1−3)”として入出力スケジューラ1400で扱われることになる。上記ライトバックにより、キャッシュ領域1310の更新データと外部記憶装置1600のデータとの整合性が取れることになる。
しかしながら、キャッシュを用いた入出力性能向上を図ることより、コンピュータの性能と応答性が低下するという問題が生じる。これは、キャッシュ管理機構1320がキャッシュ1300をOS1000上で一意に扱い、プロセス1100を意識していないためである。キャッシュ管理機構1320がプロセス情報を利用しないため、例えば、あるプロセス1100が無限にキャッシュ1300を使用し始め、主記憶装置1200を独占すると、他のプロセス1100の入出力が発生したときに新たなキャッシュ領域が主記憶装置1200上には確保できない。そのため、必要なキャッシュ領域の確保のために使用中のキャッシュ領域の解放が必要となり、コンピュータ性能著しく低下するという恐れがある。
このようなコンピュータ性能低下を解決するための一手段として、プロセスごとにキャッシュ容量を限定する方法が特開2006−350780号公報(対応米国出願US2006288159)に記載されている。キャッシュ管理機構は、キャッシュ管理情報に設定する取得設定パラメータを基に、プロセスごとのキャッシュ容量を決定する。そして、キャッシュ管理機構は、プロセスが新たに確保要求するキャッシュ領域に対して、決定されたキャッシュ容量を超えないようにキャッシュ領域の確保、解放を制御している。これにより、特定のプロセスに対するキャッシュ領域の枯渇を防いでいる。
しかし、特開2006−350780号公報(対応米国出願US2006288159)の技術を用いた場合でも、更新データを外部記憶装置1600へ反映させる処理は、ライトバックプロセスにより実行されることに変わりはない。
この出力の場合、ライトバックプロセス1500は、ライトバックプロセス1500のコンテキストとして、出力要求を入出力スケジューラ1400へ発行する。OS1000は、その入力要求を発行した現在動作中のプロセスとしてライトバックプロセスの情報を保持している。そのため、入出力スケジューラ1400はその出力要求を受信するとき、プロセス情報をライトバックプロセスと特定する。すなわち、出力要求を発した大元のプロセス情報を特定することができない。例えば、上記の例(出力要求“RB(1−3)”では、出力要求の要求元のプロセス=ライトバックプロセスと特定し、大元のプロセスID=1を特定することができない。更に、キャッシュ領域1310に格納されたデータそのものは、どのプロセスによるデータかを示すプロセス情報(例示:プロセスID)を含んでいない。そのため、データそのものからも大元のプロセスID=1を特定することができない。
このように、出力要求RB(x−y)は、ライトバックプロセスによる出力要求と特定されるため、入出力スケジューラ1400は、既述のように、プロセス(例示:プロセスID)に応じた優先度等を用いた入出力制御を実行することができなくなる。従って、図1に示されるような場合では、プロセスの優先度等に応じて、出力要求に関する処理を実行することができない。すなわち、入出力スケジューラによる出力に関する処理の応答性を向上させることができない。
図2A〜図2Bは、従来技術における入力及び出力に関する処理の一例の概念を示す模式図である。図2Aは入力の場合、図2Bは出力の場合をそれぞれ示す。図2Aを参照すると、入力の場合、OS1000はプロセス1、2、3からの入力要求を入出力スケジューラ1400に発行する。そのとき、入出力スケジューラ1400は、入力の要求元情報として、入力を要求するプロセスのプロセスIDを特定することができる。そのため、入出力スケジューラ1400は、プロセスIDに応じた優先度等を用いた入力制御を実行することができる。この図では、入力制御として、入力処理を均等に割り振って行っている。
一方、図2Bを参照すると、出力の場合、ライトバックプロセス1500は、プロセス1、2、3からの出力要求を一元化してライトバックプロセス1500からの出力要求として、入出力スケジューラ1400へ発行する。そのとき、入出力スケジューラ1400は、出力の要求元情報として、出力を要求するプロセスをライトバックプロセスと特定する。そのため、入出力スケジューラ1400は、要求元情報としてプロセスIDを知ることができず、プロセスIDに応じた優先度等を用いた出力制御を実行することができない。この図では、例えば、出力処理を出力要求の古い順やアドレスの近い順などで行うことになる。
このように、従来のキャッシュ管理機構は、プロセスごとのキャッシュ容量の制御により、キャッシュの独占による性能低下を防ぐことはできる。しかし、入出力スケジューラによる優先度等を用いた入出力制御が無効になる問題は解決されない。その理由は、上記のように、キャッシュ管理機構がキャッシュ領域に対して明確にプロセス情報を保持せず、さらに、キャッシュから外部記憶装置へのデータ出力がライトバックプロセスに対するデータの出力として一元化されるためである。すなわち、入出力スケジューラは全てライトバックプロセスからのデータ出力要求と認識するため、本来伝わるべきキャッシュを用いて入出力を行ったプロセスに対する入出力の優先を決定するパラメータが、入出力スケジューラへ伝わらないからである。キャッシュによる入出力機構において、入出力スケジューラがプロセスの優先度を適切に決定可能な技術が望まれる。その優先度の決定に必要な情報を適切に入出力スケジューラへ伝達させることが可能な技術が求められる。
関連する技術として特開2005−293205号公報(対応米国出願US2005223168)に、記憶制御装置、制御方法、および制御プログラムが開示されている。この記憶制御装置は、複数の記憶装置を制御する。この記憶制御装置は、該記憶制御装置内のキャッシュメモリに格納されているデータの前記複数の記憶装置へのライトバックをLRU法によって行うLRUライトバック手段と、該LRUライトバック手段によって実行されているライトバックの数が少ない記憶装置を選択して、該選択した記憶装置に対するデータのライトバックを行うライトバックスケジュール処理手段とを備える。
WO99/40516号公報(対応米国特許US6748487)にディスクキャッシュ制御方法、ディスクアレイ装置、及び記憶装置が開示されている。このディスクキャッシュ制御方法は、データが分割されて格納される複数のディスク装置と、ディスクキャッシュとを有し、上記複数のディスク装置に複数のボリウムが割り当てられたディスクアレイ装置におけるディスクキャッシュ制御方法である。上記データへの新たなディスクキャッシュ領域の割り当ては、上記ボリウムを任意の固定長で区分された領域毎にアクセス頻度を求め、上記アクセス頻度が低い上記領域に対して割り当てられているディスクキャッシュ領域から順に行われる。
特開2000−172562号公報(対応米国特許US6507894)に情報処理装置が開示されている。この情報処理装置は、主記憶装置と、主記憶のコピーを保持するキャッシュメモリと、前記キャッシュメモリの制御情報及びアドレス情報を参照,更新しつつ前記キャッシュメモリ内のデータを管理するキャッシュメモリ制御部を含むプロセッサとを備えている。この情報処理装置において、前記制御情報及びアドレス情報の参照及び更新を行わずに前記主記憶装置のデータを前記キャッシュメモリに転送するプリフェッチ手段を備えている。
特開平8−328956号公報にマルチプロセッサシステムのメモリ管理方式が開示されている。このマルチプロセッサシステムのメモリ管理方式において、マルチプロセッサシステムは、複数のプロセッサからなる仮想記憶機構を備えている。マルチプロセッサシステムは、メモリ管理手段と、プロセス管理手段と、アドレス変換キャッシュと、バインド制御手段と、無効化制御手段とを具備する。メモリ管理手段は、仮想アドレスと実アドレスとの関連づけを管理する。プロセス管理手段は、上記プロセッサにより実行されるプロセスを管理する。アドレス変換キャッシュは、上記プロセッサそれぞれの内部に設けられ、上記メモリ管理手段により関連づけられた仮想アドレスと実アドレスとの連結情報を保持する。バインド制御手段は、いずれかのプロセッサにて実行中のプロセスによる外部データへのアクセス要求について、該プロセッサ上のオペレーティングシステムから上記メモリ管理手段に対し問い合わせが行われ、この問い合わせに対して上記メモリ管理手段が所定の仮想アドレス及び実アドレスを引き渡した際に、この実アドレスで示されるメモリページをそのプロセスが使用終了するまで、そのプロセスをそのプロセッサにバインドするように上記プロセス管理手段に通知する。無効化制御手段は、そのプロセッサが内部にもつ上記アドレス変換キャッシュの該仮想アドレスに関連づけられた実アドレスを無効化し、上記引き渡される実アドレスに更新する。マルチプロセッサシステムのメモリ管理方式は、いずれかのプロセッサにて実行中のプロセスによって上記メモリ管理手段により管理される仮想アドレスと実アドレスとの関連づけが更新されたときであっても、他のすべてのプロセッサが内部にもつ上記アドレス変換キャッシュの一斉無効化を必要とせずにメモリ管理を実施する。
本発明の目的は、キャッシュによる入出力機構において、入出力スケジューラがスケジューリングを適切に実行可能なコンピュータの入出力制御システム、入出力制御方法、及び、入出力制御プログラムを提供することにある。
この発明のこれらの目的とそれ以外の目的と利益とは以下の説明と添付図面とによって容易に確認することができる。
本発明の入出力制御システムは、第1記憶領域及び第2記憶領域を具備し、第1記憶領域の一部または全部をキャッシュとして入出力処理を行う情報処理装置の入出力制御システムである。本発明の入出力制御システムは、キャッシュ管理部と、入出力特定情報記憶部と、ライトバック部と、入出力特定部とを備える。キャッシュ管理部は、第2記憶領域に入出力するデータを、第1記憶領域のキャッシュとして用いる第3記憶領域へ記憶する。入出力特定情報記憶部は、第3記憶領域へ記憶されたデータの領域であるデータ領域と、入出力に関する情報とを関連付けて記憶する。ライトバック部は、第3記憶領域のデータ領域から第2記憶領域へのデータの出力要求を生成する。入出力特定部は、生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、入出力特定情報記憶部を参照して、特定する。
本発明の入出力制御方法は、第1記憶領域及び第2記憶領域を具備し、第1記憶領域の一部をキャッシュとして入出力処理を行う情報処理装置の入出力制御方法である。出力制御方法は、(a)第2記憶領域に入出力するデータを、第1記憶領域のキャッシュとして用いる第3記憶領域へ記憶するステップと、(b)第3記憶領域へ記憶されたデータの領域であるデータ領域と、入出力に関する情報とを関連付けて入出力特定情報記憶部に記憶するステップと、(c)第3記憶領域のデータ領域から第2記憶領域へのデータの出力要求を生成するステップと、(d)生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、入出力特定情報記憶部を参照して、特定するステップとを備える。
本発明のプログラムは、第1記憶領域及び第2記憶領域を具備し、第1記憶領域の一部をキャッシュとして入出力処理を行う情報処理装置の入出力制御方法をコンピュータに実行させるプログラムである。プログラムは、(a)第2記憶領域に入出力するデータを、第1記憶領域のキャッシュとして用いる第3記憶領域へ記憶するステップと、(b)第3記憶領域へ記憶されたデータの領域であるデータ領域と、入出力に関する情報とを関連付けて入出力特定情報記憶部に記憶するステップと、(c)第3記憶領域のデータ領域から第2記憶領域へのデータの出力要求を生成するステップと、(d)生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、入出力特定情報記憶部を参照して、特定するステップとを備える入出力制御方法をコンピュータに実行させる。
図1は、従来技術におけるキャッシュを用いた入出力を説明する概念図である。 図2Aは、従来技術における入力及び出力に関する処理の一例の概念を示す模式図である。 図2Bは、従来技術における入力及び出力に関する処理の他の一例の概念を示す模式図である。 図3は、本発明の入出力制御システムの第1の実施例の構成を示すブロック図である。 図4は、本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第2の実施例の概念を示す模式図である。 図5は、本発明の入出力制御システムの第2の実施例の構成を示すブロック図である。 図6は、本発明の出力制御システムの第2の実施例の動作を示すフローチャートである。 図7は、本発明の出力制御システムの第2の実施例の動作を示すフローチャートである。 図8は、本発明の出力制御システムの第2の実施例の動作を示すフローチャートである。 図9は、本発明の入出力制御システムの第3の実施例の構成を示すブロック図である。 図10は、本発明の出力制御システムの第3の実施例の動作を示すフローチャートである。 図11は、本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第4の実施例の概念を示す模式図である。 図12は、本発明の入出力制御システムの第4の実施例の構成を示すブロック図である。 図13は、本発明の出力制御システムの第4の実施例の動作を示すフローチャートである。 図14は、本発明の出力制御システムの第4の実施例の動作を示すフローチャートである。 図15は、本発明の出力制御システムの第4の実施例の動作を示すフローチャートである。 図16は、本発明の出力制御システムの第4の実施例の動作を示すフローチャートである。 図17は、本発明の入出力制御システムとしての計算機システム装置の第1具体例を示すブロック図である。 図18は、本発明におけるキャッシュを用いた入出力を説明する概念図である。 図19は、本発明の入出力制御システムとしての計算機システム装置の第2具体例を示すブロック図である。 図20は、本発明の入出力制御システムとしての計算機システム装置の第2具体例の応用例を示すブロック図である。
以下、本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの実施例に関して、添付図面を参照して説明する。
(第1の実施例)
本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第1の実施例について、添付図面を参照して説明する。なお、本発明に関し、キャッシュを用いた入出力において、プロセスの入出力に関する情報を伝達することを主に説明するために、キャッシュ制御、および、キャッシュからの入出力要求生成に関わる構成要素を主に説明する。
図3は、本発明の入出力制御システムの第1の実施例の構成を示すブロック図である。入出力制御システムは、第1記憶領域及び第2記憶領域を具備し、第1記憶領域の一部または全部をキャッシュとして入出力処理を行う情報処理装置である。入出力制御システムは、入出力制御プログラムとしてのキャッシュ管理部110と、ライトバック部120と、入出力特定部100とを具備する。パーソナルコンピュータに例示される情報処理装置に、本発明の入出力制御プログラム(入出力制御方法)がインストールされて、本発明の入出力制御システムとして機能する。
キャッシュ管理部110は、第2記憶領域に入出力するデータを、第1記憶領域のキャッシュとして用いる第3記憶領域へ記憶する。第1記憶領域は半導体メモリに例示され、第2記憶領域はHDD(Hard Disk Drive)に例示される。キャッシュ管理部110は、入出力特定情報記憶部111を含む。入出力特定情報記憶部111は、第3記憶領域へ記憶されたデータの領域であるデータ領域と、入出力に関する情報とを関連付けて記憶する。入出力に関する情報は、入出力の要求元に関する情報に例示される。ライトバック部120は、第3記憶領域のデータ領域から第2記憶領域へのデータの出力要求を生成する。入出力特定部100は、生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、入出力特定情報記憶部111を参照して、特定する。
キャッシュ管理部110は、入出力要求部200及び入出力要求処理部101と連係している。キャッシュ管理部110は、入出力要求部200がキャッシュを利用したデータの入出力を要求するときに動作する。ここで、入出力要求部200は、プログラム(プロセス)からデータの入出力要求を受け付ける。入出力要求処理部101は、特定された入出力に関する情報を取得して、入出力の要求に関連する処理を実行する。
次に、本発明の出力制御システムの第1の実施例の動作(入出力制御方法、入出力制御プログラムの実施例)について、図3を参照して説明する。ここでは、プログラムからのデータの出力要求に対する動作について説明する。
まず、データ出力要求がプログラムの入出力要求部200から発行された場合、キャッシュ管理部110は、第2記憶領域に入出力するデータを、第1記憶領域のキャッシュとして用いる第3記憶領域へ記憶する。次に、キャッシュ管理部110は、第3記憶領域へ記憶されたデータの領域であるデータ領域と、入出力に関する情報とを関連付けて入出力特定情報記憶部111に記憶する。その後、ライトバック部120は、第3記憶領域のデータ領域から第2記憶領域へのデータの出力要求を生成する。続いて、入出力特定部100は、生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、入出力特定情報記憶部111を参照して、特定する。そして、入出力要求処理部101は、特定された入出力に関する情報を取得して、入出力の要求に関連する処理を実行する。
本発明における出力の場合、入出力要求処理部101が入出力の要求に関連する処理を実行するとき、少なくとも入出力特定情報記憶部111及び入出力特定部100の機能により、入出力に関する情報を取得し、特定することができる。それにより、出力要求の大元の要求元又はそれに関連する情報を特定することができる。従って、出力要求の大元の要求元又はそれに関連する情報に基づいて、入出力要求処理部101は入出力の要求に関連する処理を実行することができる。
以下、本発明の具体的な実施例について、第2の実施例から第4の実施例において説明する。
(第2の実施例)
本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第2の実施例について、添付図面を参照して説明する。
図4は、本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第2の実施例の概念を示す模式図である。図4を参照すると、本発明における出力の場合、キャッシュ領域とプロセス1、2、3との関係が、ライトバックプロセスの実行前に予め記憶されている。そのため、ライトバックプロセス1700は、当該関係を参照することで、プロセス1、2、3からの出力要求を入出力スケジューラ1400へ発行するとき、それら出力要求の大元の要求元であるプロセスIDを特定することができる。従って、ライトバックプロセス1700は、そのプロセスIDを用いることで、出力を要求するプロセス(出力の要求元情報)がライトバックプロセス1700ではなく大元のプロセス1、2、3であると入出力スケジューラ1400に認識(特定)させることができる。それにより、入出力スケジューラ1400は、プロセスIDに応じた優先度等を用いた出力制御を実行することができる。この図では、出力制御として、出力処理を均等に割り振って行っている。
以下、本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第2の実施例について具体的に説明する。なお、本発明に関し、キャッシュを用いた入出力において、プロセスの入出力に関する情報を伝達することを主に説明するために、キャッシュ制御、および、キャッシュからの入出力要求生成に関わる構成要素を主に説明する。
図5は、本発明の入出力制御システムの第2の実施例の構成を示すブロック図である。入出力制御システムは、入出力制御プログラムとしてのキャッシュ管理部110と、ライトバック部120と、入出力特定情報復元部130とを具備する。パーソナルコンピュータに例示される情報処理装置に、本発明の入出力制御プログラム(入出力制御方法)がインストールされて、本発明の入出力制御システムとして機能する。
キャッシュ管理部110は、従来のキャッシュ管理機構1320(図1)が有するキャッシュ管理機能に加え、入出力特定情報記憶部111を含む。キャッシュ管理部110は、入出力要求部200及び入出力要求スケジューリング部300と連係している。キャッシュ管理部110は、入出力要求部200がキャッシュを利用したデータの入出力を要求するときに動作する。
ここで、入出力要求部200は、プログラム(プロセス)からデータの入出力要求を受け付ける。データ入出力要求スケジューリング部300は、外部記憶装置に対するデータの入出力要求をスケジューリングする。入出力要求部200は、OSに含まれている入出力要求を受け付けるプログラム、又はプログラム(プロセス)の入出力担当部分に例示される。入出力要求スケジューリング部300は、OSに含まれている入出力スケジューラ1400に例示される。
ただし、プログラム(プロセス)からの入出力要求は、入出力の要求を示す情報、及び、プロセスを特定する情報を含む。入出力の要求を示す情報は、リクエスト識別子、データ位置や量、入出力バッファ(キャッシュ領域を含む)等の位置に例示される。プロセスを特定する情報は、入出力先識別子に例示され、プロセスグループIDやプロセスのIDのようなプロセスグループやプロセスの識別子、入出力の優先度を含んでいても良い。
キャッシュ管理部110は、入出力要求部200からのデータの入出力要求に対して、キャッシュ領域を管理する。キャッシュ領域の管理としては、少なくとも、データの入出力に必要なキャッシュの確保、解放、および、ファイルにおけるアドレス、外部記憶装置におけるデータ位置との対応表(マッピングテーブル)による管理を行う。具体的には以下のような管理を行う。
キャッシュ管理部110は、入出力要求部200からのデータの入力要求に対して、既にキャッシュ領域にデータを確保していた場合、当該キャッシュ領域からデータを読込む。一方、データの確保がなされていない場合、キャッシュ領域を確保した後、外部記憶装置からキャッシュ領域へのデータの入力要求を作成し、入出力要求スケジューリング部300に発行する。
キャッシュ管理部110は、入出力要求部200からのデータの出力要求に対して、既にキャッシュ領域に書込み領域を確保していた場合、当該キャッシュ領域へのデータを書き込む。一方、キャッシュ領域に書込み領域が確保されていない場合、新規キャッシュ領域を確保し、ファイルにおけるアドレス、外部記憶装置におけるデータ位置との対応関係を構築した後、キャッシュ領域へデータを書き込む。ここで、対応関係の構築とは、例えば、上記対応表(マッピングテーブル)への出力要求に関する情報の登録である。なお、書込みキャッシュ領域に対して更新フラグを設定しておき、データの更新の有無を記憶する。更新フラグは、ライトバック部120で、外部出力装置へ更新データを出力する際に、更新データ領域かどうかを判定するために参照する。
さらに、キャッシュ管理部110は、キャッシュ領域に対応した入出力の特定に必要な情報を取得し、その取得された情報を入出力特定情報記憶部111に記憶する。ここで、入出力の特定に必要な情報とは、入出力スケジューラ部300が入出力をスケジューリングする際に指針とするパラメータ情報である。今後、この情報を入出力特定情報と呼ぶ。後述されるように、その入出力特定情報を用いることにより、入出力スケジューラ部300は、優先度等を用いた出力制御を実行することが可能となる。
入出力特定情報としては、例えば、プロセスやプロセスグループの識別子、そのプロセスやプロセスグループに対する入出力優先度、入出力先の外部記憶装置の識別子などである。ここで、識別子とは、個々を識別するための情報のことをいう。例えば、IDなどの番号や管理情報を格納している構造体へのポインタなどが挙げられる。入出力特定情報が例えばプロセスIDやプロセスグループID等の場合、キャッシュ管理部110は、プログラム(プロセス)から入出力要求を受け取るとき、OSが保持している現在動作中のプロセスのプロセス情報として、その入出力特定情報を取得することができる。また、入出力特定情報が例えば外部記憶装置の識別子等の場合、入出力要求から直接取得することができる。
入出力特定情報記憶部111は、入出力特定情報とキャッシュ領域との関係を記憶し、管理する。すなわち、キャッシュ領域を表す情報と入出力特定情報とをキャッシュ管理部110から受取ると、それらの情報を互いに関連付けて記憶し、管理する。キャッシュ領域を表す情報は、例えば、キャッシュ領域のページアドレスやキャッシュ領域のブロック番号などがあり、対応表(マッピングテーブル)に記されている。
入出力特定情報記憶部111の管理方法として、例えば、キャッシュ領域を表す情報と入出力特定情報とを対応(関連)付けた管理表を作成して記憶することができる。また、入出力特定情報記憶部111の管理方法の別の例として、OSがキャッシュを管理している管理構造体の中に、パラメータとして入出力特定情報を加えることができる。その場合、例えば、メモリ管理構造体のキャッシュ領域を示すアドレススペース構造体やページ構造体に、プロセスやプロセスグループの識別子を関連付けるように加える方法が考えられる。
ライトバック部120は、更新キャッシュ領域のライトバックを行う。すなわち、先に述べた外部記憶装置へのデータの出力タイミングに、更新データを適度に外部記憶装置へ反映させるために、入出力スケジューラ部300に処理させるためのデータの出力要求を作成する。データ出力要求は、プログラム(プロセス)からの入出力要求と同様である。ただし、データの出力要求元がライトバック部120であることを示す情報を有していても良い。ライトバック部120は、図4におけるライトバックプロセス1700に対応する。
ライトバック部120は、背景技術のライトバックプロセス1500と概ね同様である。しかし、更新データの選択として、入出力特定情報記憶部111に記憶されている入出力特定情報を参照することができる点で異なる。すなわち、例えば、入出力特定情報から特定のプロセスの識別子を抽出することにより、特定のプロセスに対するキャッシュ領域のみを選択する手法が実現できる。選択されたキャッシュ領域のみにおいて出力処理することで、実質的に出力要求に優先度を持たせることができる。さらに、上記の入出力特定情報を用いて更新データ選択手法と従来の更新データ選択手法を組み合わせた手法も、更新データの選択手法となる。ライトバック部120は、外部記憶装置へのデータ出力要求を入出力特定情報復元部130に発行する。
入出力特定情報復元部130は、ライトバック部120からの外部記憶装置へのデータ出力要求に対して、入出力特定情報記憶部111に記憶した入出力特定情報を復元する。入出力特定情報を復元するとは、ライトバック部120で入出力スケジューリング部300へ出力要求を発行しても、入出力スケジューリング部300には大元の発信元(出力要求元)であるプロセス情報(入出力特定情報)を特定できるようにすることである。すなわち、入出力特定情報復元部130は、ライトバック部120からデータ出力要求を受信したなら、データ出力要求に含まれるキャッシュ領域を示す情報に基づいて、そのキャッシュ領域に対応する入出力特定情報を入出力特定情報記憶部111から検出する。そして、入出力特定情報を復元して、データ出力要求を出力するプロセスがライトバック部120ではなく、入出力特定情報で特定されるプロセスであるように見せかけながら、そのデータ出力要求を入出力スケジューリング部300へ発行する。
入出力情報の復元方法としては、例えば、ライトバック部120が、上記の入出力特定情報記憶部111を参照して、出力要求元情報を、一時的に、自身(ライトバック部120)を示す情報から、キャッシュ領域に対応する入出力特定情報(例示:プロセス識別子や入出力優先度)に変換する方法がある。それにより、ライトバック部120からではなく、データをキャッシュへ出力したプロセスから出力要求が発行されたように見せかけることができる。
また、別の入出力情報の復元方法としては、例えば、入出力スケジューリング部300へのインタフェース(API)にラッパープログラムとして変換部を用意し、入出力スケジューリング部300がプロセスコンテキストから入出力特定情報を読み取ろうとするときに、データをキャッシュへ出力したプロセスの入出力特定情報に変換して受け渡す方法も挙げられる。
ライトバックプロセスは複数ページを一度に出力要求にする場合もある。そのとき、入出力特定情報が複数ページにおいて異なることがある。そのときに復元する入出力特定情報を適切に選択する必要がある。
復元する入出力特定情報の選択としては、例えば、出力要求の対象となっているキャッシュ領域に対して合計容量の割合の一番高い入出力特定情報を選択することができる。復元する入出力特定情報の選択の別の例として、出力要求の対象となっているキャッシュ領域に対して入出力優先度が一番高い、すなわち、一番優先する入出力特定情報を選択することができる。復元する入出力特定情報の選択の別の例として、出力要求の対象となっているキャッシュ領域に対して最後に更新したキャッシュ領域に対する入出力特定情報を選択することができる。
このように、入出力特定情報復元部130は、生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報(データ出力要求の大元の発生元)を、入出力特定情報記憶部111を参照して特定する入出力特定部100と見ることができる。また、入出力スケジューリング部300は、特定された入出力に関する情報を取得して、入出力の要求に関連する処理を実行する入出力要求処理部101と見ることができる。
入出力要求スケジューリング部300は、外部記憶装置に対するデータの入力要求について、従来と同様の方法でスケジューリングする。また、入出力スケジューリング部300は、外部記憶装置に対するデータの出力要求について、出力要求元情報(ライトバック部120を示す情報から、データをキャッシュへ出力したプロセスへ一時的に復元(変換)された入出力特定情報)を参照して、スケジュールにおける優先度を決定し、決定された優先度に基づいてスケジューリングを行う。
そのスケジューリング後に、入出力特定情報復元部130は、入出力特定情報復元により後の処理に影響する情報変換を、元の情報へ戻す。すなわち、出力要求元情報について、データをキャッシュへ出力したプロセスへ一時的に復元(変換)された入出力特定情報を、ライトバック部120を示す情報へ戻す。
次に、本発明の出力制御システムの第2の実施例の動作(入出力制御方法、入出力制御プログラムの実施例)について、図4〜図8を参照して説明する。ただし、図6乃至図8は、本発明の出力制御システムの第2の実施例の動作を示すフローチャートである。
まず、図6を参照して、プログラムからのデータの入力要求に対する動作について説明する。
入力要求時には、スループット向上のために、データ読込パターンを予測し先行して読み出しておく、一般に「先読み」と呼ばれる技術を適用する場合もある。本説明では、これは入力要求発行時に入出力要求部200にて適用されているものとし、その後のキャッシュ確保と外部記憶からのデータ読み出し部分について説明する。
データ入力要求がプログラムの入出力要求部200から発行された場合、キャッシュ管理部110は、要求されたデータ領域が既に確保されているかどうかをチェックする(ステップS101)。
ステップS101にて、キャッシュ上にデータ領域が未だ確保されていない場合(ステップS101:NO)、キャッシュ管理部110は、空きメモリ領域から新規キャッシュ領域を確保し、該当データ領域としてキャッシュ管理情報に登録する(ステップS102)。
ステップS101にて、キャッシュ上にデータ領域が既に確保されている場合(ステップS101:YES)、キャッシュ管理部110は当該キャッシュ上に既にデータが存在するかどうかをチェックする(ステップS103)。
ステップS103にて、データ領域に対応するキャッシュ上のデータが存在しない場合(ステップS103:NO)、又は、ステップS102で新規キャッシュ領域を確保した場合、そのキャッシュ領域にデータを転送するために、キャッシュ管理部110は、外部出力装置に対するデータ入力要求を入出力スケジューリング部300へ発行する。その後、入出力要求スケジューリング部300を経て、外部出力からデータの伝送が終了する応答が到着するまで、待機状態に入る(ステップS104)。
ステップS103にて、データ領域に対応するキャッシュ上にデータが存在した場合、もしくは、ステップS104にて、キャッシュ上へのデータの転送が完了した場合、キャッシュ管理部110は、該当キャッシュからプロセス空間(プログラム)へデータを転送する(ステップS105)。
これにて、データの入力処理が完了する。
この入力処理は同一プロセスコンテキストで処理ため、入力要求したプロセスの入力処理として扱われる。なお、ステップS105後に、キャッシュ管理部110は、入力先のキャッシュ領域と入出力特定情報とを関連付けて、入出力特定情報記憶部111に記憶しても良い。
次に、図7を参照して、プログラムからのデータの出力要求に対する動作について説明する。
データ出力要求がプログラムの入出力要求部200から発行された場合、キャッシュ管理部110は、要求されたデータ領域が既に確保されているかどうかをチェックする(ステップS201)。
ステップS201において、キャッシュ上にデータ領域が存在しない場合(ステップS201:NO)、キャッシュ管理部110は空きメモリ領域から新規キャッシュ領域を確保し、該当データ領域として管理情報に登録する(ステップS202)。ここで、管理情報は、対応表(マッピングテーブル)に例示される。キャッシュ管理部110は、新規キャッシュ領域を確保した後、必要に応じてデータ入力要求を発行し、キャッシュ上のデータを補完する(ステップS203)。
ステップS201において、キャッシュ上にデータ領域が存在している場合(ステップS201:YES)、または、ステップS202、S203を経てキャッシュ上にデータ領域を確保した場合、キャッシュ管理部110はデータをプロセス空間からキャッシュへ転送する(ステップS204)。
キャッシュ管理部110は、出力先のキャッシュ領域と入出力特定情報とを関連付けて、入出力特定情報記憶部111に記憶する(ステップS205)。
これにより、データの出力処理が完了する。
ここで、データの補完とは、キャッシュで扱う領域単位において、データの出力範囲以外の場所に書込み前のデータを保持させておくことをいう。すなわち、必要に応じてデータの補完を行うとは、データ出力領域がキャッシュの領域単位の途中から始まったり、途中で終了したりするときに、その最初、または、最後のキャッシュ領域単位に対して、データ入力要求を発行し、データを保持させることをいう。例えば、Linuxの2.6バージョンでは、キャッシュ領域として、キャッシュをメモリのページ単位で扱っている。このとき、データ出力範囲がページ領域全体であれば、すべてのデータ領域を更新するため、データをあらかじめ保持しておく必要はない。しかしながら、データ出力範囲がページの一部である場合、キャッシュ上におけるデータ出力範囲でないデータをあらかじめ保持させておかないと、間違ったデータのままキャッシュとして管理され、外部記憶装置に記憶されている該当領域の本来のデータとの不整合を起こす。そのため、該当するページのデータを外部記憶装置から読み込むことにより、データをあらかじめ保持させることでデータの整合性を保つ。
次に、図8を参照して、キャッシュ上の更新データを外部記憶装置へ反映させるライトバック処理の動作について説明する。
ライトバック処理は、前述した種々のタイミングを契機に処理を開始する。更新データを反映させる容量などもタイミングに対する設定に従って決定する。ライトバック処理要求のタイミングを契機に、ライトバック部120は起動する(フローチャート開始)。
ライトバック部120は、キャッシュ管理部110の管理情報(例示:対応表(マッピングテーブル))を参照して、LRUなど前述の種々のポリシーに基づいて、キャッシュ上から更新すべきデータ領域を回収する(ステップS301)。このとき、入出力特定情報も入出力特定情報記憶部111で記憶しているため、入出力特定情報を参照して更新データ領域の回収に利用することも可能になる。例えば、特定のプロセスに関わるキャッシュ領域のみを回収するといったポリシーを持つことが可能になる。
ライトバック部120は、回収したキャッシュ領域に対するデータ出力要求を作成し、入出力特定情報復元部130へ渡す(ステップS302)。
入出力特定情報復元部130は、渡されたデータ出力要求に対して、入出力特定情報記憶部111の情報を参照し、入出力特定情報を復元する(ステップS303)。
例えば、このデータ出力要求を発行するプログラム(ライトバック部120)において、そのライトバック部120を示すプロセスやプロセスグループの識別子、または、入出力優先度を、復元された大元の出力要求元のプロセスの識別子等へ変更する。それにより、入出力スケジューリング部300に対して、ライトバック部120からの出力要求ではなく、更新データを出力したプロセス(大元の出力要求元)からの出力要求であるかのように見せかける。また、別の例では、入出力スケジューリング部300へのAPIに対して、上記復元された入出力特定情報を見せかけるためのラッパーAPIを設定する。
入出力特定情報復元部130は、入出力特定情報復元後に、入出力要求スケジューリング部300へデータ出力要求を発行する(ステップS304)。それにより、入出力要求スケジューリング部300は、復元された入出力特定情報に対応したプロセスによる出力要求として出力処理を実行する。従って、入出力要求スケジューリング部300は、その所定のプロセスに対応した優先度等に基づく出力制御を実行することができる。
その後、入出力特定情報復元部130は、ステップS303にて行った入出力特定情報復元において、後の処理に影響する情報変換を元の情報へ戻す(ステップS305)。
例えば、データ出力要求を発行するプログラム(ライトバック部120)のプロセスの識別子を変更した場合、その後のプロセス管理において同一番号プロセスが存在するという悪影響を起こす。そのため、プロセスの識別子を元のデータ出力要求を発行するプログラム(ライトバック部120)のプロセスの識別子に戻すという後処理を行う。
ライトバック部120、および、入出力特定情報復元部130は、ステップS301乃至S305までを行い、最初に決定された容量のキャッシュからのデータ出力要求が行われているか否かを判断する(ステップS306)。そして、最初に決定された容量のキャッシュからのデータ出力要求が行われていない場合(ステップS306:NO)、再度、探索範囲を変える、各種パラメータを変更するなどして、外部出力装置へのデータ反映条件を変更してステップS301乃至S305を繰り返す。
ステップS306において、決定された容量のキャッシュからのデータ出力要求が行われた場合、更新データがキャッシュ上にない場合、又は、一定回数のキャッシュ領域の探索が終了した場合(ステップS306:YES)、繰り返しを終了する。
最後に、ライトバック部120は、データ出力に対する外部記憶装置の応答を待ち、更新フラグをクリアする(ステップS307)。
これにより、キャッシュ上の更新データを外部記憶装置へ反映させるライトバック処理が完了する。
次に、本実施例の効果について説明する。
本実施例では、入出力特定情報をキャッシュに関連付けて記憶し、キャッシュから外部記憶装置への反映時に復元するというように構成されているため、キャッシュを用いたデータの出力においても、入出力スケジューリング部へ正しく入出力特定情報を伝播することができる。これにより、キャッシュを用いた入出力においても設定した入出力スケジューリングの機能を提供でき、性能低下、応答性低下を回避することができる。
(第3の実施例)
本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第3の実施例について、添付図面を参照して説明する。図9は、本発明の入出力制御システムの第3の実施例の構成を示すブロック図である。入出力制御システムは、入出力制御プログラムとしてのキャッシュ管理部140と、ライトバック部120と、入出力特定情報復元部130とを具備する。パーソナルコンピュータに例示される情報処理装置に、本発明の入出力制御プログラム(入出力制御方法)がインストールされて、本発明の入出力制御システムとして機能する。
キャッシュ管理部140は、従来のキャッシュ管理機構1320(図1)が有するキャッシュ管理機能に加え、入出力特定情報記憶部141とキャッシュ確保制御部142とを含む。キャッシュ管理部140は、入出力要求部200及び入出力要求スケジューリング部300と連係している。キャッシュ管理部140は、入出力要求部200がキャッシュを利用したデータの入出力を要求するときに動作する。入出力要求部200及び入出力要求スケジューリング部300は、第2の実施例と同じであるのでその説明を省略する。
本実施例は、第2の実施例と比較して、キャッシュ管理部140、入出力特定情報記憶部141及びキャッシュ確保制御部142が異なる。従って、キャッシュ管理部140、入出力特定情報記憶部141及びキャッシュ確保制御部142について説明する。なお、その他の点は、第2の実施例と同じであるのでその説明を省略する。
キャッシュ管理部140は、入出力要求部200からのデータの入出力要求に対して、キャッシュ領域を管理する。キャッシュ管理部140は、入出力要求部200からのデータの入出力要求に対して、既にキャッシュ領域として確保していない場合、キャッシュ確保制御部142を用いて、新規キャッシュ領域を確保する。キャッシュ管理部140は、キャッシュ領域にデータが入出力された場合、入出力特定情報記憶部141に入出力特定情報を記憶する。
入出力特定情報記憶部141は、入出力特定情報記憶部111と同様に、キャッシュ領域を表す情報と入出力特定情報とを関連付けて記憶し、管理する。
キャッシュ確保制御部142は、入出力特定情報記憶部141、および、キャッシュ管理部140に管理されているキャッシュに関する情報を参照して、キャッシュ領域の使用状況を把握する。キャッシュ領域の使用状況とは、キャッシュ領域をプロセスや外部記憶装置、またはその組合せや全体においてどのように利用しているかという情報である。キャッシュ領域の使用状況の情報としては、例えば、キャッシュ容量、使用キャッシュ容量、使用キャッシュ割合、予め確保されているキャッシュ領域、最大キャッシュ容量設定値、新規キャッシュとして確保できる容量などが挙げられる。特に、入出力特定情報記憶部141の入出力特定情報を参照すれば、キャッシュ領域とプロセスやプロセスグループとの関係が分かるので、プロセスごとやプロセスグループごとのキャッシュ領域の使用状況を把握することができる。
キャッシュ確保制御部142は、キャッシュ管理部140からのキャッシュ確保要求に対して、キャッシュ領域の使用状況を参考にして、新規キャッシュ領域の確保の可否、および、確保領域または確保容量を決定し、キャッシュを確保して応答する。新規キャッシュ領域の確保の可否は、すなわち、以下のようにすることができる。プロセスに対して予め設定した最大キャッシュ容量設定値と、要求されている使用キャッシュ容量とを比較して、使用キャッシュ容量が最大キャッシュ容量設定値未満であれば、新規キャッシュ領域の確保を可能と判定する。一方、使用キャッシュ容量が最大キャッシュ容量設定値以上であれば、新規キャッシュ領域の確保を不可能と判定する。これらは、入出力特定情報に含まれるプロセスごとやプロセスグループごとに実行することができる。
新規キャッシュ領域の確保の可否の別の例としては、以下のようにすることができる。プロセスが予め確保したキャッシュ領域において未使用状態であれば、その領域を優先的に確保することを前提に新規キャッシュ領域の確保を可能と判定する。一方、プロセスが予め確保したキャッシュ領域が使用状態であった場合、他プロセスの予約キャッシュ領域を除いて、さらに新規キャッシュとして確保できる共用キャッシュ領域が存在する場合に新規キャッシュ領域の確保を可能と判定し、それ以外の場合を新規キャッシュ領域の確保を不可能と判定する。これらも、入出力特定情報に含まれるプロセスごとやプロセスグループごとに実行することができる。
この例では、プロセスごとやプロセスグループごとに最低限のキャッシュ領域を確保しているため、単一プロセスのキャッシュ独占などによる性能低下を避けることができる。更に、共有キャッシュ領域により拡充できるため、予め設定したキャッシュ領域による制限でなく、入出力の頻度により設定キャッシュ容量を超えて、性能を向上させることが可能になる。
次に、本発明の出力制御システムの第3の実施例の動作(入出力制御方法、入出力制御プログラムの実施例)について、図9及び図10を参照して説明する。ただし、図10は、本発明の出力制御システムの第3の実施例の動作を示すフローチャートである。
本実施例の動作は、第2の実施例におけるキャッシュ確保処理に関する動作、すなわち、図6のフローチャートのステップS102、及び、図7のフローチャートのステップS202の動作だけが異なる。従って、図10のフローチャートを参照して、キャッシュ確保処理に関する動作について説明する。なお、キャッシュ確保処理以外の動作は、第2の実施例と同じであるのでその説明を省略する。
キャッシュ管理部140がキャッシュ確保を要求された場合、キャッシュ確保制御部142は入出力特定情報記憶部141から入出力特定情報を取得し、キャッシュの使用状況を計算する(ステップS401)。
キャッシュ確保制御部142は、参照し、計算したキャッシュ使用状況を基に、新規キャッシュが確保できるかどうかを判定する(ステップS402)。
新規キャッシュ確保ができない場合(ステップS402:NO)、キャッシュ確保制御部142は、ライトバック部120へキャッシュ領域解放の契機を促す(ステップS403)。キャッシュ確保制御部142は、キャッシュ解放処理を待つ(ステップS404)。キャッシュ確保制御部142は、キャッシュ解放待機後、再び、キャッシュ使用状況を取得し、キャッシュ確保が可能かどうかの判定に移る(ステップS401、S402)。
新規キャッシュ確保ができる場合(ステップS402:YES)、対象キャッシュ領域に新規キャッシュ領域を確保する(ステップS405)。
以上の処理により、キャッシュ確保処理を実行する。
次に、本実施例の効果について説明する。
本実施例では、キャッシュ確保処理に対して、キャッシュの使用状況を反映させることができる構成をとることで、第2の実施例の効果に加えて、前述した単一プロセスのキャッシュ占有による性能低下も防ぐことができる。
(第4の実施例)
本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第4の実施例について、添付図面を参照して説明する。
図11は、本発明の入出力制御システム、入出力制御方法、及び、入出力制御プログラムの第4の実施例の概念を示す模式図である。図11を参照すると、本発明における出力の場合、プロセス1、2、3のそれぞれに対応して設けられたI/O命令発行プロセス1750が、ライトバックプロセスの実行前に予め準備されている。そのため、ライトバックプロセス1700は、プロセス1、2、3からの出力要求を入出力スケジューラ1400へ発行するとき、それらI/O命令発行プロセス1750に出力要求を発行させる。それらI/O命令発行プロセス1750のプロセス識別子は、出力要求の大元の要求元であるプロセス識別子に対応しているので、実質的に出力要求の大元の要求元であるプロセスを特定することができる。従って、ライトバックプロセス1700は、それらI/O命令発行プロセス1750を用いることで、出力を要求するプロセス(出力の要求元情報)がライトバック1700ではなく大元のプロセス1、2、3であると入出力スケジューラ1400に認識(特定)させることができる。それにより、入出力スケジューラ1400は、プロセス識別子に応じた優先度等を用いた出力制御を実行することができる。この図では、出力制御として、出力処理を均等に割り振って行っている。
なお、上記技術は、入力の場合にも同様に適用できる。
図12は、本発明の入出力制御システムの第4の実施例の構成を示すブロック図である。入出力制御システムは、入出力制御プログラムとしてのキャッシュ管理部150と、ライトバック部120と、入出力特定プロセス選択部160と、プロセス生成部170と、入出力処理プロセス管理部180とを具備する。パーソナルコンピュータに例示される情報処理装置に、本発明の入出力制御プログラム(入出力制御方法)がインストールされて、本発明の入出力制御システムとして機能する。
プロセス生成部170は、入出力処理プロセス生成部171を含む。キャッシュ管理部150は、従来のキャッシュ管理機構1320(図1)が有するキャッシュ管理機能に加え、入出力特定情報記憶部151を含む。
すなわち、本実施例は、第2の実施例と比較して、キャッシュ管理部150、入出力特定情報記憶部151、プロセス生成部170、入出力処理プロセス生成部171、及び、入出力処理プロセス管理部180が異なる。従って、それら各部について説明する。なお、その他の点は、第2の実施例と同じであるのでその説明を省略する。
プロセス生成部170は、プロセス生成システムコールを、例えば、アプリケーションから受信したとき、プロセスの生成を制御する。プロセス生成部170は、その生成された既存のプロセス生成に加えて、入出力処理プロセス生成部171で入出力処理プロセスを対として生成する。入出力処理プロセスとは、既存のプロセスの入出力要求に対応して、ライトバック部120に代わって、外部記憶装置への入出力要求を発行するプロセスである。今後、既存のプロセスを処理プロセスと呼ぶことにする。
ここで、入出力処理プロセスは、処理プロセス又は処理プロセスのグループごとに生成される。入出力処理プロセスは、図11におけるI/O命令発行プロセス1750に対応する。処理プロセスは、図11におけるプロセス1、2、3に対応する。ライトバック部120は、図11におけるライトバックプロセス1700に対応する。
入出力処理プロセス生成部171は、プロセス生成部170による処理プロセスの生成に対応して、入出力処理プロセスを生成する。入出力処理プロセス生成部171は、入出力処理プロセスを生成したとき、入出力処理プロセス管理部180に入出力処理プロセスに関する情報を送信する。入出力処理プロセス管理部180は、送信された入出力処理プロセスに関する情報を管理する。入出力処理プロセスに関する情報は、入出力処理プロセスの識別子と対応する処理プロセスの識別子とを含む。管理方法としては、例えば、管理表にして記憶させることができる。管理表は、例えば、処理プロセスと、その処理プロセスの識別子又はその処理プロセスのプロセスグループの識別子と、入出力処理プロセスと、その入出力処理プロセスの識別子とを関連付けている。
入出力処理プロセス管理部180は、入出力特定情報記憶部151を参照して入出力処理プロセスに関するキャッシュ使用状況を監視する。一方、処理の終了した処理プロセスが発生したとき、その情報をOSから受け取り、上記管理表の当該処理プロセスに関連付けて記憶する。そして、入出力処理プロセス管理部180は、管理表に記憶された入出力処理プロセスに関するキャッシュ使用状況と処理プロセスの終了状況とに基づいて、以下の動作を実行する。すなわち、対となる処理プロセスが終了し、入出力処理プロセスに関するキャッシュ使用が存在しない場合、もしくは、対となる処理プロセスが終了し、入出力処理プロセスに関する更新ありキャッシュ使用が存在しない場合、入出力処理プロセスを終了させる。
なお、処理の終了した処理プロセスの発生は、キャッシュ管理部150の有する対応表を参照して判断することも可能である。
キャッシュ管理部150は、従来のキャッシュ管理機構1320(図1)が有するキャッシュ管理機能に加え、入出力特定情報記憶部151を含む。
入出力特定情報記憶部151は、入出力特定情報記憶部111と同様に、キャッシュ領域情報と入出力特定情報とを関連付けて記憶する。ここで、入出力特定情報として、処理プロセスの識別子の代わりに入出力処理プロセスの識別子を記憶することもできる。入出力処理プロセスの識別子を記憶させる場合、キャッシュ管理部150は、入出力処理プロセス管理部180へ処理プロセスの識別子に対する入出力処理プロセスの識別子を問い合わせる。
入出力処理プロセス選択部160は、ライトバック部120からのデータ出力要求に対して適切な入出力プロセスを選択する。入出力処理プロセス選択部160は、ライトバック部120からデータ出力要求を受信したとき、入出力特定情報記憶部151を参照して、データ出力要求に含まれるキャッシュ領域の主要入出力特定情報を検出する。そして、その入出力特定情報に基づいて、入出力処理プロセス管理部180の管理表を参照して、その入出力特定情報に対応する入出力処理プロセスを動作させ、データ出力要求を入出力処理プロセスに発行させる。
主要入出力特定情報の検出としては、例えば、出力キャッシュ領域に対して合計容量の割合の一番高い入出力特定情報を選択することができる。主要入出力特定情報検出の別の例として、出力キャッシュ領域に対して入出力優先度が一番高い、すなわち、一番優先する入出力特定情報を選択することができる。主要入出力特定情報検出の別の例として、出力キャッシュ領域に対して最後に更新したキャッシュ領域に対する入出力特定情報を選択することができる。このような入出力特定情報の検出により、優先度等を考慮した出力要求にすることができる。
入出力処理プロセス選択部160は、入出力特定情報として入出力処理プロセスの識別子を記憶している場合、入出力特定情報記憶部151を参照するのではなく、記憶している入出力処理プロセスの識別子から主要入出力特定情報を検出する。
入出力処理プロセス選択部160は、データ入力要求において、新規キャッシュ確保後、外部記憶装置からのデータ入力要求を発行するとき、同様に、データ入力要求に含まれるキャッシュ領域の入出力特定情報を入出力特定情報記憶部151から検出し、対応する入出力処理プロセスを動作させ、データ出力要求を入出力処理プロセスに発行させる。入出力特定情報として入出力処理プロセスの識別子を記憶している場合は、入出力特定情報記憶部151からの検出処理を省く。
上記一連の機能は、通常の処理プロセスと入出力処理プロセスとを対にする代わりに、処理プロセスのプロセスグループに対して一つの入出力処理プロセスを作成し、対応付けて処理することも可能である。すなわち、入出力処理プロセス生成部171はプロセスグループを作成する入出力処理プロセスを作成し、それ以外では、処理プロセスのプロセスグループと入出力処理プロセスを対応付ける。
入出力処理プロセス管理部180は、プロセスグループと入出力処理プロセスの対応関係を監視すると同時に、プロセスグループに対して入出力処理プロセスの終了判定を行う。入出力特定情報記憶部151は、処理プロセスの識別子の代わりにプロセスグループの識別子として記憶することができる。
このように、入出力処理プロセス選択部160は、生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報(データ出力要求の大元の発生元)を、入出力特定情報記憶部151を参照して特定する入出力特定部100と見ることができる。また、入出力スケジューリング部300は、特定された入出力に関する情報を取得して、入出力の要求に関連する処理を実行する入出力要求処理部101と見ることができる。
次に、本発明の出力制御システムの第4の実施例の動作(入出力制御方法、入出力制御プログラムの実施例)について、図12〜図16を参照して説明する。ただし、図13乃至図16は、本発明の出力制御システムの第4の実施例の動作を示すフローチャートである。
本実施例の動作は、第2の実施例における外部記憶装置への入出力要求をする部分、すなわち、図6のフローチャートで示す入力要求処理、及び、図8のフローチャートで示すライトバック処理が異なり、更に、入出力処理プロセス生成処理が加わっている点で異なる。なお、出力要求処理の動作は、第2の実施例と同じであるのでその説明を省略する。
図13を参照して、処理プロセスからのデータの入力要求に対する動作について説明する。
データ入力要求が処理プロセスの入出力要求部200から発行された場合、キャッシュ管理部150は、要求されたデータ領域が既に確保されているかどうかをチェックする(ステップS501)。
ステップS501にて、キャッシュ上にデータ領域が未だ確保されていない場合(ステップS501:NO)、キャッシュ管理部150は、空きメモリ領域から新規キャッシュ領域を確保し、該当データ領域としてキャッシュ管理情報(例示:対応表(マッピングテーブル))に登録する(ステップS502)。
ステップS501にて、キャッシュ上にデータ領域が既に確保されている場合(ステップS501:YES)、キャッシュ管理部150は当該キャッシュ上に既にデータが存在するかどうかをチェックする(ステップS503)。
ステップS503にて、データ領域に対応するキャッシュ上のデータが存在しない場合(ステップS503:NO)、又は、ステップS502で新規キャッシュ領域を確保した場合、そのキャッシュ領域にデータを転送するために、キャッシュ管理部150は、外部出力装置に対するデータ入力要求を作成し、入出力処理プロセス選択部160へ発行する(ステップS504)。
入出力処理プロセス選択部160は、外部出力装置に対するデータ入力要求を受信した場合、処理プロセスの識別子に基づいて、入出力処理プロセス管理部180へ、対応する入出力処理プロセスの識別子を問い合わせる(ステップS505)。
入出力処理プロセス管理部180は、管理表を参照して、処理プロセスの識別子に対応する入出力処理プロセスの識別子を入出力処理プロセス選択部160へ回答する。入出力処理プロセス選択部160は、入出力処理プロセス管理部180から回答された入出力処理プロセスの識別子の入出力処理プロセスへ、外部出力装置に対するデータ入力要求を発行する(ステップS506)。
入出力処理プロセスは、受信した外部出力装置に対するデータ入力要求を、自身からの入力要求として発行する。それにより、入出力要求スケジューリング部300は、入出力処理プロセスによる入力要求として入力処理を実行する。そのとき、入出力処理プロセスが所定の処理プロセスに対応しているので、入出力要求スケジューリング部300は、その所定の処理プロセスに対応した優先度等に基づく入力制御を実行することができる。その後、入出力要求スケジューリング部300を経て、外部出力からデータの伝送が終了する応答が到着するまで、待機状態に入る(ステップS507)。
ステップS503にて、データ領域に対応するキャッシュ上にデータが存在した場合(ステップS503:YES)、もしくは、ステップS507にて、キャッシュ上へのデータの転送が完了した場合、キャッシュ管理部150は、該当キャッシュからプロセス空間へデータを転送する(ステップS508)。
キャッシュ管理部150は、キャッシュ領域と入出力特定情報を、入出力特定情報記憶部151を介して記憶する。入出力特定情報として入出力処理プロセスの識別子を記憶する場合は、S505のステップと同じ処理を行い、入出力処理プロセスの識別子に変換する(ステップS509)。
以上で、データの入力処理が完了する。
次に、図14を参照して、キャッシュ上の更新データを外部記憶装置へ反映させるライトバック処理の動作について説明する。
ライトバック処理要求のタイミングを契機に、ライトバック部120は起動する(フローチャート開始)。
ライトバック部120は、キャッシュ管理部150の管理情報を参照して、前述の種々のポリシーを基に、キャッシュ上から更新すべきデータ領域を回収する(ステップS601)。ライトバック部120は、回収したキャッシュ領域に対するデータ出力要求を作成し、入出力処理プロセス選択部160へ発行する(ステップS602)。
入出力処理プロセス選択部160は、受信したデータ出力要求に対して、入出力特定情報記憶部151の情報を参照し、データ出力要求に対する主要処理プロセスを特定する。そして、処理プロセスの識別子に基づいて、入出力処理プロセス管理部180へ、対応する入出力処理プロセスの識別子を問い合わせる。入出力処理プロセス管理部180は、管理表を参照して、処理プロセスの識別子に対応する入出力処理プロセスの識別子を入出力処理プロセス選択部160へ回答する。一方、入出力特定情報として入出力処理プロセスの識別子が記憶されている場合、入出力特定情報記憶部151の情報を参照し、主要な入出力処理プロセスを決定する(ステップS603)。
入出力処理プロセス選択部160は、回答、または、決定された入出力処理プロセスの識別子の入出力処理プロセスへ外部出力装置に対するデータ出力要求を発行する(ステップS604)。
入出力処理プロセスは、受信した外部出力装置に対するデータ入力要求を、自身からの出力要求として発行する(ステップS605)。それにより、入出力要求スケジューリング部300は、入出力処理プロセスによる出力要求として出力処理を実行する。そのとき、入出力処理プロセスが所定の処理プロセスに対応しているので、入出力要求スケジューリング部300は、その所定の処理プロセスに対応した優先度等に基づく出力制御を実行することができる。
ライトバック部120、および、入出力処理プロセス選択部160は、ステップS601乃至S605までを行い、最初に決定された容量分のキャッシュからのデータ出力要求が行われていない場合(ステップS606:NO)、再度、探索範囲を変える、各種パラメータを変更する等をして、外部出力装置へのデータ反映条件を変更してステップS301乃至S305を繰り返す。
ステップS606において、決定された容量のキャッシュからのデータ出力要求が行われた場合、更新データがキャッシュ上にない場合、又は、一定回数のキャッシュ領域の探索が終了した場合(ステップS606:YES)、繰り返しを終了する。
最後に、ライトバック部120は、データ出力に対する外部記憶装置の応答を待ち、更新フラグをクリアする(ステップS607)。
以上により、キャッシュ上の更新データを外部記憶装置へ反映させるライトバック処理が完了する。
次に、図15を参照して、プロセス生成の動作について説明する。
プロセス生成部170は、プロセス生成システムコールを、例えば、アプリケーションから受信したとき、既存のプロセス生成処理、すなわち、処理プロセスの生成を行う。(ステップS701)
プロセス生成部170は、入出力処理プロセス生成部171を呼び出し、入出力処理プロセス生成に入る。入出力処理プロセス生成部171は、生成された処理プロセスに対して、対となる入出力処理プロセスが生成されていないかチェックする(ステップS702)。これは、プロセスグループごとに入出力処理プロセスが生成される場合に起こりうる。一つの入出力処理プロセスは、複数の処理プロセスに対して生成されるからである。処理プロセスに対して、必ず対となる入出力処理プロセスが生成される場合、ステップS702を省略しても良い。
対となる入出力処理プロセスが生成されていない場合(ステップS702:NO)、入出力処理プロセス生成部171は入出力処理プロセスを生成する。(ステップS703)
入出力処理プロセス生成部171は、処理プロセスと対となる入出力処理プロセスの識別情報を入出力処理プロセス管理部180へ発行し、入出力処理プロセス管理部180は、処理プロセスと、対となる入出力処理プロセスの識別情報との対応関係を記録する(ステップS704)。
以上により、プロセス生成処理が完了する。
次に、図16を参照して、入出力処理プロセスの終了判定、および、終了の動作について説明する。
入出力処理プロセス終了の判定は、何らかのイベントが発生じたときに動作する。発生イベントの例としては、時間間隔、入出力特定情報の変更、キャッシュ情報の変更、処理プロセスの終了等が挙げられる。イベント発生を契機に、入出力処理プロセス管理部180は、入出力処理プロセスに対して、対となる処理プロセスが1つでも存在するかどうかを管理表によりチェックする(ステップS801)。
対となる処理プロセスが1つも存在しない場合、入出力処理プロセス管理部180は、入出力処理プロセスに対して、関係があるキャッシュ領域が存在するかどうかを対応表によりチェックする(ステップS802)。関係があるキャッシュ領域とは、例えば、入出力処理プロセスの対となる処理プロセスが入出力要求を行ったキャッシュ領域のことである。関係があるキャッシュ領域の別の例としては、入出力処理プロセスの対となる処理プロセスが入出力要求を行ったキャッシュ領域で、更新データを保存している領域のことである。
対となる処理プロセスが1つも存在しなく、関係があるキャッシュ領域が存在しない場合は、入出力処理プロセスを終了する(ステップS803)。
ステップS801、および、ステップS802において、対となる処理プロセスが1つも存在した場合、または、関係があるキャッシュ領域が存在した場合は、何も処理しない。
以上により、入出力処理プロセスの終了判定、および、終了処理が完了する。
次に、本実施例の効果について説明する。
本実施例では、処理プロセスに対応した入出力処理用のプロセスを明示的に生成させ、必ず入出力処理用のプロセスにより命令を発行させることで、入出力スケジューリング部300へプロセスに対する一定の入出力特定情報を伝播することができる。これにより、キャッシュを用いた入出力においても設定された入出力スケジューリングの機能を提供でき、性能低下、応答性低下を回避することができる。
更に、追加の効果として、入出力処理に対してプロセス情報等の変更を行わないため、一貫したプロセス情報管理下での動作を保証することができる。例えば、プロセスの識別子を変更する必要もなく、入出力スケジューリング部の情報取得APIに対する変更を必要としないため、一貫したプロセスの識別子の管理と、その下での無修正の入出力スケジューリング部で実現することが可能になる。
上記第4の実施例においても、第2の実施例から第3の実施例に拡張したように、第2の実施例を適用することが可能である。すなわち、第3の実施例にキャッシュ確保部142を導入し、キャッシュ領域の確保の可否を決定付けることができる。
上記第2の実施例から第4の実施例では、入出力要求処理部101として、入出力スケジューリング部300を例に挙げて説明している。しかし、入出力要求処理部101として、入出力の監視、制御を行う入出力要求管理部を用いることも可能である。
入出力要求管理部が入出力の監視を行う場合の例としては、モニタの機能を果たす入出力モニタ部として動作することができる。例えば、プロセス、プロセスグループ、入出優先度、又は、外部記憶装置ごとの入出力回数や入出力データ量、スループットを監視し、統計データとして計測することができる。この場合にも、本発明の入出力特定情報記憶部111、151と入出力特定情報復元部130、又は、入出力処理プロセス選択部160の機能により、正しく大元のプロセス、もしくは、対応する入出力プロセスを特定することが可能であり、プロセスごとの入出力を識別することが可能となるためである。
入出力要求管理部が入出力の制御を行う場合の例としては、入出力要求の処理の可否を決定する入出力アクセスコントロール部として動作することができる。例えば、プロセス、プロセスグループと外部記憶装置との関係から、正常動作か異常動作かの判定に基づき、アクセスの可否を決定することができる。この場合にも、本発明の入出力特定情報記憶部111、151と入出力特定情報復元部130、又は、入出力処理プロセス選択部160の機能により、正しく大元のプロセス、もしくは、対応する入出力プロセスを特定することが可能であり、プロセスごとの入出力を識別することが可能となるためである。
(具体例1)
次に、本発明の第1具体例について説明する。図17は、本発明の入出力制御システムとしての計算機システム装置の具体例を示すブロック図である。入出力制御システムとしての計算機システム装置は、入主記憶装置1、主記憶制御装置2、演算装置3、入出力制御部4、外部記憶装置5及びバス6を具備する。
第2の実施例におけるキャッシュ管理部110、ライトバック部120、出力特定情報復元部130、第3の実施例におけるキャッシュ管理部140、ライトバック部120、入出力特定情報復元部130、第4の実施例におけるキャッシュ管理部150、ライトバック部120、入出力処理プロセス選択部160、プロセス生成部170、入出力処理プロセス管理部180は、入出力情報特定プログラム12として、例えば外部記憶装置5に記憶されている。そして、その入出力情報特定プログラム12は、動作時に、外部記憶装置5から読み出されて主記憶装置1上に展開され、演算装置3により実行される。
計算機システム装置を動作させる基盤プログラムであるオペレーティングシステム(OS)11といくつかのプロセス(AP)13とは、例えば外部記憶装置5に記憶されている。そして、それらOS11やAP13は、動作時に、外部記憶装置5から読み出されて主記憶装置1上に展開され、演算装置3により実行される。なお、入出力要求部200はAP13が有している。
キャッシュ14は、主記憶装置1の未使用領域に、キャッシュ領域として確保され、利用される。
入出力情報特定プロセス12は、図6乃至図8、図10、又は、図13乃至図16のフローチャートの動作により、キャッシュ14を用いた入出力において、入出力情報を管理、監視し、入出力スケジューリング部300へと入出力特定情報を伝達する。
なお、図においては、OS11と入出力情報特定プログラム12とを分けているが、入出力情報特定プログラム12はOS11内部に取り込まれ、OS11と一体に動作するものであっても良い。
第1乃至第4の実施例において、入出力スケジューリング部300は、例えば、OS11の一機能と実施することができる。入手力スケジューリング部300は、外部記憶装置へのデータの入出力要求に対して、入出力特定情報を基に要求順序の入れ替え、統合、分割を行い、スループットと応答性と向上させるように動作する。入れ替えられた順序に基づき、入出力制御装置4を通して発行され、外部記憶装置5へ入出力が行われる。
また別の例として、入出力スケジューリング部300は、入出力制御装置4の機能として実施することができる。入出力制御装置4において、入出力特定情報を基に最終的な要求順序の入れ替え、統合、分割を行い、スループットと応答性と向上させるように動作する。
次に、従来の入出力要求の受理と本発明の具体例における入出力要求の受理の違いの例を、図面を参考にして説明する。図18は、本発明におけるキャッシュを用いた入出力を説明する概念図である。
図18に示される例では、データの入出力要求の表現は、図1の場合と同様に“x−y”、“RB(x−y)”の表現を用いる。また、入出力スケジューラ1400、1500はOS11の機能として実現され、プロセスあたり1要求ごとに均等に処理をする。更に、キャッシュ1300、外部記憶装置1700は、それぞれキャッシュ14、外部記憶装置5に対応する。
更に、ライトバックの方法としてはアクセスが古いものほど最初に処理する方法をとる。また、各プロセスの入出力は、説明を簡単にするために、書込みのみとし、プロセスが切り替わるたびにキャッシュへの書き込みは2要求分を要求することとする。
キャッシュ1300には、プロセス1から開始され、2要求分(“1−1”、“1−2”)が書き込まれる。続いて、プロセス2へと切り替わり、2要求分(“2−1”、“2−2”)が書き込まれる。これが繰り返されて、図15キャッシュ1300のようにキャッシュ領域が利用される。
これに対して、ライトバック部120は、ライトバックプロセス(RB)1600として動作し、古い順番、すなわち、キャッシュの左端(“1−1”)からライトバックする。すなわち、キャッシュ領域“1−1”の外部記憶装置1700へのデータ出力要求を生成し、入出力スケジューラ部300へと発行する。
ここで、従来の入出力要求の発行方法では、入出力スケジューラ1400ではすべてライトバックプロセスからのデータ出力要求、すなわち、同一プロセスからのデータ出力要求と判定される。すなわち、同一プロセスからのデータの出力要求のため、スケジューリングによる入れ替えは発生せず、入出力スケジューラ内の処理順番は図18に示される入出力スケジューラ1400の内部の入出力要求1410の列のように、プロセスあたり2要求分ずつ処理することになる。これでは、本来の入出力スケジューラのポリシーのとおりに、プロセスあたり1要求ごとに均等に処理をすることが満たされない。
本発明を適用すると、入出力特定情報としてプロセスを識別する情報を伝達するため、“RB(x−y)”として発行されていたデータ出力要求は、元のプロセスxからのデータ出力要求であると伝達する。そのため、各プロセスに均等に処理するように入出力スケジューラにより順序変更がなされ、図18の入出力スケジューラ1500の内部の入出力要求1510の列のように、プロセスあたり1要求分ずつ処理することができる。これにより、本来の入出力スケジューラのポリシーのとおりに動作することができる。
第4の実施例では、入出力要求の情報が元のプロセス識別子に変更されるわけでなく、対になる入出力処理プロセスからの要求になるだけである。例えば、プロセス1に対して入出力処理プロセス3、プロセス2に対して入出力処理プロセス4を生成した場合、プロセスxのy番目に対応するデータ要求を入出力処理プロセスzが発行したときを“z(x−y)”と表現すると、入出力スケジューラ1500の処理順番は“3(1−1)、4(2−1)、3(1−2)、4(2−2)、…”となる。
キャッシュ容量において、領域制限しても同様のことがいえる。
キャッシュ領域を制限したとしても、データ出力要求はライトバックプロセスから出力され、入出力スケジューラの段階では一元化され順番に処理されることに変わりはなく、ライトバックプロセスの動作やスケジューリングに大きく影響する。すなわち、制限したキャッシュ領域に対して初期の書込みはキャッシュとして未使用状態であるため、キャッシュ確保問題における性能低下を防ぐことにつながる。しかし、キャッシュ領域を使用しつくした状態からは、すべて外部記憶装置への入出力を伴うことになる。ライトバックプロセスによりデータ出力要求は一元化されて動作することにより、入出力スケジューラが既に保持している他プロセスに対する出力要求を処理しなければ、新たな出力要求に応答することはできない。そのため、キャッシュのときと同様の性能低下、応答性低下を招くことになる。これに対して、本発明を適用すると、従来技術のキャッシュ制限によるキャッシュ領域確保時の他のプロセスからの影響を避けると同時に、入出力スケジューラにおける他のプロセスからの影響を防ぐことができる。
(具体例2)
本発明は、2種類の速度の異なる記憶装置が存在する場合に、高速な記憶装置をキャッシュとして利用し、低速な記憶装置に対する入出力を高速化する計算機システムにおいても実現できる。例えば、高速な記憶装置としてUSBメモリやフラッシュメモリなどを利用し、それらをHDDやDVD装置の低速な記憶装置のためのキャッシュとして利用することがあげられる。この場合、第1具体例において、主記憶装置上に確保されていたキャッシュ領域が、高速な記憶装置上に確保されていることに相当する。
図19を参照して、第2具体例を説明する。図19は、本発明の入出力制御システムとしての計算機システム装置の第2具体例を示すブロック図である。入出力制御システムとしての計算機システム装置は、主記憶装置1、主記憶制御装置2、演算装置3、低速な外部記憶装置5、低速な外部記憶装置5のための入出力制御装置4、高速な外部記憶装置9、高速な外部記憶装置9のための入出力制御装置8、及び、バス6を具備する。
第2の実施例におけるキャッシュ管理部110、ライトバック部120、入出力特定情報復元部130、第3の実施例におけるキャッシュ管理部140、ライトバック部120、入出力特定情報復元部130、第4の実施例におけるキャッシュ管理部150ライトバック部120、入出力処理プロセス選択部160、プロセス生成部170、入出力処理プロセス管理部180は、入出力情報特定プログラム12として、主記憶装置1上に展開され、演算装置3により実行される。なお、入出力要求部200はAP13が有している。
キャッシュ14は、高速な外部記憶装置9に、キャッシュ領域として確保され、利用される。
入出力情報特定プロセス12は、プロセス(AP)13が低速な外部記憶装置5への入出力を要求するとき、図6乃至図8、図10、又は、図13乃至図16のフローチャートの動作により、キャッシュ14を用いた入出力において、入出力情報を管理、監視し、入出力スケジューリング部300へと入出力情報を伝達する。
また、図19において、主記憶装置1と高速な外部記憶装置9の間で、キャッシュを用いた入出力の高速化を実施することができる。すなわち、多段のキャッシュ機構を構築できる。このような場合であっても、第1具体例と同様なことを主記憶装置1と高速な外部記憶装置9の間で実施し、かつ、高速な外部記憶装置9と低速な外部記憶装置5の間で第2具体例を実現することで、入出力特定情報を伝達し、各入出力を制御する様々な入出力スケジューリング部300にて入出力を制御することが可能になる。
同様に、速度の異なる複数の記憶装置が存在し、より高速な記憶装置をより低速な記憶装置の入出力を高速化するためのキャッシュとして利用する計算機システムにおいて、それぞれのキャッシュ管理機構に本発明を適用することができる。
また、本発明の第1乃至第3の実施例は、図17の入出力制御装置4の内部で実現することができる。例えば、IDE制御チップや、SCSIカード、RAIDカードなどで実現できる。例えば、図20に示すように、図17の入出力制御装置4に相当する入出力制御装置20は、キャッシュメモリ21と、入出力要求制御回路22と、入出力特定情報伝達回路23と、計算機システムのバスと接続するインタフェース24と外部記憶装置と接続するインタフェース25を備える。
キャッシュメモリ21は、高速な入出力が可能な記憶装置である。例えば、NANDフラッシュメモリなどで実現される。入出力の一時貯蓄場所となる。入出力要求制御回路22は、計算機システムのバスからインタフェース24を介して伝達される入出力要求を、対応する外部記憶装置へインタフェース25を介して発行する。このとき、キャッシュメモリ21をキャッシュ領域として使用し、入出力の高速化を図る。RAIDカードなどでは、1つの入出力要求を同時に対応する複数の外部記憶装置へ発行し、外部記憶装置との入出力を並列化することで高速化することができる。このときも、キャッシュメモリ21を一時記憶場所として利用する。
入出力要求制御回路22に、本発明の第2の実施例におけるキャッシュ管理部110、ライトバック部120、入出力特定情報復元部130、第3の実施例におけるキャッシュ管理部140、ライトバック部120、入出力特定情報復元部130を実現する入出力特定情報伝達回路を組み込ことで、入出力要求制御回路22は図6乃至図8、又は、図10のフローチャートの動作により入出力スケジューリング部300へ入出力特定情報を伝達する。
回路の実現方法としては、例えば、RAMを用いて入出力特定情報を記憶する入出力記憶回路と、本発明のフローチャートの動作を実現する入出力情報伝達回路とを、電気素子を用いて実現できる。これらをシステムLSIとして一つのチップ内に組み込んで実現することもできる。
また、別の回路の実現方法として、プログラミング可能なLSIを用いて、本発明のフローチャートの動作するプログラムと入出力特定情報を記憶する記憶スペースをプログラミングすることで実現することができる。例えば、FPGA(Field Programmable Gate Array)などが挙げられる。
入出力スケジューリング部300は、例えば、入出力要求制御回路に組み込まれており、インタフェース24を介して計算機システムから要求された外部記憶装置への入出力を、入出力特定情報を基に要求順序を入れ替えたりすることができる。
また、別の例として、外部記憶装置5の機能として実施することができる。
同様に、キャッシュメモリを保有し、キャッシュを利用した入出力の高速化を実現している外部記憶装置においても、外部記憶装置内部のキャッシュ管理回路に本発明を実施ことができる。
同様に、記憶媒体を一時記憶場所として利用する全ての入出力装置において、管理部に本発明を実施することができる。
本発明によれば、パーソナルコンピュータ(PC)や端末機器で多くのプロセスを起動したときの入出力の制御装置のような用途に適用できる。また、仮想計算機技術を用いる仮想化ソリューションやシンクライアントソリューションにおいて、それぞれの仮想計算機やクライアントの入出力の制御装置のような用途に適用できる。また、RAIDなどの複数の外部記憶装置を制御するための入出力制御装置のような用途に適用できる。
本発明におけるプログラムは、コンピュータ読取可能な記憶媒体に記録され、その記憶媒体から情報処理装置に読み込まれても良い。
本発明により、キャッシュによる入出力機構において、入出力スケジューラがスケジューリングを適切に実行可能となる。
本発明は上記各実施例に限定されず、本発明の技術思想の範囲内において、各実施例は適宜変形又は変更され得ることは明らかである。
この出願は、2007年6月5日に出願された特許出願番号2007−149489号の日本特許出願に基づいており、その出願による優先権の利益を主張し、その出願の開示は、引用することにより、そっくりそのままここに組み込まれている。

Claims (33)

  1. 第1記憶部及び第2記憶部を具備し、前記第1記憶部の一部または全部をキャッシュ領域として用い、入出力処理を行う情報処理装置の入出力制御システムであって、
    前記第2記憶部に入出力するデータを第前記キャッシュ領域へ記憶するキャッシュ管理部と、
    前記キャッシュ領域に記憶されたデータのデータ領域と、前記入出力に関する情報とを関連付けて記憶する入出力特定情報記憶部と、
    前記キャッシュ領域前記データ領域から前記第2記憶部への前記データの出力要求を生成するライトバック部と、
    前記生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、前記入出力特定記憶部を参照して、特定し、前記ライトバック部の動作により特定できなくなった入出力に関する情報を前記第2記憶部の入出力処理部へ伝達する入出力特定部とを備え、
    前記入出力に関する情報は、前記入出力の発行元を特定する情報、前記入出力の発行元に応じた優先度のいずれか一つを少なくとも含む
    入出力制御システム。
  2. 請求項1に記載の入出力制御システムにおいて、
    前記入出力特定部が、
    前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部を参照して、前記ライトバック部の動作により特定できなくなった入出力に関する情報を復元する入出力特定情報復元部であり、
    前記入出力に関する情報を復元することで伝達する
    入出力制御システム。
  3. 請求項2に記載の入出力制御システムにおいて、
    復元方法が、関連処理部の情報取得時に前記出力要求に入出力に関する情報を一時的に変更する、または、変換処理を加えることで実現する
    入出力制御システム。
  4. 請求項2又は3記載の入出力制御システムにおいて、
    前記出力要求を、前記復元された入出力に関する情報を参照して、管理する入出力要求管理部を更に備え、
    前記入出力特定部は、前記復元された入出力に関する情報に基づいて、前記出力要求に対する処理を決定する
    入出力制御システム。
  5. 請求項4に記載の入出力制御システムにおいて、
    前記入出力要求管理部が、入出力をスケジューリングする入出力スケジューリング部、入出力の監視、及び統計をとる入出力モニタ部、入出力のアクセスを制御する入出力アクセスコントロール部のいずれか一つの機能を少なくとも含む
    入出力制御システム。
  6. 請求項2乃至5のいずれか一項に記載の入出力制御システムにおいて、
    前記ライトバック部は、前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記キャッシュ領域から前記第2記憶部へ出力するデータ領域を決定する
    入出力制御システム。
  7. 請求項1に記載の入出力制御システムにおいて、
    前記入出力に関する情報は、前記入出力を発行したプロセス又はプロセスグループを特定する情報、入出力優先度第2記憶部のいずれか一つを少なくとも含む
    入出力制御システム。
  8. 請求項1に記載の入出力制御システムにおいて、
    プロセスを生成するプロセス生成部に含まれ、前記プロセスに対応する入出力要求発行を担当する入出力処理プロセスを生成する入出力処理プロセス生成部と、
    前記プロセスと前記入出力処理プロセスとを関連付けて管理する入出力処理プロセス管理部とを更に備え、
    前記入出力特定部が、
    前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部及び前記入出力処理プロセス管理部を参照して、前記入出力に関する情報に対応し前記プロセスに対応する前記入出力処理プロセスを選択する入出力処理プロセス選択部であり、
    選択された前記入出力処理プロセスが、前記出力要求を発行することにより、前記入出力に関する情報を対応する入出力処理プロセスに関連付けることで伝達する
    入出力制御システム。
  9. 請求項に記載の入出力制御システムにおいて、
    前記入出力特定部が、
    前記プロセスによる入力要求の応答に関しても、前記データ領域に基づいて、前記入出力処理プロセス管理部を参照して、前記プロセスに対応する前記入出力処理プロセスを選択する入出力処理プロセス選択部であり、
    選択された前記入出力処理プロセスが、前記入力要求を発行することにより、前記入出力に関する情報を対応する入出力処理プロセスに関連付けることで伝達する
    入出力制御システム。
  10. 請求項又はに記載の入出力制御システムにおいて、
    前記入出力要求を、前記選択された入出力処理プロセスの処理として管理する入出力要求管理部を更に備え、
    前記入出力要求管理部は、前記プロセスと前記入出力処理プロセスとが関連付けられていることにより、前記入出力処理プロセスの入出力を、間接的に前記プロセスの入出力として管理することが可能である
    入出力制御システム。
  11. 請求項乃至10のいずれか一項に記載の入出力制御システムにおいて、
    前記ライトバック部は、前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記キャッシュ領域から前記第2記憶部へ出力する記憶領域を決定する
    入出力制御システム。
  12. 請求項に記載の入出力制御システムにおいて、
    前記入出力に関する情報は、前記入出力を発行したプロセス又はプロセスグループを特定する情報、入出力優先度第2記憶部のいずれか一つを少なくとも含む
    入出力制御システム。
  13. 請求項乃至11のいずれか一項に記載の入出力制御システムにおいて、
    前記入出力に関する情報は、前記入出力要求を発行するプロセスを特定する情報を含む
    入出力制御システム。
  14. 請求項13に記載の入出力制御システムにおいて、
    前記入出力に関する情報は、入出力処理プロセス又は入出力処理プロセスグループを特定する情報を含む
    入出力制御システム。
  15. 請求項2乃至14のいずれか一項に記載の入出力制御システムにおいて、
    前記キャッシュ管理部は、前記キャッシュ領域に前記データを記憶するためのキャッシュを確保するとき、前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記確保の可否を決定する
    入出力制御システム。
  16. 第1記憶部及び第2記憶部を具備し、前記第1記憶部の一部または全部をキャッシュ領域として用い、入出力処理を行う情報処理装置の入出力制御方法であって、
    前記第2記憶部に入出力するデータを、前記キャッシュ領域へ記憶するステップと、
    前記キャッシュ領域へ記憶されたデータのデータ領域と、前記入出力に関する情報とを関連付けて入出力特定情報記憶部に記憶するステップと、
    前記キャッシュ領域のデータ領域から前記第2記憶部への前記データの出力要求を生成するステップと、
    前記生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、前記入出力特定情報記憶部を参照して、特定し、前記出力要求を生成するステップにより特定できなくなった入出力に関する情報を前記第2記憶部の入出力処理ステップへ伝達するステップとを備え、
    前記入出力に関する情報は、前記入出力の発行元を特定する情報、前記入出力の発行元に応じた優先度のいずれか一つを少なくとも含む
    入出力制御方法。
  17. 請求項16に記載の入出力制御方法において、
    前記出力要求を生成するステップにより特定できなくなった入出力に関する情報を第2記憶部の入出力処理ステップへ伝達するステップは、
    前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部を参照して、前記出力要求を生成するステップにより特定できなくなった入出力に関する情報を復元するステップであり、
    前記入出力に関する情報を復元することで伝達する
    入出力制御方法。
  18. 請求項17に記載の入出力制御システムにおいて、
    復元方法が、関連処理部の情報取得時に前記出力要求に入出力に関する情報を一時的に変更する、または、変換処理を加えることで実現する
    入出力制御方法。
  19. 請求項16乃至18のいずれか一項に記載の入出力制御方法において、
    前記出力要求を、前記復元された入出力に関する情報を参照して、管理するステップを更に備え、
    前記特定するステップは、
    前記復元された入出力に関する情報に基づいて、前記出力要求に対する処理を決定するステップを更に有する
    入出力制御方法。
  20. 請求項16乃至19のいずれか一項に記載の入出力制御方法において、
    前記管理するステップは、
    入出力をスケジューリングする、入出力の監視及び統計をとる、入出力のアクセスを制御する、のいずれか一つを少なくとも実行するステップを有する
    入出力制御方法。
  21. 請求項16乃至20のいずれか一項に記載の入出力制御方法において、
    前記生成ステップは、
    前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記キャッシュ領域から前記第2記憶部へ出力するデータ領域を決定するステップを有する
    入出力制御方法。
  22. 請求項16に記載の入出力制御方法において、
    前記入出力に関する情報は、前記入出力を発行したプロセス又はプロセスグループを特定する情報、入出力優先度第2記憶部のいずれか一つを少なくとも含む
    入出力制御方法。
  23. 請求項16に記載の入出力制御方法において、
    プロセスを生成するプロセス生成部に含まれ、前記プロセスに対応する入出力要求発行を担当する入出力処理プロセスを生成するステップと、
    前記プロセスと前記入出力処理プロセスとを関連付けて管理するステップとを更に備え、
    前記出力要求を生成するステップにより特定できなくなった入出力に関する情報を第2記憶部の入出力処理ステップへ伝達するステップは、
    前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部及び前記入出力プロセス管理部を参照して、前記入出力に関する情報に対応し前記プロセスに対応する前記入出力処理プロセスを選択するステップであり、かつ、選択された前記入出力処理プロセスが、前記出力要求を発行するステップとを有し、
    選択された前記入出力処理プロセスが、前記出力要求を発行することにより、前記入出力に関する情報を対応する入出力処理プロセスに関連付けることで伝達する
    入出力制御方法。
  24. 請求項23に記載の入出力制御方法において、
    前記入出力処理プロセスを選択するステップが、
    前記プロセスによる入力要求の応答に関しても、前記データ領域に基づいて、前記入出力処理プロセス管理部を参照して、前記プロセスに対応する前記入出力処理プロセスを選択するステップであり、
    選択された前記入出力処理プロセスが、前記入出力要求を発行するステップとを更に備える
    入出力制御方法。
  25. 請求項23又は24に記載の入出力制御方法において、
    前記入出力要求を、前記選択された入出力処理プロセスの処理として管理するステップを更に備え、
    前記入出力要求を管理するステップは、
    前記プロセスと前記入出力処理プロセスとが関連付けられていることにより、前記入出力処理プロセスの入出力を、間接的に前記プロセスの入出力として管理するステップを有する
    入出力制御方法。
  26. 請求項23乃至25のいずれか一項に記載の入出力制御方法において、
    前記生成するステップは、
    前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記キャッシュ領域から前記第2記憶部へ出力する記憶領域を決定するステップを有する
    入出力制御方法。
  27. 請求項23に記載の入出力制御方法において、
    前記入出力に関する情報は、前記入出力を発行したプロセス又はプロセスグループを特定する情報、入出力優先度第2記憶部のいずれか一つを少なくとも含む
    入出力制御方法。
  28. 請求項23乃至26のいずれか一項に記載の入出力制御方法において、
    前記入出力に関する情報は、前記入出力要求を発行するプロセスを特定する情報を含む
    入出力制御方法。
  29. 請求項28に記載の入出力制御方法において、
    前記入出力に関する情報は、入出力処理プロセス又は入出力処理プロセスグループを特定する情報を含む
    入出力制御方法。
  30. 請求項16又は29に記載の入出力制御方法において、
    前記データを前記キャッシュ領域へ記憶するステップは、
    前記キャッシュ領域に前記データを記憶するためのキャッシュを確保するとき、前記入出力特定情報記憶部の前記入出力に関する情報を参照して、前記確保の可否を決定するステップを有する
    入出力制御方法。
  31. 第1記憶部及び第2記憶部を具備し、前記第1記憶部の一部または全部をキャッシュ領域として用い、入出力処理を行う情報処理装置の入出力制御方法をコンピュータに実行させるプログラムであって、
    前記第2記憶部に入出力するデータを、第1記憶部前記キャッシュ領域へ記憶するステップと、
    前記キャッシュ領域へ記憶されたデータのデータ領域と、前記入出力に関する情報とを関連付けて入出力特定情報記憶部に記憶するステップと、
    前記キャッシュ領域のデータ領域から前記第2記憶部への前記データの出力要求を生成するステップと、
    前記生成された出力要求の対象であるデータのデータ領域に関連付けられた入出力に関する情報を、前記入出力特定情報記憶部を参照して、特定し、前記出力要求を生成するステップにより特定できなくなった入出力に関する情報を前記第2記憶部の入出力処理ステップへ伝達するステップと
    を備え、
    前記入出力に関する情報は、前記入出力の発行元を特定する情報、前記入出力の発行元に応じた優先度のいずれか一つを少なくとも含む入出力制御方法をコンピュータに実行させるプログラム。
  32. 請求項31に記載のプログラムにおいて、
    前記出力要求を生成するステップにより特定できなくなった入出力に関する情報を第2記憶部の入出力処理ステップへ伝達するステップは、
    前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部を参照して、前記出力要求を生成するステップにより特定できなくなった入出力に関する情報を復元するステップである
    プログラム。
  33. 請求項31に記載のプログラムにおいて、
    プロセスを生成するプロセス生成部に含まれ、前記プロセスに対応する入出力要求発行を担当する入出力処理プロセスを生成するステップと、
    前記プロセスと前記入出力処理プロセスとを関連付けて管理するステップとを更に備え、
    前記出力要求を生成するステップにより特定できなくなった入出力に関する情報を第2記憶部の入出力処理ステップへ伝達するステップは、
    前記出力要求に応答して、前記データ領域に基づいて、前記入出力特定情報記憶部及び前記入出力プロセス管理部を参照して、前記出力要求を生成するステップにより特定できなくなった入出力に関する情報に対応し前記プロセスに対応する前記入出力処理プロセスを選択するステップであり、かつ、選択された前記入出力処理プロセスが、前記出力要求を発行するステップとを有する
    プログラム。
JP2009517771A 2007-06-05 2008-05-19 入出力制御システム、入出力制御方法、及び、入出力制御プログラム Active JP5158576B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009517771A JP5158576B2 (ja) 2007-06-05 2008-05-19 入出力制御システム、入出力制御方法、及び、入出力制御プログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2007149489 2007-06-05
JP2007149489 2007-06-05
JP2009517771A JP5158576B2 (ja) 2007-06-05 2008-05-19 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
PCT/JP2008/059119 WO2008149657A1 (ja) 2007-06-05 2008-05-19 入出力制御システム、入出力制御方法、及び、入出力制御プログラム

Publications (2)

Publication Number Publication Date
JPWO2008149657A1 JPWO2008149657A1 (ja) 2010-08-26
JP5158576B2 true JP5158576B2 (ja) 2013-03-06

Family

ID=40093482

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009517771A Active JP5158576B2 (ja) 2007-06-05 2008-05-19 入出力制御システム、入出力制御方法、及び、入出力制御プログラム

Country Status (3)

Country Link
US (1) US8239634B2 (ja)
JP (1) JP5158576B2 (ja)
WO (1) WO2008149657A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011022657A (ja) * 2009-07-13 2011-02-03 Fujitsu Ltd メモリシステムおよび情報処理装置
CN104461931B (zh) * 2014-08-18 2018-04-27 记忆科技(深圳)有限公司 多核存储装置及多核环境的跟踪日志输出处理方法
JP6653710B2 (ja) * 2015-10-02 2020-02-26 株式会社日立製作所 計算機および計算機の制御方法
US10482632B2 (en) 2017-04-28 2019-11-19 Uih America, Inc. System and method for image reconstruction
JP2020170458A (ja) * 2019-04-05 2020-10-15 富士通株式会社 情報処理装置、制御プログラム、及び制御方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03265958A (ja) * 1990-03-15 1991-11-27 Nec Corp 入出力優先度変更方式
JPH05128002A (ja) * 1991-11-01 1993-05-25 Fujitsu Ltd キヤツシユメモリ分割制御方式
JPH06119282A (ja) * 1992-10-05 1994-04-28 Mitsubishi Electric Corp デバイス制御装置及びその優先処理方式
JPH0895896A (ja) * 1994-09-27 1996-04-12 Matsushita Electric Ind Co Ltd 情報記録再生装置用上位接続制御装置
JPH11265262A (ja) * 1998-03-18 1999-09-28 Hitachi Ltd 高速ライトキャッシュディスク装置
JP2005301638A (ja) * 2004-04-12 2005-10-27 Hitachi Ltd ディスクアレイ装置及びディスクアレイ装置のリザーブ解除制御方法
JP2005323245A (ja) * 2004-05-11 2005-11-17 Hitachi Ltd 仮想ストレージの通信品質制御装置
JP2007094995A (ja) * 2005-09-30 2007-04-12 Fujitsu Ltd ディスク記憶装置及びディスク記憶装置のキャッシュ制御方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328956A (ja) 1995-05-30 1996-12-13 Toshiba Corp マルチプロセッサシステムのメモリ管理方式
EP1061449A4 (en) 1998-02-04 2005-12-21 Hitachi Ltd METHOD OF MANAGING ANEMATORY DISK, DISC STRUCTURE AND MEMORY
JP3506024B2 (ja) 1998-12-10 2004-03-15 日本電気株式会社 情報処理装置
JP2001109661A (ja) * 1999-10-14 2001-04-20 Hitachi Ltd キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム
US7062609B1 (en) * 2001-09-19 2006-06-13 Cisco Technology, Inc. Method and apparatus for selecting transfer types
JP4429780B2 (ja) 2004-03-31 2010-03-10 富士通株式会社 記憶制御装置、制御方法、および制御プログラム。
US8279886B2 (en) * 2004-12-30 2012-10-02 Intel Corporation Dataport and methods thereof
US7337280B2 (en) * 2005-02-10 2008-02-26 International Business Machines Corporation Data processing system and method for efficient L3 cache directory management
JP4435705B2 (ja) * 2005-03-14 2010-03-24 富士通株式会社 記憶装置、その制御方法及びプログラム
JP2006350780A (ja) 2005-06-17 2006-12-28 Hitachi Ltd キャッシュ割当制御方法
US8234457B2 (en) * 2006-06-30 2012-07-31 Seagate Technology Llc Dynamic adaptive flushing of cached data
US20080065718A1 (en) * 2006-09-12 2008-03-13 Emc Corporation Configuring a cache prefetch policy that is controllable based on individual requests
US7949834B2 (en) * 2007-01-24 2011-05-24 Qualcomm Incorporated Method and apparatus for setting cache policies in a processor

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03265958A (ja) * 1990-03-15 1991-11-27 Nec Corp 入出力優先度変更方式
JPH05128002A (ja) * 1991-11-01 1993-05-25 Fujitsu Ltd キヤツシユメモリ分割制御方式
JPH06119282A (ja) * 1992-10-05 1994-04-28 Mitsubishi Electric Corp デバイス制御装置及びその優先処理方式
JPH0895896A (ja) * 1994-09-27 1996-04-12 Matsushita Electric Ind Co Ltd 情報記録再生装置用上位接続制御装置
JPH11265262A (ja) * 1998-03-18 1999-09-28 Hitachi Ltd 高速ライトキャッシュディスク装置
JP2005301638A (ja) * 2004-04-12 2005-10-27 Hitachi Ltd ディスクアレイ装置及びディスクアレイ装置のリザーブ解除制御方法
JP2005323245A (ja) * 2004-05-11 2005-11-17 Hitachi Ltd 仮想ストレージの通信品質制御装置
JP2007094995A (ja) * 2005-09-30 2007-04-12 Fujitsu Ltd ディスク記憶装置及びディスク記憶装置のキャッシュ制御方法

Also Published As

Publication number Publication date
WO2008149657A1 (ja) 2008-12-11
US20100174871A1 (en) 2010-07-08
JPWO2008149657A1 (ja) 2010-08-26
US8239634B2 (en) 2012-08-07

Similar Documents

Publication Publication Date Title
US9483187B2 (en) Quality of service implementation in a networked storage system with hierarchical schedulers
US9639469B2 (en) Coherency controller with reduced data buffer
JP5931196B2 (ja) I/oノード及び複数の計算ノードに備えられたキャッシュメモリの制御方法
JP4464378B2 (ja) 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法
US20210089343A1 (en) Information processing apparatus and information processing method
CN106527967A (zh) 减小存储设备中的读命令时延
US10545791B2 (en) Methods to apply IOPS and MBPS limits independently using cross charging and global cost synchronization
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
JP2015520425A (ja) 計算機システム及びその制御方法
JP6244949B2 (ja) 情報処理装置、制御方法、および制御プログラム
US9934147B1 (en) Content-aware storage tiering techniques within a job scheduling system
JP5124430B2 (ja) 仮想マシンの移行方法、サーバ、及び、プログラム
TW200925871A (en) Dynamic logical data channel assignment using time-grouped allocations
JP2009087282A (ja) 並列計算システムおよび並列計算方法
WO2017056219A1 (ja) ストレージ装置およびストレージ装置の制御方法
US9858204B2 (en) Cache device, cache system, and cache method
EP3293625B1 (en) Method and device for accessing file, and storage system
JP5737298B2 (ja) スケジューリング方法およびスケジューリングシステム
US10430233B1 (en) Scheduling computational tasks among multiple classes of storage resources based on job classification
JP2021135538A (ja) ストレージ制御装置及びストレージ制御プログラム
WO2018188959A1 (en) Method and apparatus for managing events in a network that adopts event-driven programming framework
US10824640B1 (en) Framework for scheduling concurrent replication cycles
JP5334048B2 (ja) メモリ装置および計算機
WO2007039933A1 (ja) 演算処理装置
KR102076248B1 (ko) 선택 지연 가비지 컬렉션 방법 및 이를 이용한 메모리 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110408

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120416

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120606

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121202

R150 Certificate of patent or registration of utility model

Ref document number: 5158576

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20151221

Year of fee payment: 3