(57)【要約】  ＯＳ上で実行される仮想ストレージ装置に、物理的に連続するメモリ領域を割り当てることにより、仮想ストレージ装置の性能を保証する。  プロセッサは、ＯＳを実行し、プロセッサは、ＯＳ上で複数のプロセスを実行し、複数のプロセスは、第一仮想ストレージ装置を含み、第一仮想ストレージ装置は、ＩＯ処理を実行し、ＩＯ処理されるデータを格納するキャッシュを含み、プロセッサは、計算機内のリソースを、複数のプロセスに割り当て、プロセッサは、メモリのうち、プロセスに割り当てられている物理アドレスを示す領域情報を作成し、プロセッサは、領域情報に基づいて、メモリから、物理的に連続する領域である連続領域を選択し、連続領域をキャッシュに割り当てる。
2017056310.tif 000002
【特許請求の範囲】
【請求項１】
計算機であって、
メモリと、
前記メモリに接続されるプロセッサと、
を備え、
前記プロセッサは、ＯＳを実行し、
前記プロセッサは、前記ＯＳ上で複数のプロセスを実行し、前記複数のプロセスは、第一仮想ストレージ装置を含み、前記第一仮想ストレージ装置は、ＩＯ処理を実行し、前記ＩＯ処理されるデータを格納するキャッシュを含み、
前記プロセッサは、前記計算機内のリソースを、前記複数のプロセスに割り当て、
前記プロセッサは、前記メモリのうち、前記複数のプロセスに割り当てられている物理アドレスを示す領域情報を作成し、
前記プロセッサは、前記領域情報に基づいて、前記メモリから、物理的に連続する領域である連続領域を選択し、前記連続領域を前記キャッシュに割り当てる、
計算機。
【請求項２】
前記メモリ及び前記プロセッサに接続されるＤＭＡコントローラを更に備え、
前記プロセッサは、ＤＭＡ転送の転送元及び転送先を示すＤＭＡ転送要求を前記ＤＭＡコントローラへ発行し、前記転送元及び前記転送先の少なくとも一つは、前記キャッシュに含まれ、
前記ＤＭＡコントローラは、前記ＤＭＡ転送要求に応じて、前記転送元に格納されているデータを前記転送先へＤＭＡ転送する、
請求項１に記載の計算機。
【請求項３】
前記プロセッサは、前記キャッシュのサイズを特定サイズに設定するための設定要求を受けると、前記領域情報に基づいて、前記特定サイズを有する前記連続領域を確保できるか否かを判定し、
前記特定サイズを有する前記連続領域を確保できると判定された場合、前記プロセッサは、前記領域情報に基づいて、前記メモリから前記特定サイズを有する前記連続領域を選択する、
請求項２に記載の計算機。
【請求項４】
前記プロセッサは、前記プロセッサの計算能力を前記複数のプロセスに割り当て、
前記プロセッサは、前記メモリの容量の一部を、前記複数のプロセスのうち前記キャッシュ以外に割り当てる、
請求項３に記載の計算機。
【請求項５】
前記プロセッサは、前記メモリの一部である第一領域を前記ＯＳに設定し、
前記プロセッサは、前記第一領域内の領域を、前記複数のプロセスに割り当て、
前記プロセッサは、前記メモリのうち前記第一領域と異なる第二領域から、前記連続領域を選択する、
請求項４に記載の計算機。
【請求項６】
前記複数のプロセスの一つは、第二仮想ストレージ装置であり、
前記特定サイズを有する前記連続領域を確保できないと判定された場合、前記プロセッサは、前記第二領域のうち第一仮想ストレージ装置に割り当てられていない未割当領域のサイズが、前記特定サイズ以上であるか否かを判定し、
前記未割当領域のサイズが前記特定サイズ以上であると判定された場合、前記プロセッサは、前記第二領域のうち前記第二仮想ストレージ装置に割り当てられている特定領域を、前記未割当領域内の領域に変更することで、前記特定サイズを有する前記連続領域を確保する、
請求項５に記載の計算機。
【請求項７】
前記未割当領域のサイズが前記特定サイズ以上であると判定された場合、前記プロセッサは、前記特定領域内のデータをクリーン状態に遷移させ、前記特定領域を解放し、前記未割当領域内の領域を前記第二仮想ストレージ装置に割り当てる、
請求項６に記載の計算機。
【請求項８】
前記特定サイズを有する前記連続領域を確保できないと判定された場合、前記プロセッサは、前記領域情報に基づいて、前記複数のプロセスのうち仮想ストレージ装置以外である特定プロセスに割り当てられている領域を、前記メモリのうちプロセスに割り当てられていない未割当領域内の領域に変更することで、前記特定サイズを有する前記連続領域を確保する、
請求項４に記載の計算機。
【請求項９】
前記特定サイズを有する前記連続領域を確保できないと判定された場合、前記プロセッサは、前記領域情報に基づいて、前記特定プロセスに割り当てられている領域を移動元領域として選択し、前記領域情報に基づいて、前記未割当領域内の領域を移動先領域として選択し、前記移動元領域内のデータを前記移動先領域へコピーし、前記特定プロセスに割り当てる領域を前記移動元領域から前記移動先領域へ変更することで、前記特定サイズを有する前記連続領域を確保する、
請求項８に記載の計算機。
【請求項１０】
前記プロセッサは、前記連続領域をピンダウンする、
請求項９に記載の計算機。
【請求項１１】
前記領域情報は、前記メモリのうち各プロセスに割り当てられている領域の物理アドレスを示す、
請求項１０に記載の計算機。
【請求項１２】
メモリと前記メモリに接続されるプロセッサとを含む計算機の、制御方法であって、
ＯＳを実行し、
前記ＯＳ上で複数のプロセスを実行し、前記複数のプロセスは、第一仮想ストレージ装置を含み、前記第一仮想ストレージ装置は、ＩＯ処理を実行し、前記ＩＯ処理されるデータを格納するキャッシュを含み、
前記計算機内のリソースを、前記複数のプロセスに割り当て、
前記メモリのうち、前記複数のプロセスに割り当てられている物理アドレスを示す領域情報を作成し、
前記領域情報に基づいて、前記メモリから、物理的に連続する領域である連続領域を選択し、前記連続領域を前記キャッシュに割り当てる、
ことを備える制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機に関する。
【背景技術】
【０００２】
クラウド環境では、複数のテナントの性能を管理する性能管理機能が知られている。また、テナントにより用いられる仮想ストレージが知られている。【０００３】
Ｌｉｎｕｘ（登録商標）等の汎用ＯＳにおいて、ＯＳ上で稼働するプロセスに割り当てるリソースを制御する技術としてはコンテナ技術が知られている。【０００４】
仮想ストレージに割り当てるメモリ領域の割当量を制御する技術として特許文献１が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４８０８７４７号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
仮想ストレージに対し、物理的に連続するメモリ領域を割り当てることにより、データ転送の性能を保証することができる。【０００７】
しかし、仮想ストレージが汎用ＯＳ上のプロセスとして実行される場合、ＯＳがプロセスに割り当てるメモリは仮想メモリであり、仮想メモリ領域に対応する物理メモリ領域が連続である保証はない。【０００８】
そのため、ＯＳにより提供されるリソース割当量制御技術を用いても、物理的に連続したメモリ領域の割り当てを制御することはできず、仮想ストレージの性能を保証することはできない。【０００９】
特許文献１のような技術では、汎用ＯＳ上の仮想ストレージに割り当てられるリソースを制御することができない。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明の一態様である計算機は、メモリと、前記メモリに接続されるプロセッサと、を備える。前記プロセッサは、ＯＳを実行し、前記プロセッサは、前記ＯＳ上で複数のプロセスを実行し、前記複数のプロセスは、第一仮想ストレージ装置を含み、前記第一仮想ストレージ装置は、ＩＯ処理を実行し、前記ＩＯ処理されるデータを格納するキャッシュを含み、前記プロセッサは、前記計算機内のリソースを、前記複数のプロセスに割り当て、前記プロセッサは、前記メモリのうち、プロセスに割り当てられている物理アドレスを示す領域情報を作成し、前記プロセッサは、前記領域情報に基づいて、前記メモリから、物理的に連続する領域である連続領域を選択し、前記連続領域を前記キャッシュに割り当てる。
【発明の効果】
【００１１】
ＯＳ上で実行される仮想ストレージ装置に、物理的に連続するメモリ領域を割り当てることにより、仮想ストレージ装置の性能を保証することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例に係る計算機システムの物理構成を示す。
【図２】実施例１の計算機１０１内の物理リソースを示す。
【図３】実施例１の計算機１０１の論理構成を示す。
【図４】仮想ストレージ１１１の構成を示す。
【図５】クライアント１０３の構成を示す。
【図６】連続領域使用プログラム３０１内の、リソース割当テーブル３１４と連続領域テーブル３１５を示す。
【図７】計算機１０１内の、連続領域管理テーブル４０３と連続領域割当管理テーブル４０４とリソース割当管理テーブル２１４とを示す。
【図８】クライアント１０３内のリソース割当設定テーブル５１３を示す。
【図９】クライアント１０３によるリソース設定処理を示す。
【図１０】仮想ストレージ１１１によるリソース割当処理を示す。
【図１１】仮想ストレージ１１１によるキャッシュサイズ変更処理を示す。
【図１２】連続領域管理プログラム２１３によるリソース割当管理処理を示す。
【図１３】仮想ストレージ１１１によるキャッシュサイズ変更依頼処理を示す。
【図１４】設定ウィンドウ１４０１を示す。
【図１５】実施例２の計算機１０１の論理構成を示す。
【図１６】メモリ割当テーブル１５０２を示す。
【図１７】確保処理を示す。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明の実施形態を説明する。
【００１４】
以下の説明では、「×××テーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「×××テーブル」を「×××情報」と呼ぶことができる。また、以下の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部又は一部が１つのテーブルであってもよい。
【００１５】
また、以下の説明では、要素の識別情報として、ＩＤが使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。
【００１６】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたＩＤを使用することがある。
【００１７】
また、以下の説明では、Ｉ／Ｏ（Input/Output）要求は、ライト要求又はリード要求であり、アクセス要求と呼ばれてもよい。
【００１８】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ（例えばＣＰＵ（Central Processing Unit））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び／又はインターフェースデバイス（例えば通信ポート）等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理又はシステムとしてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ（例えばＣＰＵ）と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００１９】
また、以下の説明では、管理システムは、一以上の計算機を含んでいてもよい。具体的には、例えば、管理計算機が情報を表示する場合（具体的には、例えば、管理計算機が自分の表示デバイスに情報を表示する、或いは、管理計算機が表示用情報を遠隔の表示用計算機に送信する場合）、管理計算機が管理システムである。また、例えば、複数の計算機で管理計算機と同等の機能が実現されている場合は、当該複数の計算機（表示を表示用計算機が行う場合は表示用計算機を含んでよい）が、管理システムである。管理計算機（例えば管理システム）は、表示システムを含むＩ／Ｏシステムに接続されたインタフェースデバイスと、記憶資源（例えばメモリ）と、インタフェースデバイス及び記憶資源に接続されたプロセッサとを有してよい。表示システムは、管理計算機が有する表示デバイスでもよいし、管理計算機に接続された表示用計算機でもよい。Ｉ／Ｏシステムは、管理計算機が有するＩ／Ｏデバイス（例えばキーボード及びポインティングデバイス、タッチパネル）でもよいし、管理計算機に接続された表示用計算機又は別の計算機でもよい。管理計算機が「表示用情報を表示する」ことは、表示システムに表示用情報を表示することであり、これは、管理計算機が有する表示デバイスに表示用情報を表示することであってもよいし、管理計算機が表示用計算機に表示用情報を送信することであってもよい（後者の場合は表示用計算機によって表示用情報が表示される）。また、管理計算機が情報を入出力するとは、管理計算機が有するＩ／Ｏデバイスとの間で情報の入出力を行うことであってもよいし、管理計算機に接続された遠隔の計算機（例えば表示用計算機）との間で情報の入出力を行うことであってもよい。情報の出力は、情報の表示であってもよい。
【実施例１】
【００２０】
以下、本発明の実施例の計算機システムの構成について説明する。【００２１】
図１は、本発明の実施例に係る計算機システムの物理構成を示す。【００２２】
計算機システムは、１台以上の計算機１０１、ネットワーク１０２、１台以上のクライアント１０３を含む。【００２３】
計算機１０１は、物理メモリ１２１と、ＣＰＵ（Central Processing Device）１２２と、ネットワークＩＦ１２３と、ドライブＩＦ１２４と、ドライブ１２５とを含む。ＣＰＵ１２２は、コア１３１と、ＤＭＡ（Direct Memory Access）コントローラ１３２とを含む。物理メモリ１２１と、ＣＰＵ１２２と、ネットワークＩＦ１２３と、ドライブＩＦ１２４とは、バスを介して互いに接続されている。【００２４】
物理メモリ１２１は、プログラムやデータを格納する。ネットワークＩＦ１２３は、ネットワーク１０２に接続され、ネットワーク１０２を介してクライアント１０３と通信する。ドライブＩＦ１２４は、ドライブ１２５に接続され、ドライブ１２５と通信する。ドライブ１２５は、データを格納する。コア１３１は、物理メモリ１２１に格納されたプログラムに従って処理を実行する。ＤＭＡコントローラ１３２は、コア１３１からの指示に従って、データのＤＭＡ転送を実行する。物理メモリ１２１は、複数の物理メモリを含んでいてもよい。【００２５】
図２は、実施例１の計算機１０１内の物理リソースを示す。【００２６】
計算機１０１内の物理リソースは、ＯＳ２０１により管理されるＯＳ管理物理リソース２０２と、計算機１０１に搭載されているがＯＳ２０１により管理されないＯＳ管理外物理リソース２０３とを含む。【００２７】
ＯＳ管理物理リソース２０２は、ＣＰＵ１２２と、物理メモリ１２１の一部である物理メモリＡ２２２とを含む。ＯＳ管理外物理リソース２０３は、物理メモリ１２１のうち物理メモリＡ２２２以外の部分である物理メモリＢ２３１を含む。【００２８】
計算機１０１において、ＯＳ２０１を起動させる場合、ユーザは、ＯＳ２０１のブートオプションとして、ＯＳ２０１により使用される物理メモリ量であるＯＳ管理メモリ量を設定することができる。ＯＳ管理メモリ量は、物理メモリ１２１の容量以下であればよい。これにより、物理メモリＡ２２２は、物理メモリ１２１のうち、物理アドレスの先頭からＯＳ管理メモリ量までの領域である。物理メモリＢ２３１は、物理メモリ１２１のうち、物理メモリＡ２２２の領域の直後の物理アドレスから物理メモリ１２１の終端の物理アドレスまでの領域である。【００２９】
ＯＳ２０１により使用可能な領域として、物理メモリＡ２２２を設定することにより、物理メモリＢ２３１がＯＳ２０１に使用されることがなく、物理メモリＢ２３１内の連続領域を仮想ストレージのキャッシュに割り当てることができる。【００３０】
図３は、実施例１の計算機１０１の論理構成を示す。【００３１】
計算機１０１の論理構成は、ＯＳ２０１と、連続領域管理プログラム２１３と、１台以上の仮想ストレージ（仮想ストレージ装置）１１１と、リソース割当管理テーブル２１４とを含む。これらは、物理メモリ１２１に格納される。各仮想ストレージ１１１は、ＯＳ２０１によりプロセスとして管理される。計算機１０１の論理構成は、仮想ストレージ１１１以外のプロセスを含んでいてもよい。ＯＳ２０１は、物理メモリＡ２２２を使用することができる。連続領域管理プログラム２１３は、物理メモリＢ２３１を使用することができる。なお、連続領域管理プログラム２１３は、ＯＳ２０１に含まれていてもよい。【００３２】
ＯＳ２０１は、複数のプロセスを統合管理するコンテナ技術を用いて、ＯＳ管理物理リソース２０２から仮想ストレージ１１１のプロセスを構築する。コンテナ技術は、ＣＰＵ割当調整プログラム２１１およびメモリ割当調整プログラム２１２を含むリソース分割機能である。ＯＳ２０１は、このようなリソース分割機能を有している技術であれば、コンテナ技術以外の技術を用いて、仮想ストレージ１１１のプロセスを構築しても良い。ＣＰＵ割当調整プログラム２１１は、ＯＳ上で実行されるプロセスに対してＣＰＵ１２２のリソースを割り当てる。メモリ割当調整プログラム２１２は、ＯＳ２０１上で実行されるプロセスに対して物理メモリＡ２２２のリソースを割り当てる。ＯＳ２０１は更に、計算機１０１の他の物理リソースを制御するプログラム等を含んでもよい。【００３３】
連続領域管理プログラム２１３は、仮想ストレージ通信部４０１と、領域調整管理部４０２と、連続領域管理テーブル４０３と、連続領域割当管理テーブル４０４とを含む。仮想ストレージ通信部４０１は、仮想ストレージ１１１と通信する。領域調整管理部４０２は、物理メモリ１２１のうち仮想ストレージ１１１に割り当てる領域を調整する。連続領域管理テーブル４０３は、物理メモリＢ２３１内の連続領域を示す。連続領域割当管理テーブル４０４は、各仮想ストレージに割り当てられた物理メモリＢ２３１内の連続領域を示す。【００３４】
リソース割当管理テーブル２１４は、連続領域管理プログラム２１３及びＯＳ２０１により作成され、各仮想ストレージ１１１に割り当てられたリソースの割当状況を示す。【００３５】
計算機１０１は、仮想ストレージ１１１をクライアント１０３へ提供する。クライアント１０３は、１台以上の仮想ストレージ１１１を制御する。【００３６】
図４は、仮想ストレージ１１１の構成を示す。【００３７】
仮想ストレージ１１１は、連続領域使用プログラム３０１と、ストレージ制御プログラム３０２と、キャッシュ３０３と、デバイスプログラム３０４と、ＩＯプログラム３０５とを含む。【００３８】
連続領域使用プログラム３０１は、ＯＳ通信部３１１と、クライアント通信部３１２と、領域調整部３１３と、リソース割当テーブル３１４と、連続領域テーブル３１５とを含む。ＯＳ通信部３１１は、ＯＳ２０１と通信する。クライアント通信部３１２、クライアント１０３と通信する。領域調整部３１３は、当該仮想ストレージに割り当てられたキャッシュを管理する。リソース割当テーブル３１４は、当該仮想ストレージに割り当てられたリソースの割当状況を示す。連続領域テーブル３１５は、当該仮想ストレージに割り当てられた物理メモリＢ２３１内の連続領域を示す。【００３９】
ストレージ制御プログラム３０２は、キャッシュ調整プログラム３２１と、キャッシュ設定ＩＦ３２２とを含む。キャッシュ調整プログラム３２１は、キャッシュ３０３を調整する。キャッシュ設定ＩＦ３２２は、連続領域使用プログラム３０１に対して、キャッシュ３０３の調整のためのＩＦを提供する。【００４０】
デバイスプログラム３０４は、ネットワークＩＦ１２３やドライブＩＦ１２４等の物理デバイスを用いて、物理デバイスの機能を有する仮想デバイスを作成する。デバイスプログラム３０４は、デバイスドライバであってもよい。【００４１】
ＩＯプログラム３４２は、クライアント１０３からのライト要求やリード要求等のＩＯ要求を処理する。【００４２】
キャッシュ３０３は、連続領域使用プログラム３０１で管理される領域である。キャッシュ３０３は、デバイス用領域３３１と、ＩＯ用領域３３２とを含む。デバイスプログラム３０４は、仮想デバイスのバッファとしてデバイス用領域３３１を用いる。ＩＯプログラム３０５は、ＩＯ処理のためのキャッシュとしてＩＯ用領域３３２を用いる。【００４３】
ＩＯプログラム３０５は、ＩＯ処理において、ＤＭＡコントローラ１３２に対し、ＤＭＡ転送の転送元及び転送先を示すＤＭＡ転送要求を発行する。例えば、ＤＭＡコントローラ１３２は、ＩＯプログラム３０５からの指示に応じて、デバイス用領域３３１内のデータをＩＯ用領域３３２へＤＭＡ転送したり、ＩＯ用領域３３２内のデータをデバイス用領域３３１へＤＭＡ転送したりすることができる。ＤＭＡ転送されるデータは、ライト要求に応じてクライアント１０３から受信されるライトデータであってもよいし、リード要求に応じてドライブ１２５から読み出されるリードデータであってもよいし、リード要求時のキャッシュヒットによりＩＯ用領域３３２から読み出されるリードデータであってもよい。なお、ＤＭＡコントローラ１３２によるＤＭＡ転送の転送元及び転送先の一方が、ネットワークＩＦ１２３、ドライブＩＦ１２４、ドライブ１２５等の物理デバイス内のメモリであってもよい。【００４４】
連続領域使用プログラム３０１は、デバイス用領域３３１とＩＯ用領域３３２の夫々に、物理的に連続するメモリ領域を割り当てる。ＤＭＡ転送の転送元及び転送先の少なくとも一つをキャッシュ３０３内の領域とすることで、ＤＭＡコントローラ１３２は、データを連続して転送できるため、ＣＰＵ１２１の負荷を抑えつつ、データを高速に転送することができる。これにより、仮想ストレージ１１１の性能を保証することができる。【００４５】
図５は、クライアント１０３の構成を示す。【００４６】
クライアント１０３は、メモリと、ＣＰＵと、ネットワーク１０２に接続されるネットワークＩＦと、ユーザからの入力を受け付ける入力装置と、情報を表示する表示装置とを含む。クライアント１０３において、メモリがプログラム及びデータを格納し、ＣＰＵがプログラムに従って処理を実行する。このメモリは、ＱｏＳ設定プログラム５０１を格納する。【００４７】
ＱｏＳ設定プログラム５０１は、設定部５１１と、通知部５１２と、リソース割当設定テーブル５１３とを含む。設定部５１１は、ユーザから設定の入力を受け付ける。通知部５１２は、計算機１０１と通信する。リソース割当設定テーブル５１３は、リソース割当管理テーブル２１４と同様の情報を格納する。【００４８】
図６は、連続領域使用プログラム３０１内の、リソース割当テーブル３１４と連続領域テーブル３１５を示す。【００４９】
リソース割当テーブル３１４には、当該仮想ストレージへのＣＰＵ１２２の割当状況を示す割当ＣＰＵ６１１と、当該仮想ストレージへの物理メモリＡ２２２の割当状況を示す割当非キャッシュ６１２と、当該仮想ストレージへの物理メモリＢ２３１の割当状況を示す割当キャッシュ６１３とが、格納されている。【００５０】
物理メモリＡ２２２は、非キャッシュ用途のメモリとして仮想ストレージ１１１等のプロセスに割り当てられ、プロセスの実行に用いられる。物理メモリＡ２２２の領域は、仮想メモリ領域として非キャッシュに割り当てられる。仮想メモリ領域に対応する物理メモリ領域は、物理的に連続していなくてもよい。物理メモリＢ２３１は、キャッシュ用途のメモリとして仮想ストレージ１１１に割り当てられ、Ｉ／Ｏのデータの格納等、仮想ストレージ１１１のＩ／Ｏ処理に用いられる。【００５１】
このリソース割当テーブル３１４の例のエントリ６１０は、当該仮想ストレージへ割り当てられたＣＰＵリソースが計算機１０１の有するＣＰＵ１２２の５０％であること、当該仮想ストレージへ割り当てられた非キャッシュが、計算機１０１の有する物理メモリＡ２２２の４０％であること、当該仮想ストレージへ割り当てられたキャッシュが、計算機１０１の有する物理メモリＢ２３１の１０％であることを示している。なお、本例では、割当率で割当状況を示しているが、割当時間や割当サイズによって割当状況を示してもよい。【００５２】
連続領域テーブル３１５には、当該仮想ストレージに割り当てられている物理メモリＢ２３１内の連続領域の開始アドレス６２１と、その連続領域の終了アドレス６２２とが、格納されている。【００５３】
この連続領域テーブル３１５の例のエントリ６２０は、当該仮想ストレージに割り当てられている連続領域の開始アドレスが１００であり、終了アドレスが２９０であることを示している。【００５４】
図７は、計算機１０１内の、連続領域管理テーブル４０３と連続領域割当管理テーブル４０４とリソース割当管理テーブル２１４とを示す。【００５５】
連続領域管理テーブル７１０には、ＯＳ管理外物理リソース２０３である物理メモリＢ２３１の開始アドレス７１１と終了アドレス７１２が格納されている。この連続領域管理テーブル４０３の例のエントリ７１０は、物理メモリＢ２３１の開始アドレスが１００であり、終了アドレスが２０００であることを示している。【００５６】
連続領域割当管理テーブル４０４には、仮想ストレージ１１１を識別する仮想ストレージ識別子７２１と、当該識別子により識別される仮想ストレージに割り当てた連続領域の開始アドレス７２２と終了アドレス７２３が格納されている。この連続領域割当管理テーブル４０４の例のエントリ７２０は、仮想ストレージＡで識別される仮想ストレージに、開始アドレスが１００であり終了アドレスが２９０である連続領域が割り当てられていることを示している。【００５７】
リソース割当管理テーブル２１４には、ＯＳ２０１上で実行される各仮想ストレージのリソース割当テーブル３１４と同様の情報が格納されている。リソース割当管理テーブル２１４には、仮想ストレージ１１１を識別する仮想ストレージ識別子７３１、当該識別子により識別される仮想ストレージへのＣＰＵ割当状況を示す割当ＣＰＵ７３２、当該仮想ストレージへの非キャッシュ用途のメモリの割当状況を示す割当非キャッシュ７３３、当該仮想ストレージへのキャッシュ用途のメモリの割当状況を示す割当キャッシュ７３４が格納されている。このリソース割当管理テーブル２１４の例のエントリ７３０は、仮想ストレージＡへの割り当てＣＰＵが計算機１０１の有するＣＰＵ１２２の５０％であること、仮想ストレージＡへの割り当て非キャッシュが、計算機１０１内の物理メモリＡ２２２の４０％であること、仮想ストレージＡへの割り当てキャッシュが、計算機１０１の有する物理メモリＢ２３１の１０％であることを示している。なお、本例では、割当率で割当状況を示しているが、割当時間や割当サイズによって割当状況を示してもよい。【００５８】
これらのテーブルによれば、計算機１０１は、物理メモリＢ２３１から、複数の仮想ストレージ１１１の夫々に割り当てる連続領域を管理することができる。【００５９】
図８は、クライアント１０３内のリソース割当設定テーブル５１３を示す。【００６０】
リソース割当設定テーブル５１３には、リソース割当管理テーブル２１４と同様の情報が格納されている。リソース割当設定テーブル５１３には、仮想ストレージ１１１を識別する仮想ストレージ識別子８１１、当該識別子により識別される仮想ストレージへのＣＰＵ割当状況を示す割当ＣＰＵ８１２、当該仮想ストレージへの非キャッシュ用途のメモリの割当状況を示す割当非キャッシュ８１３、当該仮想ストレージへのキャッシュ用途のメモリの割当状況を示す割当キャッシュ８１４が格納される。このリソース割当設定テーブル５１３のエントリ８１０は、仮想ストレージＡへの割り当てＣＰＵが計算機１０１の有するＣＰＵ１２２の５０％であり、仮想ストレージＡへの割り当て非キャッシュが、計算機１０１の有する物理メモリＡ２２２の４０％であり、仮想ストレージＡへの割り当てキャッシュが、計算機１０１の有する物理メモリＢ２３１の１０％であることを示している。なお、本例では、割当率で割当状況を示しているが、割当時間や割当サイズによって割当状況を示してもよい。【００６１】
以下、本実施例の計算機システムの動作について説明する。【００６２】
図９は、クライアント１０３によるリソース設定処理を示す。【００６３】
本処理は、仮想ストレージ１１１にリソースを割り当てるために、ユーザからクライアント１０３へリソース割当量が入力される場合に、クライアント１０３により実施される。【００６４】
設定部５１１は、ユーザから仮想ストレージ識別子と当該仮想ストレージに割り当てるＣＰＵ量、非キャッシュ量、キャッシュ量の要求を受ける（ステップ９０１）。【００６５】
通知部５１２は、要求された仮想ストレージの識別子と、ＣＰＵ量、非キャッシュ量、キャッシュ量を当該仮想ストレージに通知する（ステップ９０２）。通知を受けた仮想ストレージ１１１は、後述のリソース割当処理を実施する（ステップ９０３）。【００６６】
通知部５１２は、仮想ストレージ１１１からリソース割当処理の結果として、仮想ストレージ識別子と、割当済ＣＰＵ量、割当済非キャッシュ量、割当済キャッシュ量を受信し（ステップ９０４）。通知部５１２は、リソース割当設定テーブル５１３の当該仮想ストレージの割当ＣＰＵ８１２、割当非キャッシュ８１３、割当キャッシュ８１４を、受信した割当済ＣＰＵ量、割当済非キャッシュ量、割当済キャッシュ量に更新する（ステップ９０５）。【００６７】
設定部５１１は、仮想ストレージ識別子と、当該仮想ストレージに割り当てたＣＰＵ量と、非キャッシュ量と、キャッシュ量を表示する（ステップ９０６）。【００６８】
以上のリソース設定処理によれば、ユーザは、クライアント１０３を用いて仮想ストレージ１１１のリソース量を設定することができる。クライアント１０３の代わりに、管理計算機が用いられてもよい。【００６９】
図１０は、仮想ストレージ１１１によるリソース割当処理を示す。【００７０】
本処理は、前述のリソース設定処理のステップ９０３で、仮想ストレージ１１１により実施される。なお、仮想ストレージ１１１は、予め設定されたＣＰＵ量、非キャッシュ量、キャッシュ量を用いて、起動時に、リソース割当処理を実行してもよい。【００７１】
クライアント通信部３１２は、クライアント１０３から仮想ストレージ識別子と、当該仮想ストレージに割り当てを要求するＣＰＵ量、非キャッシュ量、キャッシュ量を受信する（ステップ１００１）。ＯＳ通信部３１１は、受信した仮想ストレージ識別子と、当該ストレージに割り当てを要求するＣＰＵ量、非キャッシュ量、キャッシュ量を、連続領域管理プログラム２１３に通知する（ステップ１００２）。通知を受けた連続領域管理プログラム２１３は、後述のリソース割当管理処理を実施する（ステップ１００３）。【００７２】
ＯＳ通信部３１１は、連続領域管理プログラム２１３から、リソース割当管理処理の結果として、仮想ストレージ識別子と当該仮想ストレージへの割当済ＣＰＵ量、割当済非キャッシュ量、当該仮想ストレージにキャッシュ３０３として割り当てられた物理メモリＢ２３１の領域の開始アドレスと終了アドレスを受信する（ステップ１００４）。【００７３】
領域調整部３１３は、ステップ１００５で受信したキャッシュ３０３の開始アドレスおよび終了アドレスが、連続領域テーブル３１５に格納されているアドレスから変更されているか否かを判定する。【００７４】
ステップ１００５において、アドレスが変更されている場合、領域調整部３１３は、ステップ１００６でキャッシュ３０３の既存領域が拡大しているか縮小しているかを判定する。【００７５】
ステップ１００６において、領域が拡大している場合、領域調整部３１３は、拡大後のキャッシュ３０３の領域である拡大領域の開始アドレスと、拡大領域の終了アドレスと、当該要求が割当要求であることとを、キャッシュ設定ＩＦ３２２を用いてストレージ制御プログラム３０２に通知する（ステップ１００７）。【００７６】
ステップ１００６において、領域が縮小している場合、領域調整部３１３は、縮小後のキャッシュ３０３の領域である縮小領域の開始アドレスと、縮小領域の終了アドレスと、当該要求が解放要求であることとを、キャッシュ設定ＩＦ３２２を用いてキャッシュ調整プログラム３２１に通知する（ステップ１００７）。【００７７】
ステップ１００７実施後、キャッシュ調整プログラム３２１は、キャッシュサイズ変更処理を実施する（ステップ１００８）。【００７８】
領域調整部３１３は、キャッシュ調整プログラム３２１によるキャッシュサイズ変更処理の完了を、キャッシュ設定ＩＦ３２２を介して受信する（ステップ１００９）。領域調整部３１３は、ステップ１００４で受信したキャッシュ３０３の開始アドレスと終了アドレスを連続領域テーブル３１５に格納する（ステップ１０１０）。領域調整部３１３は、リソース割当テーブル３１４の割当ＣＰＵ、割当非キャッシュを、それぞれステップ１００４で受信した割当済ＣＰＵ量、割当済非キャッシュ量に変更し、リソース割当テーブル３１４の割当キャッシュを、ステップ１００９のキャッシュサイズ変更処理の結果から得られる割当済キャッシュ量に更新する（ステップ１０１１）。【００７９】
クライアント通信部３１２は、リソース割当結果としてステップ１０１０で変更した割当ＣＰＵ量、割当非キャッシュ量、割当キャッシュ量を、クライアント１０３へ通知する（ステップ１０１２）。【００８０】
以上のリソース割当処理によれば、仮想ストレージ１１１は、クライアント１０３から要求に応じて、要求されたリソース量のリソースを取得することができる。【００８１】
図１１は、仮想ストレージ１１１によるキャッシュサイズ変更処理を示す。【００８２】
本処理は、前述のリソース割当処理のステップ１００８で、ストレージ制御プログラム３０２が通知を受けた際に、ストレージ制御プログラム３０２により実施される。【００８３】
キャッシュ設定ＩＦ３２２がキャッシュサイズの変更要求として、変更領域の開始アドレスと、終了アドレスと、変更要求種別とを受信する（ステップ１１０１）。変更要求種別は、解放要求または割当要求のいずれかとする。【００８４】
キャッシュ調整プログラム３２１は、変更要求種別が解放要求か割当要求かを判定する（ステップ１１０２）。【００８５】
ステップ１１０２において要求種別が解放要求の場合、キャッシュ調整プログラム３２１は、当該アドレスで指定される領域のキャッシュをクリーン状態に遷移させ（ステップ１１０３）、当該領域を解放する（ステップ１１０４）。ここでキャッシュ調整プログラム３２１は、当該キャッシュ内にダーティ状態のデータがあれば、そのデータをドライブ１２５へデステージすることで、そのデータをクリーン状態に遷移させることができる。【００８６】
ステップ１１０２において要求種別が割当要求の場合、キャッシュ調整プログラム３２１は、当該アドレスで指定される領域をキャッシュとして割り当てる（ステップ１１０５）。【００８７】
ステップ１１０４またはステップ１１０５が完了すると、キャッシュ調整プログラム３２１は、キャッシュサイズ変更処理が完了したことを、キャッシュ設定ＩＦ３２２を用いて領域調整部３１３へ通知する（ステップ１１０６）。【００８８】
以上のキャッシュサイズ変更処理によれば、仮想ストレージ１１１は、割り当てられた連続領域のサイズに応じて、キャッシュサイズを変更することができる。仮想ストレージ１１１のキャッシュに割り当てられた領域を変更することで、他の仮想ストレージのキャッシュのための連続領域を確保することができる。【００８９】
図１２は、連続領域管理プログラム２１３によるリソース割当管理処理を示す。【００９０】
本処理は、前述のリソース割当処処理のステップ１００３で、連続領域管理プログラム２１３により実施される。【００９１】
連続領域管理プログラム２１３の仮想ストレージ通信部４０１は、仮想ストレージ１１１から、リソース割当を要求する仮想ストレージを識別する仮想ストレージ識別子と、要求されるＣＰＵ量、非キャッシュ量、及びキャッシュ量（要求キャッシュサイズ）とを受信する（ステップ１２０１）。【００９２】
領域調整管理部４０２は、受信した要求キャッシュサイズの連続領域を確保可能か否かを判定する（ステップ１２０２）。具体的には、領域調整管理部４０２は、連続領域管理テーブル４０３および連続領域割当管理テーブル４０４を用いて、連続領域割当管理テーブル４０４に格納されている当該仮想ストレージへの割当領域と、それに連続する未割当領域とを合わせて、要求キャッシュサイズの連続領域が確保可能か否かを判定する。前述の連続領域管理テーブル４０３および連続領域割当管理テーブル４０４の例において、ステップ１２０１で連続領域管理プログラム２１３が仮想ストレージＡから要求キャッシュサイズが９００である割当要求を受けたことを想定する。仮想ストレージＡにはすでに１００から２９０までのアドレスで表される１９０のサイズの割当がされているため、新規に確保が必要なサイズは９００−１９０＝７１０である。この時、連続領域割当管理テーブル４０４によれば、仮想ストレージＡが確保可能な連続領域が２９０から５００までの２１０であり、領域調整管理部４０２は、要求キャッシュサイズの連続領域を確保できない。なお、領域調整管理部４０２は、当該仮想ストレージの起動時など、仮想ストレージのキャッシュに連続領域が割り当てられていない場合、未割当領域から連続領域を確保できるか否かを判定する。【００９３】
ステップ１２０２において確保ができない場合、領域調整管理部４０２は、連続領域管理テーブル４０３および連続領域割当管理テーブル４０４を用いて、物理メモリＢ２３１の領域の内、仮想ストレージに割り当てられていない未割当領域のサイズを取得し、ステップ１２０１で受信した割り当て要求キャッシュサイズ以上の未割当領域があるか否かを判定する（ステップ１２０３）。前述の連続領域管理テーブル４０３および連続領域割当管理テーブル４０４の例において、未割当である領域は、２９０から５００までのアドレスで表される２１０のサイズの領域と、１４５０から２０００までのアドレスで表される５５０のサイズの領域であり、合計のサイズは７６０となる。要求キャッシュサイズは７１０であり、十分なサイズの未割当領域があると判定される。【００９４】
ステップ１２０３において未割当領域が十分であった場合、領域調整管理部４０２は、各仮想ストレージに割り当てる連続領域が連続アドレスになるように、各仮想ストレージに割り当てる領域を変更する（ステップ１２０４）。前述のステップ１２０３の例において、領域調整管理部４０２は、仮想ストレージＡに割り当てる領域を、１００から２９０までのアドレスで表される領域から、１００から１０００までのアドレスで表される領域に変更し、仮想ストレージＢに割り当てる領域を、５００から１４５０までのアドレスで表される領域から、１０００から１９５０までのアドレスで表される領域に変更する。【００９５】
仮想ストレージ通信部４０１は、割り当てる領域が変更された結果、割り当て済領域を解放する必要のある仮想ストレージに対し、キャッシュサイズ変更依頼処理を要求する。この時、仮想ストレージ通信部４０１は、解放領域の開始アドレス及び終了アドレスと、当該要求が解放要求であることとを通知する（ステップ１２０５）。前述のステップ１２０４の例において、仮想ストレージ通信部４０１は、仮想ストレージＢに対して、５００（開始アドレス）から１０００（終了アドレス）までのアドレスで表される領域の解放要求を通知する。【００９６】
仮想ストレージ１１１は、依頼に応じて、前述のキャッシュサイズ変更依頼処理を実施する（ステップ１２０６）。【００９７】
仮想ストレージ通信部４０１は、仮想ストレージからキャッシュサイズ変更依頼処理の完了通知を受信する（ステップ１２０７）。【００９８】
仮想ストレージ通信部４０１は、ステップ１２０４で割り当てる領域が変更された結果、新規に領域を割り当てる必要のある仮想ストレージに対し、キャッシュサイズ変更依頼処理を要求する。この時、仮想ストレージ通信部４０１は、割当領域の開始アドレス及び終了アドレスと、当該要求が割当要求であることとを通知する（ステップ１２０８）。例えば仮想ストレージ通信部４０１は、仮想ストレージＡに対して２９０から１０００までのアドレスで表される領域の割当を要求し、仮想ストレージＢに対して１４５０から１９５０までのアドレスで表される領域の割当を要求する。【００９９】
仮想ストレージ１１１はキャッシュサイズ変更依頼処理を実施する（ステップ１２０９）。仮想ストレージ通信部は、仮想ストレージからキャッシュサイズ変更依頼処理の完了通知を受信する（ステップ１２１０）。【０１００】
仮想ストレージ通信部４０１は、ステップ１２０４で変更した通りに連続領域割当管理テーブル４０４を更新する（ステップ１２１１）。例えば、仮想ストレージ通信部４０１は、連続領域割当管理テーブル４０４において、仮想ストレージＡの開始アドレスを１００に、終了アドレスを１０００に変更し、仮想ストレージＢの開始アドレスを１０００に、終了アドレスを１９５０に変更する。【０１０１】
ステップ１２０２において確保可能な場合、仮想ストレージ通信部４０１は、確保した領域の開始アドレス、終了アドレスを用いて連続領域割当管理テーブル４０４を更新する（ステップ１２１１）。【０１０２】
仮想ストレージ通信部４０１は、ステップ１２０１の要求キャッシュサイズを用いて、リソース割当管理テーブル２１４の割当キャッシュ７３４を更新する（ステップ１２１２）。【０１０３】
ＯＳ２０１のＣＰＵ割当調整プログラム２１１は、ステップ１２０１で要求されたＣＰＵ量を当該仮想ストレージ１１１に設定する（ステップ１２１３）。【０１０４】
ステップ１２０３において未割り当て領域が不足する場合も、ＣＰＵ割当調整プログラム２１１は、ステップ１２１３を実施する。【０１０５】
ＣＰＵ割当調整プログラム２１１は、当該仮想ストレージからの割当済ＣＰＵ量に基づき、リソース割当管理テーブル２１４の当該仮想ストレージに関する割当ＣＰＵ７３２を更新する（ステップ１２１４）。【０１０６】
ＯＳ２０１のメモリ割当調整プログラム２１２は、ステップ１２０１で要求された非キャッシュ量を当該仮想ストレージに設定する（ステップ１２１５）。メモリ割当調整プログラムは、割当済非キャッシュ量に基づきリソース割当管理テーブル２１４の当該ストレージに関する割当非キャッシュ７３３を変更する（ステップ１２１６）。【０１０７】
仮想ストレージ通信部４０１は、リソース割当結果として、仮想ストレージ識別子と、リソース割当管理テーブル２１４から得られるＣＰＵ量及び非キャッシュ量と、連続領域割当管理テーブル４０４から得られる仮想ストレージ識別子から識別される開始アドレス及び終了アドレスとを、仮想ストレージに通知する（ステップ１２１７）。【０１０８】
以上のリソース割当管理処理によれば、連続領域管理プログラム２１３は、要求に応じて、仮想ストレージ１１１のキャッシュ３０３に連続領域を割り当てることができる。キャッシュに連続領域を割り当てることにより、仮想ストレージ１１１は、ＩＯ処理においてＤＭＡ転送を実行し、仮想ストレージ１１１の性能を向上させることができる。また、キャッシュサイズを設定することにより、各仮想ストレージ１１１の性能のバランスを制御することができる。連続領域管理プログラム２１３は、連続領域管理テーブル４０３および連続領域割当管理テーブル４０４を用いることにより、要求に応じて連続領域を選択することができる。連続領域管理プログラム２１３は、要求キャッシュサイズを有する連続領域が確保できないと判定された場合であっても、他の仮想ストレージに割り当てられた領域を物理メモリＢ２３２内で移動し、連続領域を確保することで、物理メモリＢ２３２を有効に利用することができる。【０１０９】
図１３は、仮想ストレージ１１１によるキャッシュサイズ変更依頼処理を示す。【０１１０】
本処理は、リソース割当管理処理のステップ１２０６およびステップ１２０９に応じて、連続領域使用プログラム３０１により実施される。【０１１１】
ＯＳ通信部３１１は、キャッシュ割当を変更する領域の開始アドレスと終了アドレスと変更要求種別とを受信する（ステップ１３０１）。【０１１２】
領域調整部３１３は、キャッシュ設定ＩＦ３２２を用いて、ストレージ制御プログラム３０２に、キャッシュ割当を変更する領域の開始アドレスと終了アドレスと変更種別とを通知する（ステップ１３０２）。ストレージ制御プログラム３０２は、前述のキャッシュサイズ変更処理を実施する（ステップ１３０３）。【０１１３】
領域調整部３１３は、ストレージ制御プログラム３０２から、キャッシュサイズ変更処理の完了を受信する（ステップ１３０４）。領域調整部３１３は、ステップ１３０１で受信した開始アドレスと終了アドレスを用いて連続領域テーブル３１５を更新する（ステップ１３０５）。例えば、前述の連続領域テーブル３１５の例において、領域調整部３１３は、ステップ１３０１で開始アドレスが２９０であり終了アドレスが１０００である割当要求を受けた場合、連続領域テーブル３１５の開始アドレス６２１を変更せずに、終了アドレス６２２を２９０から１０００へ変更する。【０１１４】
領域調整部３１３は、リソース割当テーブル３１４の割当キャッシュ６１３を、サイズ変更後の情報に変更する（ステップ１３０６）。【０１１５】
ＯＳ通信部３１１が、キャッシュサイズ変更依頼処理の終了をＯＳ２０１に通知する（ステップ１３０７）。【０１１６】
図１４は、設定ウィンドウ１４０１を示す。【０１１７】
前述のリソース設定処理において、クライアント１０３内のＱｏＳ設定プログラム５０１の設定部５１１は、仮想ストレージ１１１へのリソース割当量を変更するために、設定ウィンドウ１４０１を表示装置に表示させる。【０１１８】
設定ウィンドウ１４０１は、リソース割当量変更部１４１１と、更新ボタン１４１２と、キャンセルボタン１４１３とを含む。【０１１９】
リソース割当量変更部１４１１は、仮想ストレージ識別子と、当該仮想ストレージへの、ＣＰＵ、非キャッシュ、キャッシュの割当量とを表示する。更にリソース割当量変更部１４１１は、仮想ストレージ識別子と、各リソースの割当量との変更を受け付ける。【０１２０】
ユーザが更新ボタン１４１２を押下すると、設定部５１１が仮想ストレージ識別子と、当該仮想ストレージへの割当を要求する、ＣＰＵ量、非キャッシュ量、キャッシュ量とを、入力装置から受信し、リソース設定処理のステップ９０１を実施する。【０１２１】
ユーザがキャンセルボタン１４１３を押下すると、設定部５１１はリソース割当処理を終了し、設定ウィンドウ１４０１を閉じる。【０１２２】
この設定ウィンドウ１４０１によれば、ユーザは、クライアント１０３を用いて、仮想ストレージ１１１に割り当てるリソース量の要求を発行することができる。ＣＰＵ量、非キャッシュ量、キャッシュ量は、仮想ストレージ１１１の性能に影響を与えるため、これらを設定することにより、仮想ストレージ１１１の性能を保証することができる。また、複数の仮想ストレージの間でリソース量を設定することにより、仮想ストレージの性能のバランスを制御することができる。【０１２３】
本実施例によれば、ＯＳ２０１の機能を用いると共に、計算機１０１に連続領域管理プログラム２１３を追加することで、キャッシュに連続領域を割り当てることを実現できるため、プログラムの改変量を抑え、プログラムの開発コストを抑えることができる。
【実施例２】
【０１２４】
本実施例においては、実施例１と異なる部分を説明する。【０１２５】
実施例１と比較すると、本実施例の計算機１０１内の物理リソースは、ＯＳ管理外物理リソース２０３を含まない。即ち、本実施例のＯＳ２０１は、物理メモリ１２１の全てを物理メモリＡ２２２として使用することができる。【０１２６】
図１５は、実施例２の計算機１０１の論理構成を示す。【０１２７】
実施例１と比較すると、本実施例の計算機１０１は、連続領域管理テーブル４０３を含まず、連続領域確保プログラム１５０１およびメモリ割当テーブル１５０２を含む。連続領域確保プログラム１５０１は、キャッシュとして連続領域を確保する。メモリ割当テーブル１５０２は、各プロセスに割り当てられたメモリ領域を管理する。【０１２８】
この構成により、ＯＳ２０１が計算機１０１内のすべての物理リソースを管理する場合でも、物理メモリ１２１内の連続領域を確保することができる。【０１２９】
図１６は、メモリ割当テーブル１５０２を示す。【０１３０】
メモリ割当テーブル１５０２には、物理メモリＡ２２２内の領域の物理アドレス１６１１と、当該アドレスにより識別される領域の割当先を識別する割当先識別子１６１２と、割当先に仮想アドレスを提供する場合の仮想アドレス１６１３とが格納されている。例えばプロセスには仮想アドレスが提供される。本実施例では、ＯＳ２０１が物理メモリ１２１を固定長で管理することを想定しているが、可変長で管理する場合、本テーブルは終了アドレスを含んでもよい。【０１３１】
このメモリ割当テーブル１５０２の例のエントリ１６１０は、１００の物理アドレスで識別される領域が仮想ストレージＡに割り当てられていることを示している。またエントリ１６２０は、１２０の物理アドレスで識別される領域が、仮想ストレージ以外のプロセスＸに割り当てられており、当該領域はプロセスＸに対し仮想アドレスが０である領域として提供されていることを示している。【０１３２】
本実施例の計算機１０１は、実施例１で示した連続領域管理テーブル４０３の代替として、本テーブルを使用する。【０１３３】
このメモリ割当テーブル１５０２によれば、物理メモリ１２１内で各プロセスに割り当てられている領域を管理することにより、連続領域を確保することができる。【０１３４】
実施例１と比較すると、本実施例は、リソース割当管理処理の一部が異なる。本実施例では、リソース割当管理処理のステップ１２０２の処理を、次に示す確保処理に代替する。【０１３５】
図１７は、確保処理を示す。【０１３６】
リソース割当管理処理において、ステップ１２０１が実施された後、連続領域確保プログラム１５０１は、現在の割当状況において要求キャッシュサイズを確保可能か否かを判定する（ステップ１７０１）。【０１３７】
ステップ１７０１において要求キャッシュサイズを確保可能であると判定された場合、連続領域確保プログラム１５０１は、当該領域をピンダウンする（ステップ１７０２）。ピンダウンは、当該領域のデータがスワップアウトされ当該領域が解放されることを防ぐ。即ち、ＯＳ２０１は、ピンダウンにより、当該領域を固定して使用することができる。その後、仮想ストレージ通信部４０１は、リソース割当管理処理へ確保可であることを返す（ステップ１７０３）。これにより、リソース割当管理処理は、ステップ１２１１を実施する。【０１３８】
ステップ１７０１において要求キャッシュサイズを確保できないと判定された場合、連続領域確保プログラム１５０１は、未割当領域と物理連続である必要のない領域の入れ替えを行い、キャッシュを要求している仮想ストレージに割り当てることのできる未割当状態の物理連続な領域を拡張する（ステップ１７０４）。例えば、前述のメモリ割当テーブル１５０２の例において、仮想ストレージＡに３０のサイズのキャッシュを割り当てる割当要求が発行された場合を例に挙げる。仮想ストレージ以外のプロセスに割り当てるメモリ領域は物理連続である必要はないため、連続領域確保プログラム１５０１は、プロセスＸに割り当てられている１２０の物理アドレスの領域を、未割当領域と入れ替える。そして、連続領域確保プログラム１５０１は、１２０の物理アドレスの領域に格納されているデータを、１５０の物理アドレスの未割当領域にコピーする。そして、連続領域確保プログラム１５０１は、プロセスＸに０の仮想アドレスとして提供する領域を、１２０の物理アドレスの領域から１５０の物理アドレスの領域に変更する。【０１３９】
連続領域確保プログラム１５０１は、未割当状態の物理連続な領域を拡張した結果、要求キャッシュサイズのキャッシュの確保が可能か否かを判定する（ステップ１７０５）。【０１４０】
ステップ１７０５において、確保が可能な場合、連続領域確保プログラム１５０１は、前述のステップ１７０２を実施する。【０１４１】
ステップ１７０５において、確保ができない場合、領域調整管理部４０２は、リソース割当管理処理へ確保不可を返す（ステップ１７０６）。これにより、リソース割当管理処理は、ステップ１２０３を実施する。【０１４２】
以上の確保処理によれば、連続領域確保プログラム１５０１は、物理メモリ１２１のうち仮想ストレージ以外の特定プロセスに割り当てられている領域を変更することにより、仮想ストレージ１１１のための連続領域を確保するため、物理メモリ１２１を有効に利用することができる。また、連続領域確保プログラム１５０１は、特定プロセスに割り当てられている領域内のデータを未割当領域にコピーすることで、特定プロセスを継続でき、特定プロセスに割り当てる領域を未割当領域に変更することができる。連続領域確保プログラム１５０１は、確保された連続領域をピンダウンすることにより、割り当てる領域を固定し、その領域の解放を防ぐことができる。【０１４３】
本実施例によれば、計算機１０１は、物理メモリ１２１を、物理メモリＡ２２２と物理メモリＢ２３１に分けることなく、ＯＳ２０１と仮想ストレージ１１１のキャッシュに使用できるため、物理メモリ１２１を有効に利用することができる。【０１４４】
本発明の表現のための用語について説明する。領域情報は、連続領域管理テーブル４０３と連続領域割当管理テーブル４０４とリソース割当管理テーブル２１４とリソース割当テーブル３１４と連続領域テーブル３１５とであってもよいし、それらの情報の一部であってもよい。設定要求は、リソース設定処理のステップ９０１の要求であってもよい。特定サイズは、要求キャッシュサイズであってもよいし、キャッシュとして割り当て可能なメモリサイズに対する要求キャッシュサイズの割合であってもよい。【０１４５】
以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲を上記構成に限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。
【符号の説明】
【０１４６】
１０１…計算機、  １０２…ネットワーク、  １０３…クライアント、  １１１…仮想ストレージ、  １２１…物理メモリ、  １２２…ＣＰＵ、  １２３…ネットワークＩＦ、  １２４…ドライブＩＦ、  １２５…ドライブ、  １３１…コア、  １３２…ＤＭＡコントローラ、  ２０１…ＯＳ
【図１】
2017056310.tif 000003
【図２】
2017056310.tif 000004
【図３】
2017056310.tif 000005
【図４】
2017056310.tif 000006
【図５】
2017056310.tif 000007
【図６】
2017056310.tif 000008
【図７】
2017056310.tif 000009
【図８】
2017056310.tif 000010
【図９】
2017056310.tif 000011
【図１０】
2017056310.tif 000012
【図１１】
2017056310.tif 000013
【図１２】
2017056310.tif 000014
【図１３】
2017056310.tif 000015
【図１４】
2017056310.tif 000016
【図１５】
2017056310.tif 000017
【図１６】
2017056310.tif 000018
【図１７】
2017056310.tif 000019
【国際調査報告】
2017056310.tif 000020
2017056310.tif 000021
2017056310.tif 000022
2017056310.tif 000023