(57)【要約】【課題】  適切なキャッシュ容量を確保するリソース管理を実現することができる。【解決手段】  サーバ計算機１０は、メモリ１０１とＣＰＵ１０２とを含んで構成され、メモリ１０１は、各プログラム毎に、当該プログラムがディスクキャッシュとして確保するメモリ許容量を記憶し、ＣＰＵ１０２は、プログラムの実行に従ってディスクドライブへアクセスする際に、新規なディスクキャッシュをメモリ１０１に割り当てる場合、当該プログラムに対応するメモリ許容量をメモリ１０１から読み出し、そのメモリ許容量の範囲内に収まるようにメモリ１０１にディスクキャッシュを割り当てる。【選択図】      図１
2006350780.tif 000002
【特許請求の範囲】
【請求項１】
単一のＯＳ上で複数のプログラムを実行する計算機に用いられるキャッシュ割当制御方法であって、
前記計算機は、メモリと処理部とを含んで構成され、前記メモリは、前記各プログラム毎に、当該プログラムがディスクキャッシュとして確保する前記メモリのメモリ許容量を記憶し、
前記処理部は、前記プログラムの実行に従ってディスクドライブへアクセスする際に、新規なディスクキャッシュを前記メモリに割り当てる場合、当該プログラムに対応するメモリ許容量を前記メモリから読み出し、読み出したメモリ許容量の範囲内に収まるように、前記ディスクキャッシュを前記メモリに割り当てることを特徴とするキャッシュ割当制御方法。
【請求項２】
前記処理部は、前記読み出したメモリ許容量の範囲内に収まるように、当該プログラムが確保していた前記メモリを解放した後、前記ディスクキャッシュを割り当てることを特徴とする請求項１に記載のキャッシュ割当制御方法。
【請求項３】
単一のＯＳ上で複数のプログラムを実行する計算機をネットワークを介して複数接続して構成するコンピュータシステムに用いられるキャッシュ割当制御方法であって、
障害が発生した前記計算機上で実行していた前記プログラムを他の前記計算機が前記ネットワークを通じて引き継ぐ場合、
他の前記計算機は、
前記引き継いだプログラムを含む少なくとも２以上の実行プログラムの各々について、各実行プログラム毎のメモリ許容量を記憶部から読み出し、それらの比率に応じて、前記メモリにディスクキャッシュを割り当てることを特徴とするキャッシュ割当制御方法。
【請求項４】
前記障害が復旧した場合、当該復旧した前記計算機は、前記引き継ぎ前の各プログラム毎の前記メモリ許容量を記憶部から読み出し、そのメモリ許容量に基づいて、前記メモリにディスクキャッシュを再割り当てすることを特徴とする請求項３に記載のキャッシュ割当制御方法。
【請求項５】
前記計算機の処理部は、あらかじめ設定された前記各プログラムの優先度に応じて、前記各プログラム毎に、前記メモリにディスクキャッシュを割り当てることを特徴することを特徴とする請求項１または請求項３に記載のキャッシュ割当制御方法。
【請求項６】
前記メモリは、前記各プログラム毎に、前記ディスクキャッシュの推奨割当量をさらに格納し、
前記処理部は、さらに、
前記メモリの空きメモリ量を計算し、
前記各プログラムの推奨割当量を前記メモリから読み出して、それら推奨割当量の合計値が前記計算した空きメモリ量を超えるかどうかを判定し、
判定の結果、前記空きメモリ量を超えない場合、前記各プログラムの推奨割当量を当該各プログラムの前記メモリ許容量として割り当てることを特徴とする請求項１に記載のキャッシュ割当制御方法。
【請求項７】
前記メモリは、前記各プログラム毎に、前記ディスクキャッシュの最大割当量をさらに格納し、
前記処理部は、さらに、
前記メモリの空きメモリ量を計算し、
前記各プログラムの最大割当量を前記メモリから読み出して、それら最大割当量の合計値が前記計算した空きメモリ量を超えるかどうかを判定し、
判定の結果、前記空きメモリ量を超えない場合、前記各プログラムの最大割当量を当該各プログラムの前記メモリ許容量として割り当てることを特徴とする請求項１に記載のキャッシュ割当制御方法。
【請求項８】
前記メモリは、前記各プログラム毎に、当該プログラムの重要性を表す優先度をさらに格納し、
前記処理部は、
前記判定の結果、前記空きメモリを超える場合、前記メモリに格納された前記優先度が高いプログラムから順次、そのプログラムの前記メモリ許容量を優先的に割り当てることを特徴とする請求項６または請求項７に記載のキャッシュ割当制御方法。
【請求項９】
ネットワーク接続された複数の計算機を含んで構成される計算機システムであって、
前記計算機の各々は、単一のＯＳ上で複数のプログラムを実行するとともに、メモリと処理部とを含んで構成され、
前記メモリは、前記各プログラム毎に、当該プログラムがディスクキャッシュとして確保する前記メモリのメモリ許容量を記憶し、
前記計算機の処理部は、
前記各プログラムの実行に従ってディスクドライブへアクセスする際に、新規なディスクキャッシュを前記メモリに割り当てる場合、当該プログラムに対応するメモリ許容量を前記メモリから読み出し、読み出したメモリ許容量の範囲内に収まるように、前記ディスクキャッシュを前記メモリに割り当てることを特徴とする計算機システム。
【請求項１０】
前記計算機の処理部は、前記読み出したメモリ許容量の範囲内に収まるように、当該プログラムが確保していた前記メモリを解放した後、前記ディスクキャッシュを割り当てることを特徴とする請求項９に記載の計算機システム。
【請求項１１】
請求項９に記載の計算機システムにおいて、
障害が発生した前記計算機上で実行していた前記プログラムを他の前記計算機が前記ネットワークを通じて引き継ぐ場合、
前記他の計算機のメモリは、前記各プログラム毎に、前記ディスクキャッシュのメモリ許容量をさらに格納するとともに、
前記他の計算機の処理部は、
前記引き継いだプログラムを含む少なくとも２以上のプログラムの各々について、当該プログラムのメモリ許容量を前記メモリから読み出し、それらの比率に応じて、当該他の計算機のメモリに前記ディスクキャッシュを割り当てることを特徴とする計算機システム。
【請求項１２】
請求項１１に記載の計算機システムにおいて、
前記計算機の障害が復旧した場合、
当該復旧した計算機のメモリは、前記引き継ぎ前の各プログラムの前記メモリ許容量をさらに格納しているとともに、
前記復旧した計算機の処理部は、
前記引き継ぎ前の各プログラムの前記メモリ許容量を前記メモリから読み出し、それらのメモリ許容量に基づいて、当該復旧した計算機のメモリに前記ディスクキャッシュを再割り当てすることを特徴とする計算機システム。
【請求項１３】
前記計算機の処理部は、あらかじめ設定された前記各プログラムの優先度に応じて、前記各プログラム毎に、前記メモリにディスクキャッシュを割り当てることを特徴することを特徴とする請求項９に記載の計算機システム。
【請求項１４】
前記計算機のメモリは、前記各プログラム毎に、前記ディスクキャッシュの推奨割当量をさらに格納し、
前記計算機の処理部は、さらに、
前記メモリの空きメモリ量を計算し、
前記各プログラムの推奨割当量を前記メモリから読み出して、それら推奨割当量の合計値が前記計算した空きメモリ量を超えるかどうかを判定し、
判定の結果、前記空きメモリ量を超えない場合、前記各プログラムの前記推奨割当量を当該各プログラムの前記メモリ許容量として割り当てることを特徴とする請求項９に記載の計算機システム。
【請求項１５】
前記計算機のメモリは、前記各プログラム毎に、前記ディスクキャッシュの最大割当量をさらに格納し、
前記計算機の処理部は、さらに、
前記プログラム毎の最大割当量を前記メモリから読み出して、それら最大割当量の合計値が前記計算した空きメモリ量を超えるかどうかを判定し、
判定の結果、前記空きメモリ量を超えない場合、前記各プログラムの前記最大割当量を各プログラムの前記メモリ許容量として割り当てることを特徴とする請求項９に記載の計算機システム。
【請求項１６】
前記計算機のメモリは、前記各プログラム毎に、当該プログラムの重要性を表す優先度をさらに格納し、
前記計算機の処理部は、
前記判定の結果、前記空きメモリを超える場合、前記メモリに格納された前記優先度が高いプログラムから順次、そのプログラムの前記メモリ許容量を優先的に割り当てることを特徴とする請求項１４または請求項１５に記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクキャッシュを用いてディスクへのアクセスを行うコンピュータにおいて用いられるキャッシュ割当制御方法に関するものである。
【背景技術】
【０００２】
Ｗｅｂサーバ、アプリケーションサーバ、データベースサーバなどのコンピュータでは、ハードディスク等の外部記憶装置への入出力を行ないながら所定の処理を実行していく。
このような状況下において近年、オペレーティングシステム（ＯＳ）が、バッファやキャッシュ等のメモリ上の一時記憶領域に仮の入出力を行なうことにより、見かけ上の処理を高速化させる手法が広く採用されている。そしてこのような手法が採用された場合、適切なタイミングで、ＯＳが、その一時記憶領域に入出力したデータ内容をハードディスクに反映させることにより、仮に入出力されたデータ内容と、ハードディスクのデータ内容との整合性をとる。このような手法を採用することにより、コンピュータが、ハードディスク上の同一データを繰り返し参照する場合、次のような効果を奏する。すなわち、低速なディスクアクセスによる処理のオーバヘッドが増大することを回避できる。ハードディスクへのアクセスをその都度行うことなく、キャッシュから参照データを読み出して利用することが可能になるからである。
【０００３】
しかしながら、あるプログラムがディスクアクセスを行うたびに、ＯＳが空きメモリを無制限にキャッシュとして割当ててしまうと、他のプログラムがディスクアクセスを行う際に、必要なキャッシュ容量を確保できず、コンピュータのシステム性能が著しく低下することにもなり得る。
もっとも、キャッシュ容量を確保できない状況になったとしても、メモリをほぼ消費し尽くした時点で、ＯＳは、キャッシュのデータ内容をディスクに反映させて、使用可能なメモリ領域を確保する処理を実行することになる。しかし、大容量のメモリをコンピュータに搭載している場合、そのような処理によりコンピュータのシステム性能に大きな影響を及ぼしかねない。
近年、コンピュータ性能の向上により複数のタスクを一台のハードウェアで実行させることは一般的になっているが、従来、前記したキャッシュのリソース問題を含む管理上の負担を軽減するため、次のような方法が知られている（例えば、特許文献１参照）。すなわち、一台のコンピュータ上で複数の仮想計算機（ＶＭ：Ｖｉｒｔｕａｌ Ｍａｃｈｉｎｅ）を実行させ、それぞれの仮想計算機上で独立にタスクを実行させる。そして、仮想計算機が、実ハードウェアのリソースを有効に利用するためのモニタリングとリソースの割り振りとを行うことによりリソース管理を実現している（例えば、特許文献１参照）。
【特許文献１】特開２００４−３２６７５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１では、仮想計算機の実現それ自体で多大な処理能力を要してしまうため、高性能システムの実現には適さない。このため、コスト対性能比の高いコンピュータ環境、すなわち、単一のＯＳ管理下において各種サービスプログラムを実行するコンピュータ環境で、適切なキャッシュ容量を確保するリソース管理を実現することにより、システム性能の低下を回避しなければならなかった。
【０００５】
そこで、本発明は、このような状況下においてなされたものであり、その目的は、適切なキャッシュ容量を確保するリソース管理を実現することである。
【課題を解決するための手段】
【０００６】
前記課題を解決するために本発明は、単一のＯＳ上で複数のプログラムを実行する計算機に用いられるキャッシュ割当制御方法であって、前記計算機は、メモリと処理部とを含んで構成され、前記メモリは、前記各プログラム毎に、当該プログラムがディスクキャッシュとして確保する前記メモリのメモリ許容量を記憶し、前記処理部は、前記プログラムの実行に従ってディスクドライブへアクセスする際に、新規なディスクキャッシュを前記メモリに割り当てる場合、当該プログラムに対応するメモリ許容量を前記メモリから読み出し、そのメモリ許容量の範囲内に収まるように、前記メモリにディスクキャッシュを割り当てることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、適切なキャッシュ容量を確保するリソース管理を実現することができる。
【発明を実施するための最良の形態】
【０００８】
図１は本発明の実施の形態１に係るサーバ計算機の構成例を示すブロック図である。
図１において、サーバ計算機１０は、ハードディスク２０との間における情報の授受を制御するように構成されている。ハードディスク２０は、図示されていないが、複数のハードディスクからなるハードディスク群で構成され、ハードディスク群が、例えば、ＲＡＩＤ(Redundant Arrays of Independent Disks)を構成しているものとする。
また、サーバ計算機１０は、メモリ（記憶部）１０１とＣＰＵ（処理部）１０２とを含んで構成されている。メモリ１０１は、ＯＳ(Operating System)１０１０と、キャッシュ管理プログラム（キャッシュ管理機能）１０１１と、キャッシュ管理情報１０１２と、アプリケーションプログラム（以下「アプリケーション」ともいう）１０１３、１０１４、１０１５（「ＡＰＰ１」、「ＡＰＰ２」、「ＡＰＰ３」に相当）とを格納している。そして、メモリ１０１には、空きメモリ領域１０１６が存在している。このように構成することにより、サーバ計算機１０は、ハードディスク２０から、ＯＳ１０１０、キャッシュ管理プログラム１０１１、キャッシュ管理情報１０１２および各種アプリケーション１０１３、１０１４、１０１５を読み込んで実行する。
【０００９】
空きメモリ領域１０１６には、アプリケーション１０１３〜１０１５の各々について、キャッシュとして使用可能な量、すなわちキャッシュ割当量（メモリ制限量、メモリ許容量）１０２０〜１０２２が割り当てられている。この割り当ては、キャッシュ管理プログラム１０１１が決定する。つまり、空きメモリ領域１０１６のメモリ分量が決まる。
【００１０】
図２はキャッシュ管理情報１０１２の内容を示す説明図である。キャッシュ管理情報１０１２は、プログラム名称５００、用途５０１、マウントポイント５０２、優先度５０３、推奨割当量５０４、最小割当量５０５および最大割当量５０６を含んで構成されている。なお、明細書において、推奨割当量５０４、最小割当量５０５および最大割当量５０６を併せてメモリ許容量という。
プログラム名称５００は、実行するアプリケーションを特定するために用いられ、例えば「ＡＰＰ１」などの名称が示される。用途５０１は、アプリケーションの用途をあらわし、例えば、深夜バックアップなどの用途が示される。
【００１１】
マウントポイント５０２は、ディスクキャッシュの対象となるデバイスやネットワークファイルシステム等をマウントするマウントポイントを指定するために用いる。マウントポイント数は１つでも複数でもよい。例えば、アプリケーションごとに複数のマウントポイントを指定することも可能である。
優先度５０３は、サーバ計算機１０上における各アプリケーションの重要性を表わすもので、アプリケーションに対しディスクキャッシュを割り当てる際の優先度を示す。ここでは、優先度の最も低い「１」から、優先度の最も高い「１０」までの１０段階の優先度を準備している。
【００１２】
推奨割当量５０４は、対応するアプリケーションが十分な性能を発揮するために必要なキャッシュ割り当てサイズを表わす。最小割当量５０５は、利用者の要求するアプリケーション性能を満たすために必要な最低限のキャッシュ割り当てサイズを表わす。
最大割当量５０６は、アプリケーションに割り当て可能なキャッシュサイズの上限値を表わす。
【００１３】
次に、前記したアプリケーション１０１３〜１０１５についてのキャッシュ割当量の計算処理を図３に基づいて説明する。
図３はサーバ計算機１０におけるキャッシュ割当量の計算処理の流れを示す図である。
まず、サーバ計算機１０のＣＰＵ１０２は、例えば、あるアプリケーション１０１５が導入されたタイミングで、オペレーティングシステム１０１０やアプリケーション１０１３〜１０１５に割当てられていない空きメモリ領域１０１６（図１参照）の空きメモリ量を計算する（Ｓ１００）。
【００１４】
続いて、ＣＰＵ１０２は、各アプリケーション１０１３〜１０１５に対応する最小割当量５０５に指定された最小割当量をキャッシュ管理情報１０１２（図２参照）から読み出し、それらを合算した最小割当量の合計値が空きメモリ量を超えるかどうかを判定する（Ｓ１０１）。なお、図２では各アプリケーション１０１３〜１０１５の最小割当量は、それぞれ２０ＭＢ、１０ＭＢ、１０ＭＢであるので、これらを合算した４０ＭＢが最小割当量の合計値となる。
そして、空きメモリ量を超えると判定された場合（Ｓ１０１のＹｅｓ）、ＣＰＵ１０２は、必要なキャッシュ割当量が確保されないため、エラー処理として、管理用端末３０にその旨の情報を送信する（Ｓ１０２）。
これに対して、空きメモリ量を超えないと判定された場合（Ｓ１０１のＮｏ）、ＣＰＵ１０２は、各アプリケーション１０１３〜１０１５の最小割当量をキャッシュ割当量として割り当てる（Ｓ１０３）。つまり、各最小割当量がキャッシュ割当量として確保される。
【００１５】
次に、ＣＰＵ１０２は、各アプリケーション１０１３〜１０１５に対応する推奨割当量５０４に指定された各推奨割当量をキャッシュ管理情報１０１２（図２参照）から読み出し、それらを合算した推奨割当量の合計値が空きメモリ量を超えるかどうかを判定する（Ｓ１０４）。そして、空きメモリ量を超えると判定された場合（Ｓ１０４のＹｅｓ）、ＣＰＵ１０２は、各アプリケーション１０１３〜１０１５に対応する各優先度５０３（図２参照）に指定された優先度順に、空きメモリ量を各アプリケーション１０１３〜１０１５の推奨割当量に応じて配分する（Ｓ１０６）。
【００１６】
例えば、図２では各アプリケーション１０１３〜１０１５について、推奨割当量はそれぞれ１８０ＭＢ、６０ＭＢ、７０ＭＢで、優先度はそれぞれ３、４、４であるので、これらの優先度順の比率で配分される。
具体的には、まず、優先度が「４」の２つのアプリケーション１０１４、１０１５の配分が、優先度「３」のアプリケーション１０１３に優先して行われる。つまり、アプリケーション１０１４には（空きメモリ量）×６０ＭＢ／（１８０ＭＢ＋６０ＭＢ＋７０ＭＢ）により算出されたメモリ量が配分され、また、アプリケーション１０１５には（空きメモリ量）×７０ＭＢ／（１８０ＭＢ＋６０ＭＢ＋７０ＭＢ）により算出されたメモリ量が配分される。
次に、優先度が「３」のアプリケーション１０１３の配分が行われる。つまり、アプリケーション１０１３には（空きメモリ量）−（各アプリケーション１０１４、１０１５に配分された総メモリ量）により得られたメモリ量が配分される。このようにすることにより、優先度の高いアプリケーションから順次、使用可能なメモリ量を推奨割当量の比率に応じて確保することが可能となる。
【００１７】
これに対して、Ｓ１０４において、空きメモリ量を超えないと判断された場合（Ｓ１０４のＮｏ）、ＣＰＵ１０２は、各アプリケーション１０１３〜１０１５の推奨割当量を割り当てる（Ｓ１０６）。つまり、各推奨割当量がキャッシュ割当量として確保される。
【００１８】
次に、ＣＰＵ１０２は、各アプリケーション１０１３〜１０１５に対応する最大割当量５０６に指定された各最大割当量をキャッシュ管理情報１０１２（図２参照）から読み出し、それらを合算した最大割当量の合計値が空きメモリ量を超えるかどうかを判定する（Ｓ１０７）。そして、空きメモリ量を超えると判定された場合（Ｓ１０７のＹｅｓ）、ＣＰＵ１０２は、各アプリケーション１０１３〜１０１５に対応する各優先度５０３（図２参照）に指定された優先度順に、空きメモリ量を各アプリケーション１０１３〜１０１５の最大割当量に応じて配分する（Ｓ１０８）。
【００１９】
例えば、図２では各アプリケーション１０１３〜１０１５について、最大割当量はそれぞれ３００ＭＢ、１５０ＭＢ、１００ＭＢで、優先度はそれぞれ３、４、４であるので、これらの優先度順の比率で配分される。
具体的には、まず、優先度が「４」の２つのアプリケーション１０１４、１０１５の配分が、優先度「３」のアプリケーション１０１３に優先して行われる。つまり、アプリケーション１０１４には（空きメモリ量）×１５０ＭＢ／（３００ＭＢ＋１５０ＭＢ＋１００ＭＢ）により算出されたメモリ量が配分され、また、アプリケーション１０１５には（空きメモリ量）×１００ＭＢ／（３００ＭＢ＋１５０ＭＢ＋１００ＭＢ）により算出されたメモリ量が配分される。
次に、優先度が「３」のアプリケーション１０１３の配分が行われる。つまり、アプリケーション１０１３には（空きメモリ量）−（各アプリケーション１０１４、１０１５に配分された総メモリ量）により得られたメモリ量が配分される。このようにすることにより、優先度の高いアプリケーションから順次、使用可能なメモリ量を最大割当量の比率に応じて確保することが可能となる。
【００２０】
これに対して、Ｓ１０７において、空きメモリ量を超えないと判定された場合（Ｓ１０７のＮｏ）、ＣＰＵ１０２は、各アプリケーション１０１３〜１０１５の最大割当量を空きメモリ量に割り当てる（Ｓ１０９）。これにより、各アプリケーション１０１３〜１０１５の最大割当量分がキャッシュとして確保される。
【００２１】
次に、サーバ計算機１０が、アプリケーション１０１３〜１０１５のキャッシュ割当量（以下これを「設定割当量」ともいう）を空きメモリ領域１０１６に設定した後、例えば、アプリケーション１０１３の実行中にディスクアクセスが発生し、それに伴いオペレーティングシステム１０１０およびキャッシュ管理プログラム１０１１がディスクキャッシュ割当て要求に応じてキャッシュ割当て処理を実行する場合について説明する。
【００２２】
図４はサーバ計算機１０におけるキャッシュ割当処理の流れを示す図である。
まず、サーバ計算機１０のＣＰＵ１０２は、新規なキャッシュを空きメモリ領域１０１６に割り当てる際、新規にキャッシュを割当てると設定割当量を超過するかどうかを判定する（Ｓ２００）。設定割当量は、例えば、ディスクアクセスが発生したアプリケーション１０１３に対応するものであり、メモリ１０１の所定領域から読み出される。つまり、Ｓ２００では、ＣＰＵ１０２は、アプリケーション１０１３の設定割当量と、アプリケーション１０１３に使用されるメモリ総使用量（割当て後のもの）とを比較し、メモリ総使用量が設定割当量の範囲内に収まるかどうかを判定する。
【００２３】
判定の結果、超過する場合（Ｓ２００のＹｅｓ）には、ＣＰＵ１０２は、対象プログラムであるアプリケーション１０１３がすでに使用するキャッシュの解放処理を行う（Ｓ２０１）。解放処理としては、例えば、アクセス頻度の低い情報（例えばファイルなど）をキャッシュから解放する処理などがある。
【００２４】
その後、ＣＰＵ１０２は、Ｓ２０１で解放処理したキャッシュに新規なキャッシュの割当処理を行う（Ｓ２０２）。これにより、アプリケーション単位でキャッシュの解放および割当てを行うことが可能となる。したがって、特定のアプリケーションのディスクアクセスに伴うキャッシュ割当量が過剰に増大することを抑止することが可能となる。よって、サーバ計算機１０のシステム全体の処理能力の低下を防ぐことが可能となる。
【００２５】
以上説明したように、本実施の形態によれば、ディスクへの入出力処理を行う際にメモリ１０１上に入出力内容をキャッシュするサーバ計算機１０において、そのサーバ計算機１０上で動作するアプリケーションごとにキャッシュに割当てるメモリ量を制限する。そして、そのアプリケーションのキャッシュ使用量が、すでに設定されているメモリ量を超えそうになった場合に、他のアプリケーションが使用するキャッシュに影響を与えずに、当該アプリケーションが使用済みのキャッシュを解放して空きメモリを確保する。この結果、サーバ計算機１０のディスクアクセス性能を維持することが可能となる。
【００２６】
図５は実施の形態２に係る計算機システムの構成例を示すブロック図である。なお、実施の形態１と同一部分については、同一の符号を付し重複説明を適宜省略する。
実施の形態２における計算機システムは、複数のサーバ計算機１０、６０を備えており、これらのサーバ計算機１０、６０が、ネットワーク８０を介して接続されている。例えば、ＮＡＳ(Network Attached Storage)として計算機システムを構成するようにしてもよい。サーバ計算機１０は、ネットワークインタフェース１０３を備えた点が図１の場合と異なる。なお、図５では、２台のサーバ計算機が示されているが、３台以上のサーバ計算機をネットワーク８０に接続して計算機システムを構成するようにしてもよい。
【００２７】
サーバ計算機６０も、サーバ計算機１０の構成と同様、メモリ６０１、ＣＰＵ６０２およびネットワークインタフェース６０３を備えている。メモリ６０１には、ＯＳ(Operating System)６０１０と、キャッシュ管理プログラム６０１１と、キャッシュ管理情報６０１２と、アプリケーション６０１３、６０１４、６０１５（「ＡＰＰ４」、「ＡＰＰ５」、「ＡＰＰ６」に相当）とを格納している。そして、メモリ１０１には、空きメモリ領域６０１６が存在している。このように構成することにより、サーバ計算機６０も、サーバ計算機１０と同様、ハードディスク７０から、ＯＳ６０１０、キャッシュ管理プログラム６０１１、キャッシュ管理情報６０１２および各種アプリケーション６０１３〜６０１５を読み込んで実行する。キャッシュ管理情報６０１２は、各アプリケーション６０１３〜６０１５毎に、プログラム名称５００、用途５０１、マウントポイント５０２、優先度５０３、推奨割当量５０４、最小割当量５０５および最大割当量５０６を関連付けている（図２に相当）。その他の構成は、実施の形態１の場合と同様である。
このように構成することにより、サーバ計算機６０も、アプリケーション６０１３〜６０１５のキャッシュ割当量を空きメモリ領域６０１６に決定して（図３の処理に相当）、各アプリケーション６０１３〜６０１５毎に所定分のキャッシュ割当量６０２０〜６０２２が割り当てられる。そして、サーバ計算機６０も、各アプリケーション６０１３〜６０１５のディスクキャッシュ割当て要求に応じてキャッシュ割当て処理を実行している（図４の処理に相当）。
【００２８】
本実施の形態では、これらのサーバ計算機１０、６０は、ネットワーク８０を通じて互いの動作状態を監視するように構成されている。そして、いずれか一方のサーバ計算機に障害（ハードウェア障害など）が発生し、そのサーバ計算機がアプリケーションを実行できなくなったとき、他のサーバ計算機がそのアプリケーションを引き継いで処理を継続する。このときのキャッシュ割当量の変化を図６に基づいて説明する。
【００２９】
図６は障害発生時のキャッシュ割当量の変化例を示す説明図である。図６では、サーバ計算機１０にＣＰＵ１０２などの障害が発生したため、サーバ計算機６０が、アプリケーション１０１３〜１０１５を引き継いで処理する場合が示されている。このため、サーバ計算機６０では、引継ぎ前に動作していたアプリケーション６０１３〜６０１５、および引き継いだアプリケーション１０１３〜１０１５についてのキャッシュ割当量１０２０〜１０２２、６０２０〜６０２２が、空きメモリ領域６０１６に割り当てられている（図６の右上段参照）。これは次のような理由に基づく。すなわち、サーバ計算機６０が、サーバ計算機１０で動作していたアプリケーション１０１３〜１０１５をメモリ６０１に格納したため、空きメモリ領域６０１６が引継ぎ前に比べて縮小し（図６の右上下段参照）、縮小後の空きメモリ領域６０１６の空きメモリ量をもとに、個々のアプリケーション１０１３〜１０１５、６０１３〜６０１５についてのキャッシュ割当量を再割当てしたからである。
【００３０】
この再割当てを含む引継ぎ処理を図７に基づいて説明する。図７はサーバ計算機６０の引継ぎ処理の流れを示す図である。ここでは、障害が発生したサーバ計算機１０が、キャッシュ管理情報１０１２およびアプリケーション１０１３〜１０１５をメモリ１０１から読み出して、サーバ計算機６０にネットワーク８０を介して送信した場合を前提に説明することとする。
Ｓ３００では、サーバ計算機６０のＣＰＵ６０２は、すべてのアプリケーション１０１３〜１０１５、６０１３〜６０１５についてのキャッシュ割当量の計算処理を行う。このキャッシュ割当量の計算処理は、図３の処理と同様であるので、詳細説明を省略する。これにより、すべてのアプリケーション１０１３〜１０１５、６０１３〜６０１５についてのキャッシュ割当量が決定する。
【００３１】
Ｓ３０１では、ＣＰＵ６０２は、引継ぎ前から動作していたあるプログラム（例えばアプリケーションＡＰＰ４）についてのキャッシュ使用量（引継ぎ前にそのプログラムがすでに使用していたキャッシュ使用量）が、Ｓ３００で計算したキャッシュ割当量を超過するかどうかを判定する。
判定の結果、超過しない場合（Ｓ３０１のＮｏ）には、後記するＳ３０３に進み、他方、超過する場合（Ｓ３０１のＹｅｓ）には、ＣＰＵ６０２は、超過分のキャッシュを開放する（Ｓ３０２）。例えば、アクセス頻度の低い情報（例えばファイルなど）が開放される。
【００３２】
Ｓ３０３では、ＣＰＵ６０２は、引継ぎ前から動作していたすべてのプログラム（例えばアプリケーションＡＰＰ５、ＡＰＰ６）についての処理（Ｓ３０１、Ｓ３０２）を行ったかどうかを判断し（Ｓ３０３）、すべてのプログラムについてＳ３０１およびＳ３０２の処理を行うまで繰り返す。これにより、あるサーバ計算機１０から他のサーバ計算機６０への引継ぎ時においても、引き継いだアプリケーションに十分なディスクキャッシュが割当てられることとなる。したがって、サーバ計算機の処理性能が大きく悪化するといった事態を回避させることが可能となる。
【００３３】
その後、サーバ計算機１０の障害が復旧し、アプリケーション１０１３〜１０１５がサーバ計算機１０で実行可能な状態に戻った場合、管理者が、例えば手動操作により、アプリケーション１０１３〜１０１５をサーバ計算機１０に再度切り替えて実行させる。この場合、サーバ計算機１０は、キャッシュ管理プログラム１０１１に従って、各アプリケーション１０１３〜１０１５のキャッシュ割当量を引継ぎ前の状態に戻す。すなわち、サーバ計算機１０が、図３に示したキャッシュ割当量の計算処理を実行することにより、キャッシュ割当量を再設定する。そして、サーバ計算機１０は、アプリケーション１０１３〜１０１５の処理を再開する。このようにすることにより、計算機システムの障害時においても、最低限のディスクアクセス性能を維持することが可能となる。
【００３４】
なお、本発明は、前記した実施の形態１、２に限定されない。サーバ計算機のハードウェア構成、データ構造および処理の流れは、本発明の趣旨を逸脱しない限り、変更して構成するようにしてもよい。
【図面の簡単な説明】
【００３５】
【図１】本発明の実施の形態１に係るサーバ計算機の構成例を示すブロック図である。
【図２】図１に示したキャッシュ管理情報の内容を示す説明図である。
【図３】サーバ計算機におけるキャッシュ割当量の計算処理の流れを示す図である。
【図４】サーバ計算機におけるキャッシュ割当処理の流れを示す図である。
【図５】実施の形態２に係る計算機システムの構成例を示すブロック図である。
【図６】障害発生時のキャッシュ割当量の変化例を示す説明図である。
【図７】サーバ計算機の引継ぎ処理の流れを示す図である。
【符号の説明】
【００３６】
１０      サーバ計算機
２０      ハードディスク
１０１    メモリ
１０２    ＣＰＵ
【図１】
2006350780.tif 000003
【図２】
2006350780.tif 000004
【図３】
2006350780.tif 000005
【図４】
2006350780.tif 000006
【図５】
2006350780.tif 000007
【図６】
2006350780.tif 000008
【図７】
2006350780.tif 000009