(57)【特許請求の範囲】
【請求項１】
メモリバッファを備えた一つのＣＰＵ上で複数の仮想ＯＳが時分割で動作する仮想計算機システムにおいて，該仮想計算機システムにおける各仮想ＯＳの実行環境であるドメインに該メモリバッファの領域の割当てを行うメモリバッファ割当装置であって，
前記メモリバッファをｎ個の領域に分割し，該ｎ個の領域のうち，所定の分割単位数ｍの領域を専用メモリバッファとして設定し，残りの分割単位数ｎ−ｍの領域を共用メモリバッファとして設定するメモリバッファ分割部と，
前記仮想計算機システムにおける各ドメインのＣＰＵ使用率を収集するデータ収集部と，
前記ドメインのうち，前記ＣＰＵ使用率が高いものから順にｍ個のドメインを，前記専用メモリバッファとして設定された各領域に１つずつ割り当て，前記ＣＰＵ使用率が高いものからｍ＋１番目以降のドメインを，前記共用メモリバッファとして設定されたいずれかの領域に割り当てるメモリバッファ割当部とを備える
ことを特徴とするメモリバッファ割当装置。
【請求項２】
前記データ収集部は，前記仮想計算機システムにおける各ドメインのリソース使用状況データを収集し，
前記リソース使用状況データに基づき，前記分割された領域のサイズを変更するメモリバッファサイズ変更部を備える
ことを特徴とする請求項１に記載のメモリバッファ割当装置。
【請求項３】
前記メモリバッファ割当部は，指定された特定のドメインを，優先的に専用メモリバッファとして設定された領域に割り当てる
ことを特徴とする請求項１または請求項２に記載のメモリバッファ割当装置。
【請求項４】
メモリバッファを備えた一つのＣＰＵ上で複数の仮想ＯＳが時分割で動作する仮想計算機システムにおいて，該仮想計算機システムにおける各仮想ＯＳの実行環境であるドメインに該メモリバッファの領域の割当てを行うメモリバッファ割当装置をコンピュータに実現させるためのプログラムであって，
前記コンピュータを，
前記メモリバッファをｎ個の領域に分割し，該ｎ個の領域のうち，所定の分割単位数ｍの領域を専用メモリバッファとして設定し，残りの分割単位数ｎ−ｍの領域を共用メモリバッファとして設定するメモリバッファ分割部と，
前記仮想計算機システムにおける各ドメインのＣＰＵ使用率を収集するデータ収集部と，
前記ドメインのうち，前記ＣＰＵ使用率が高いものから順にｍ個のドメインを，前記専用メモリバッファとして設定された各領域に１つずつ割り当て，前記ＣＰＵ使用率が高いものからｍ＋１番目以降のドメインを，前記共用メモリバッファとして設定されたいずれかの領域に割り当てるメモリバッファ割当部として
機能させるためのメモリバッファ割当プログラム。
【請求項５】
前記データ収集部は，前記仮想計算機システムにおける各ドメインのリソース使用状況データを収集し，
前記コンピュータを，前記収集されたリソース使用状況データに基づき，前記領域のサイズを変更するメモリバッファサイズ変更部として
機能させるための請求項４に記載のメモリバッファ割当プログラム。
【請求項６】
前記メモリバッファ割当部は，指定された特定のドメインを，優先的に専用メモリバッファとして設定された領域に割り当てる
ことを特徴とする請求項４または請求項５に記載のメモリバッファ割当プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，仮想計算機システムの技術に関するものであり，特に，メモリバッファの領域の分割，および仮想計算機システムにおける各ドメインへの分割した領域の割り当てを行うメモリバッファ割当装置およびプログラムに関するものである。
【背景技術】
【０００２】
現在のサーバシステムでは，プロセッサの高性能化が進んでおり，１０００［MIPS］を超えるサーバも多い。高性能プロセッサのコンピュータには，プロセッサとメモリとの性能差を埋めるために，メモリバッファが搭載されている。
【０００３】
図１２は，プロセッサとメモリの構造概念図である。図１２に示すように，プロセッサ１００とメモリストレージ３００との間に，メモリバッファ２００が設けられている。メモリバッファ２００は，メモリストレージ３００と比較して容量は少ないが，アクセススピードは速い。メモリバッファ２００は，メモリバッファ（1'st）２００ａ，メモリバッファ（2'nd）２００ｂ，... といったように，多段階で設計されることもある。
【０００４】
これら，高性能プロセッサの能力をできる限り使用するために，複数のゲストＯＳを動作させる仮想計算機システム（以下，ＶＭ（Virtual Machine ）機構）が，多数開発されている。
【０００５】
ＶＭ機構は，一台のハードウェア上で一または複数の計算機を仮想的に動作させるシステムである。ＶＭ機構の一つの目的は，プロセッサ使用の空き時間をできる限り少なくすることによって実プロセッサの使用効率化を図ることである。
【０００６】
ＶＭ機構において，仮想的に実行させる計算機（仮想計算機）内で動作するプロセッサ（仮想プロセッサ）による命令の実行は，命令実行時の仮想プロセッサの動作を，実プロセッサによって擬似的に実行することによって行われ，仮想プロセッサがハードウェアを時分割で使用する。
【０００７】
ＶＭ機構における一つの仮想実行環境（仮想ＯＳの環境）をドメイン（Domain）と呼び，複数の異なる仮想ＯＳが独立して実行可能である環境をマルチドメイン環境と称する。
【０００８】
ＶＭ機構における仮想計算機へのリソース割当てを行う技術が記載された文献として，例えば特許文献１がある。
【０００９】
特許文献１には，仮想計算機システムにおいて，各ＯＳのＣＰＵ負荷に基づき，論理区画の割当量および主記憶とＩ／Ｏとについての共用割当時の割当率を決定する。なお，特許文献１には，メモリバッファについての記載は特にない。
【特許文献１】特開２００７−２００３４６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ＶＭ機構では，異なる仮想ＯＳがプロセッサ１００にディスパッチされるごとに，メモリストレージ３００上の参照領域が大きく変化するため，メモリバッファ２００のミスヒットが発生しやすくなる。すなわち，ＶＭ機構は，メモリバッファ２００のヒット率を考えた場合には効率的なシステムではなく，一定時間ごとにメモリバッファ２００のクリアが発生してしまう。そのため，かえって，プロセッサ１００のジョブ実行時間が増加してしまい，実プロセッサの高性能を活用できないという問題がある。
【００１１】
通常，実ＯＳ配下のジョブは，Ｉ／Ｏ割り込みなどによって制御権限をＯＳへ渡してしまうため，タイムシェアリングにより割り当てられた時間いっぱいにハードウェアリソースを使用することはほとんどない。
【００１２】
これに対して，ＶＭ機構における各仮想ＯＳは，実ＯＳ配下のジョブの場合とは異なり，ほぼタイムシェアリング通りにハードウェアリソースを使用する。そのため，従来は，仮想ＯＳにハードウェアリソースが割り当てられた段階ではメモリバッファ２００のヒット率が低く，時間と共にヒット率が安定するといった状態を，仮想ＯＳの制御が遷移するたびに繰り返していた。
【００１３】
図１３は，キャッシュの遷移を説明する図である。
【００１４】
ある時刻において，プロセッサ１００は，ＶＭ機構４００におけるドメイン＃ａの処理に割り当てられているものとする。このとき，ドメイン＃ａの処理中では，メモリバッファ２００には，ドメイン＃ａのデータが格納された状態となっている。
【００１５】
時間ｔ後には，プロセッサ１００がドメイン＃ｙの処理に割り当てられたものとする。ドメイン＃ｙの処理中に，ドメイン＃ｙの処理に必要なデータがメモリバッファ２００上に存在しないときにはキャッシュミスとなり，メモリストレージ３００から必要なデータを読み込む必要がある。
【００１６】
このとき，ドメイン＃ｙの処理のための新たなデータをメモリバッファ２００に読み込むことによって，ドメイン＃ａのデータがクリアされてしまうものとする。
【００１７】
次に，プロセッサ１００がドメイン＃ａの処理に割り当てられたときには，前回の最後に使用されたドメイン＃ａのデータが既にメモリバッファ２００上に存在しないため，再びキャッシュミスとなり，必要なデータの再読み込み処理が発生してしまう。
【００１８】
このように，プロセッサ１００がＶＭ機構４００の各ドメインに順に割り当てられると，頻繁にキャッシュミスが発生してしまい，プロセッサ１００の高性能を有効に活用できないという問題があった。
【００１９】
本発明は，メモリバッファを備えた仮想計算機システムにおいて，メモリバッファのヒット率を向上させることが可能となるメモリバッファの割り当て処理を提供することを目的とする。
【課題を解決するための手段】
【００２０】
開示する装置では，メモリバッファを分割し，分割されたメモリバッファを，専用メモリバッファと共用メモリバッファとに設定する。そして，ｍ個のドメインを専用メモリバッファとして記憶された各領域に１つずつ割り当てる。，このｍ個以外のドメインを共用メモリバッファとして記憶された領域に割り当てる。
さらに，仮想計算機マシンの各ドメインのＣＰＵ使用率を取得し，ＣＰＵ使用率が高いドメインから優先的に専用メモリバッファを割り当ててもよい。
【００２１】
さらに，一定間隔ごとに，各ドメインのＣＰＵ使用率を取得し，専用メモリバッファに割り当てるドメインの見直しを行う。
【００２２】
また，各ドメインのリソース使用状況データを取得し，取得されたリソース使用状況データをもとに，各分割メモリバッファのサイズを変更するようにしてもよい。
【００２３】
また，外部から特定のドメインを指定できるようにし，指定された特定ドメインに対して優先的に専用メモリバッファを割り当てるようにしてもよい。
【００２４】
具体的には，メモリバッファを備えた一つのＣＰＵ上で複数の仮想ＯＳが時分割で動作する仮想計算機システムにおいて，該仮想計算機システムにおける各仮想ＯＳの実行環境であるドメインに該メモリバッファの領域の割当てを行うメモリバッファ割当装置は，１）前記メモリバッファをｎ個の領域に分割し，該ｎ個の領域のうち，所定の分割単位数ｍの領域を専用メモリバッファとして設定し，残りの分割単位数ｎ−ｍの領域を共用メモリバッファとして設定するメモリバッファ分割部と，２）前記仮想計算機システムにおける各ドメインのＣＰＵ使用率を収集するデータ収集部と，３）前記ドメインのうち，前記ＣＰＵ使用率が高いものから順にｍ個のドメインを，前記専用メモリバッファとして設定された各領域に１つずつ割り当て，前記ＣＰＵ使用率が高いものからｍ＋１番目以降のドメインを，前記共用メモリバッファとして設定されたいずれかの領域に割り当てるメモリバッファ割当部とを備える。
【００２５】
ＣＰＵ使用率が高いドメインは，メモリバッファの利用率が高いことから，そのようなドメインに対して専用メモリバッファを割り当てることによって，メモリバッファにおける参照領域の変動を抑えて，ヒット率を向上させることができる。
【００２６】
また，上記のメモリバッファ割当装置は，データ収集部が，仮想計算機システムにおける各ドメインのリソース使用状況データを収集し，さらに，収集されたリソース使用状況データ，例えばメモリ使用量，Ｉ／Ｏ発行回数などに基づき，メモリバッファの分割された領域のサイズを変更するメモリバッファサイズ変更部を備える。
【００２７】
このように，メモリバッファの分割された領域のサイズを，割り当てられたドメインの状態に合わせて変更することで，メモリバッファのヒット率を，より向上させることができる。
【００２８】
また，上記のメモリバッファ割当装置は，メモリバッファ割当部が，指定された特定のドメインを，優先的に専用メモリバッファに割り当てる。
【００２９】
これにより，ＣＰＵ使用率が低くても処理を遅延させてはならないドメインが存在する場合に，そのドメインに対して専用メモリバッファを優先的に割り当てることができる。
【発明の効果】
【００３０】
開示した装置によれば，一般的なメモリバッファ制御であるＬＲＵ（Least Recently Used）ロジックのみでなく，仮想計算機システムの各ドメインのＣＰＵ使用率，資源使用状況を意識したメモリバッファ制御を行うことにより，メモリバッファのヒット率を向上させることが可能となる。
【００３１】
例えば，メモリバッファのヒット率を０．１％向上させるだけでも，メモリの性能がプロセッサと比較して１００〜３００倍程度遅いため，コンピュータ全体の効率は１０％〜３０％程度向上する。
【００３２】
メモリバッファのヒット率を０．０１％向上させた場合でも，コンピュータ全体の効率は１％〜３％向上することとなり，１００ＣＰＵを超えるようなマルチプロセッサシステムの場合では，必要ＣＰＵ数を少なくすることも可能となる。
【発明を実施するための最良の形態】
【００３３】
以下，本発明の実施の形態について，図を用いて説明する。
【００３４】
図１は，開示する装置の本実施の形態における動作モデルの例を示す図である。
【００３５】
図１に示す動作モデルでは，ハードウェア構成として，ＣＰＵ１とメモリストレージ４とを備え，ＣＰＵ１が，プロセッサ２とメモリバッファ３とを備える。
【００３６】
かかるハードウェア上で動作するＶＭ機構５において実現される各ドメインは，ハードウェア資源を時分割で共有する。
【００３７】
図１に示す動作モデルにおいて，メモリバッファ３がＶＭ機構５を意識することにより，効率的なメモリバッファ３の使用が可能となる。そのために，本実施の形態のメモリバッファ割当装置１０は，メモリバッファ３を分割し，ＣＰＵ使用率が高いドメインを特定の分割メモリバッファに割付けることにより，メモリバッファ３のヒット率を向上させる。
【００３８】
メモリバッファ３の容量とヒット率は，メモリバッファ３の基本的制御がＬＲＵ論理で行われていることから，飽和曲線（Dose Resp ）に近い状態となる。このことから，メモリバッファ割当装置が図１に示すようにメモリバッファ３を分割し，その分割メモリバッファをＣＰＵ使用率が高いドメインに優先して割り当てることにより，メモリバッファ３内の参照領域の頻繁な変動を防ぎ，メモリバッファ３のヒット率を向上させることが可能となる。
【００３９】
図２は，各ドメインに対するメモリバッファ割当て例を示す図である。
【００４０】
ここでは，メモリバッファ３は，領域＃１〜＃４に４分割されており，そのうち領域＃１〜＃３までの３つが専用メモリバッファとして，領域＃４が共用メモリバッファとして設定される。
【００４１】
専用メモリバッファの各領域＃１〜＃３（以下，専用メモリバッファ＃１〜＃３）は，選定された１つのドメインで使用するように割当てが行われる。専用メモリバッファに割り当てられなかったその他のドメインで，共用メモリバッファの領域＃４（以下，共用メモリバッファ＃４）を使用する。
【００４２】
また，ＶＭ機構５は，時分割で順にハードウェアリソースが割り当てられる６つのドメイン＃ａ〜＃ｆを有する。
【００４３】
ＶＭ機構５の管理を行うＶＭ管理装置２０が，各ドメイン切替間隔ごとに，各ドメインのＣＰＵ使用率を計測する場合に，メモリバッファ割当装置１０は，各ドメインの切替毎または複数回に１回のタイミングで，専用メモリバッファの割当て変更のチェックを行う。
【００４４】
図２（Ａ）は，各ドメインのＣＰＵ使用率が，「＃ａ＞＃ｂ＞＃ｃ＞＃ｄ＞＃ｅ＞＃ｆ」の順である場合のメモリバッファ割当て例を示す図である。
【００４５】
この場合に，メモリバッファ割当装置１０は，ＣＰＵ使用率が高い方からドメイン＃ａ，ドメイン＃ｂ，ドメイン＃ｃの３つのドメインを，順に専用メモリバッファ＃１，＃２，＃３に割り当てる。残りのドメイン＃ｄ，ドメイン＃ｅ，ドメイン＃ｆの３つのドメインは，１つの共用メモリバッファ＃４を使用することになる。
【００４６】
図２（Ｂ）は，図２（Ａ）の状態から一定時間後に，ドメイン＃ｅのＣＰＵ使用率が増加し，各ドメインのＣＰＵ使用率が，「＃ｅ＞＃ａ＞＃ｂ＞＃ｃ＞＃ｄ＞＃ｆ」の順になった場合の例である。
【００４７】
この場合に，メモリバッファ割当装置１０は，ＣＰＵ使用率が高くなったドメイン＃ｅに，専用メモリバッファを割り当てる。
【００４８】
ここでは，専用メモリバッファが割り当てられていたドメインの中で，最もＣＰＵ使用率が低いドメイン＃ｃが割り当てられていた専用メモリバッファ＃３に，ドメイン＃ｅが割り当てられる。専用メモリバッファの割当てから外されたドメイン＃ｃは，以後共用メモリバッファ＃４を使用する。
【００４９】
図２（Ｃ）は，図２（Ｂ）の状態からさらにドメイン＃ｅの資源使用量が増加した場合の例である。メモリバッファ割当装置１０は，資源使用量が多いドメインに割り当てられた専用メモリバッファのサイズを大きくするサイズ変更を行う。
【００５０】
このような専用メモリバッファサイズ変更は，例えば，専用メモリバッファの割当て変更チェック毎または複数回に１回のタイミングで，ＶＭ機構５のＶＭ管理装置２０によって計測された各ドメインの実メモリ使用量やＩ／Ｏ発行回数などの資源使用量の情報をもとに，所定のアルゴリズムで判定が行われ，実行される。
【００５１】
図２（Ｃ）に示す例では，ドメイン＃ｅが割り当てられた＃３の専用メモリバッファのサイズを大きし，その分ドメイン＃ａ，ドメイン＃ｂが割り当てられた＃１，＃２の専用メモリバッファのサイズが小さくなるように，サイズ変更されている。
【００５２】
また，メモリバッファ割当装置１０は，外部入力により特定のドメインを指定して，ＣＰＵ使用率にかかわらず優先的に専用メモリバッファを割り当てる。
【００５３】
ドメインの中には，ＣＰＵ使用率が小さくても処理を遅らせてはならないものも存在する可能性がある。そのような場合には，外部入力により特定のドメインを指定し，優先的に専用メモリバッファを割り当てるようにする。
【００５４】
図２（Ｄ）は，図２（Ｂ）の状態で，ドメイン＃ｆが優先的に専用メモリバッファを割り当てる特定ドメインとして指定された場合の割当て例である。
【００５５】
この場合に，各ドメインのＣＰＵ使用率は，「＃ｅ＞＃ａ＞＃ｂ＞＃ｃ＞＃ｄ＞＃ｆ」の順である。ＣＰＵ使用率が最低のドメイン＃ｆが特定ドメインとして指定されているので，ドメイン＃ｆには専用メモリバッファを割り当てる必要がある。専用メモリバッファが割り当てられていたドメインの中で，最もＣＰＵ使用率が低いドメイン＃ｂが割り当てられていた専用メモリバッファ＃２に，割当て変更でドメイン＃ｆが割り当てられる。専用メモリバッファの割当てから外されたドメイン＃ｂは，以後共用メモリバッファ＃４を使用する。
【００５６】
なお，特定ドメインの解除は，指定時と同様に，外部入力により行うことができる。
【００５７】
図２で説明したようなメモリバッファ３の分割および専用メモリバッファの割当てを行うことにより，専用メモリバッファに割り当てられた仮想ＯＳについては，メモリのヒット率が安定した状態を長く維持することができるため，全体としてメモリバッファ３のヒット率の向上を図ることができる。
【００５８】
図３は，本実施の形態によるメモリバッファ割当装置１０の構成例を示す図である。
【００５９】
メモリバッファ割当装置１０は，専用メモリバッファ割当部１１，メモリバッファ分割部１２，データ収集部１３，特定ドメイン割当部１４，メモリバッファサイズ設定部１５を備える。
【００６０】
専用メモリバッファ割当部１１は，メモリバッファ割当処理の中心処理として，メモリバッファ３の専用メモリバッファの割当てなどの処理を行う。
【００６１】
メモリバッファ分割部１２は，メモリバッファ分割数などの外部入力をもとに，メモリバッファ３の分割などの初期設定処理を行う。
【００６２】
データ収集部１３は，ＶＭ管理装置２０からインタフェースを介して，各ドメインのＣＰＵ使用率，各ドメインの実メモリ使用量，各ドメインのＩ／Ｏ発行回数などのデータを収集する処理を行う。
【００６３】
特定ドメイン割当部１４は，特定ドメイン指定情報などの外部入力をもとに，指定された特定ドメインに専用メモリバッファを割り当てる処理を行う。
【００６４】
メモリバッファサイズ設定部１５は，外部変数などの外部入力をもとに，メモリサイズを変更する専用メモリバッファの判定やメモリサイズ変更の処理を行う。
【００６５】
なお，図３では図示されていないが，メモリバッファ割当装置１０は，各専用メモリバッファの割当てドメインの情報や，各専用メモリバッファ，共用メモリバッファのサイズ等の情報を管理保持する。
【００６６】
図４および図５は，本実施の形態によるメモリバッファ割当処理フローチャートである。
【００６７】
図４および図５に示すメモリバッファ割当処理は，専用メモリバッファ割当部１１による処理であり，本実施の形態によるメモリバッファ割当処理の中心となる処理である。
【００６８】
メモリバッファ分割部１２によるメモリバッファ分割処理により（ステップＳ１０），メモリバッファ３の領域を分割する。さらに，データ収集部１３によるデータ収集処理により（ステップＳ１１），ＶＭ管理装置２０からのデータ収集を行う。
【００６９】
専用メモリバッファ割当部１１は，データ収集部１３からの収集データの入力を待ち合わせ（ステップＳ１２），データ収集部１３から，各ドメインのＣＰＵ使用率，実メモリ使用量，Ｉ／Ｏ発行回数などの収集データを引き継ぐ（ステップＳ１３）。
【００７０】
特定ドメイン割当部１４による特定ドメイン割当処理により（ステップＳ１４），外部入力で指定されたドメインに専用メモリバッファを割り当てる。
【００７１】
専用メモリバッファへの割当て見直しが未実施のドメインの中で，ＣＰＵ使用率が最も高いドメインを，専用メモリバッファへの割当てを見直しするドメインとして選定し（ステップＳ１５），選定されたドメインに「割当て見直しフラグ」を設定する（ステップＳ１６）。専用メモリバッファへの割当て見直しの実施／未実施は，ドメインごとに用意された割当て見直しフラグが設定されているか否かで判断できる。なお，特定ドメインに指定されているドメインは，ステップＳ１４の特定ドメイン割当処理で，すでに割当て見直しフラグが設定されている。
【００７２】
選定されたドメインに対してまだ専用メモリバッファが割り当てられていなければ（ステップＳ１７のＮＯ），専用メモリバッファが割り当てられており，さらに割当て見直しが未実施，すなわち割当て見直しフラグが未設定のドメインの中で，最もＣＰＵ使用率が低いドメインが使用していた専用メモリバッファを，選定されたドメインに割り当てる（ステップＳ１８）。
【００７３】
選定されたドメインが割り当てられた専用メモリバッファに，割当て見直しフラグを設定する（ステップＳ１９）。各専用メモリバッファについても，各ドメインと同様に，割当て見直しフラグが用意されている。割当て見直し未実施の専用メモリバッファすなわち割当て見直しフラグが未設定の専用メモリバッファがまだ存在すれば（ステップＳ２０のＹＥＳ），ステップＳ１５の処理に戻る。
【００７４】
各ドメインのＣＰＵ使用率，各ドメインの実メモリ使用量，各ドメインのＩ／Ｏ発行回数などの収集データの累計を，ドメインごと，データごとに算出する（ステップＳ２１）。具体的には，前回に算出した累計データを保持しておき，保持している累計データに新たな収集データを加えて，新たな累計データを保持する処理を行う。
【００７５】
メモリバッファサイズ設定カウンタが０になっていれば（ステップＳ２２のＹＥＳ），メモリバッファサイズ設定部１５によるメモリバッファサイズ設定処理により（ステップＳ２３），各専用メモリバッファのサイズの見直しを行う。ここで，メモリバッファサイズ設定処理は，メモリバッファ割当て見直しの所定回数に１度の割合で実行され，メモリバッファサイズ設定カウンタは，その見直し間隔の所定回数をカウントするためのカウンタである。
【００７６】
メモリバッファサイズ設定処理が行われた場合には，メモリバッファサイズ設定カウンタ（見直し間隔）に所定回数の値を設定しなおす（ステップＳ２４）。例えば，専用メモリバッファの割当て見直し処理の１０回間隔で専用メモリバッファのサイズ見直しを行いたい場合には，メモリバッファサイズ設定カウンタに１０を設定する。また，メモリバッファサイズ設定処理が行われた場合には，次のメモリバッファサイズ設定処理のために，保持しておいたドメインごと，データごとの累計データをクリアする（ステップＳ２５）。
【００７７】
メモリバッファサイズ設定カウンタが０になっていなければ（ステップＳ２２のＮＯ），まだメモリバッファサイズ設定処理を行わないので，メモリバッファサイズ設定カウンタの値を−１する（ステップＳ２６）。
【００７８】
ステップＳ１１の処理に戻り，次のデータ収集から，特定ドメインに対する専用メモリバッファの割当て，特定ドメイン以外のドメインに対する専用メモリバッファの割当て見直し，メモリバッファサイズの設定変更などの処理を繰り返す。なお，各ドメイン，各専用メモリバッファの割当て見直しフラグは，ステップＳ１１の処理に戻るたびに設定がクリアされる。
【００７９】
図６は，本実施の形態によるメモリバッファ分割処理フローチャートである。
【００８０】
図６に示すメモリバッファ分割処理は，メモリバッファ分割部１２による処理であり，本実施の形態によるメモリバッファ割当処理の初期処理となる。
【００８１】
メモリバッファ分割数は，外部から入力される。なお，外部からの入力が，専用メモリバッファ数であってもよく，メモリバッファ分割数と専用メモリバッファ数の双方であってもよい。
【００８２】
ＶＭ機構５のドメイン数＜メモリバッファ分割数＋定数ｐの条件を満たす場合には（ステップＳ３０のＹＥＳ），指定されたメモリバッファ分割数（＝専用メモリバッファ数＋１）にメモリバッファ３の領域を分割する（ステップＳ３１）。
【００８３】
各分割メモリバッファを，それぞれ所定数の専用メモリバッファと共有メモリバッファとに設定し，その設定を保持しておく。なお，ここでは共有メモリバッファ数を１としているが，共有メモリバッファ数を複数としてもよい。
【００８４】
ＶＭ機構５のドメイン数＜メモリバッファ分割数＋ｐの条件を満たさない場合には（ステップＳ３０のＮＯ），メモリバッファ３の分割を実施しない（ステップＳ３２）。
【００８５】
ここで，定数ｐは整数値である。ＶＭ機構５のドメイン数が多い場合には，共用メモリバッファを使用するドメインが多くなってしまい，共用メモリバッファを使用するドメインの性能が低下してしまう問題がある。そこで，メモリバッファ３の分割を行う場合のＶＭ機構５のドメイン数を，メモリバッファ分割数＋ｐに限定する。これにより，共用メモリバッファを使用するドメインが多くなり過ぎることによる性能低下を防止する。例えば，ｐの値として，３〜５程度の値を設定する。
【００８６】
図７は，本実施の形態によるデータ収集処理フローチャートである。図７に示すデータ収集処理は，データ収集部１３による処理である。
【００８７】
データ収集部１３は，ＶＭ機構５の各ドメインのディスパッチ間隔ごとに，ＶＭ管理装置２０からインタフェースを介して，各ドメインのＣＰＵ使用率，実メモリ使用量，Ｉ／Ｏ発行回数などのデータを収集する（ステップＳ４０）。収集されたデータを，専用メモリバッファ割当処理に引き継ぐ（ステップＳ４１）。
【００８８】
図８は，本実施の形態による特定ドメイン割当処理フローチャートである。図８に示す特定ドメイン割当処理は，特定ドメイン割当部１４による処理である。
【００８９】
特定ドメイン割当部１４は，専用メモリバッファを割り当てるドメインの指定情報である特定ドメイン指定情報が外部から入力されている場合には，指定された特定ドメインのリスト情報である特定ドメイン指定テーブルを作成する（ステップＳ５０）。
【００９０】
特定ドメイン指定テーブルから，専用メモリバッファへの割当て見直しが未実施の特定ドメインの中で，ＣＰＵ使用率が最も高い特定ドメインを，専用メモリバッファへの割当てを見直しする特定ドメインとして選定し（ステップＳ５１），選定された特定ドメインに割当て見直しフラグを設定する（ステップＳ５２）。
【００９１】
選定された特定ドメインに対してまだ専用メモリバッファが割り当てられていなければ（ステップＳ５３のＮＯ），専用メモリバッファが割り当てられたドメインの中から，さらに割当て見直しが未実施，すなわち割当て見直しフラグが未設定，かつ，最もＣＰＵ使用率が低いドメインが使用していた専用メモリバッファを，選定された特定ドメインに割り当てる（ステップＳ５４）。
【００９２】
選定された特定ドメインが割り当てられた専用メモリバッファに，割当て見直しフラグを設定する（ステップＳ５５）。
【００９３】
そして，特定ドメイン指定テーブルに，割当て見直し未実施の特定ドメインすなわち割当て見直しフラグが未設定の特定ドメインがまだ存在すれば（ステップＳ５６のＹＥＳ），ステップＳ５１の処理に戻る。
【００９４】
図９は，本実施の形態によるメモリバッファサイズ設定処理フローチャートである。図９に示すメモリバッファサイズ設定処理は，メモリバッファサイズ設定部１５による処理である。
【００９５】
メモリ補正係数α，Ｉ／Ｏ補正係数β，増減幅などの外部変数は，外部から入力される。メモリ補正係数α，Ｉ／Ｏ補正係数βなどの資源使用量の変数値は，重視する資源使用量によって変更される値である。管理者は，このような変数値を変更することにより，メモリバッファサイズの設定を調整することができる。
【００９６】
メモリバッファサイズ設定部１５は，プロセッサ係数γを，ＶＭ管理装置２０の内部テーブルから読み込む（ステップＳ６０）。また，専用メモリバッファ割当処理から，ドメインごと，データごとの累計データを引き継ぐ（ステップＳ６１）。
【００９７】
各ドメインについて，以下の式（１）によって，ドメインの基礎値を算出する（ステップＳ６２）。なお，以下の式（１）において，実メモリ使用量は，専用メモリバッファ割当処理から引き継がれたドメインごとの実メモリ使用量の累積値を示し，Ｉ／Ｏ発行回数は，専用メモリバッファ割当処理から引き継がれたドメインごとのＩ／Ｏ発行回数の累積値を示す。
【００９８】
ドメインの基礎値＝（実メモリ使用量×α＋Ｉ／Ｏ発行回数×β）×γ    式（１）
各ドメインの基礎値を合算し，システム全体の基礎値を算出する（ステップＳ６３）。また，各ドメインについて，以下の式（２）によって，ドメインの係数を求める（ステップＳ６４）。
【００９９】
ドメイン係数＝ドメインの基礎値／システム全体の基礎値    式（２）
各ドメインについて，以下の式（３）によって，メモリバッファ係数を求める（ステップＳ６５）。
【０１００】
メモリバッファ係数＝専用メモリバッファサイズ／総メモリバッファサイズ    式（３）
なお，専用メモリバッファが割り当てられていないドメインについては，メモリバッファ係数を求める必要はない。
【０１０１】
専用メモリバッファが割り当てられた，サイズ見直しが未実施のドメインの中で，ＣＰＵ使用率が最も高い特定ドメインを，専用メモリバッファのサイズを見直しするドメインとして選定し（ステップＳ６６），選定されたドメインにサイズ見直しフラグを設定する（ステップＳ６７）。専用メモリバッファのサイズ見直しの実施／未実施は，ドメインごとに用意されたサイズ見直しフラグが設定されているか否かで判断できる。
【０１０２】
選定されたドメインについて，ドメイン係数±増減幅＞メモリバッファ係数という条件を満たし（ステップＳ６８のＹＥＳ），かつサイズ見直し未実施のドメインに割り当てられた専用メモリバッファのサイズの最小値＞所定の最低メモリバッファサイズという条件を満たす場合には（ステップＳ６９のＹＥＳ），専用メモリバッファのサイズ見直しを実施する（ステップＳ７０）。最低メモリバッファサイズは，最低限度のメモリバッファサイズを示す閾値である。
【０１０３】
専用メモリバッファのサイズ見直しは，例えば，サイズ見直し未実施のドメインの中で，メモリバッファ係数が最小のドメインに割り当てられた専用メモリバッファのサイズを，最低メモリバッファサイズを下回らない範囲で，所定の単位サイズ分縮小し，その縮小された分だけ，選定されたドメインに割り当てられた専用メモリバッファのサイズを拡張することにより実施される。縮小または拡張する単位量（サイズ）は予め設定する。
【０１０４】
なお，共用メモリバッファをサイズ見直しの対象としてもよい。
【０１０５】
ドメイン係数±増減幅＞メモリバッファ係数という条件を満たさない（ステップＳ６８のＮＯ），またはサイズ見直し未実施のドメインに割り当てられた専用メモリバッファのサイズの最小値＞所定の最低メモリバッファサイズという条件を満たさない場合には（ステップＳ６９のＮＯ），専用メモリバッファのサイズ見直しを実施しない（ステップＳ７１）。
【０１０６】
専用メモリバッファが割り当てられた，サイズ見直しが未実施のドメインがまだ存在すれば（ステップＳ７２のＹＥＳ），ステップＳ６６の処理に戻る。なお，各ドメインのサイズ見直しフラグは，メモリバッファサイズ設定処理が終了するたびに設定がクリアされる。
【０１０７】
以上説明したメモリバッファ割当装置１０による処理は，コンピュータとソフトウェアプログラムとによって実現することができ，そのプログラムをコンピュータ読み取り可能な記録媒体に記録することも，ネットワークを通して提供することも可能である。
【０１０８】
図１０および図１１は，メモリバッファ割当処理の具体的な実施例を説明する図である。以下では，図１０および図１１に示すデータを用いて，メモリバッファ割当処理の具体的な実施例を説明する。図１０（Ａ）は，基礎データを示す。図１０（Ｂ）は，外部入力データを示す。図１０（Ｃ）は，メモリバッファ３の状態の変遷を示す。図１１は，収集データと累計データを示す。
【０１０９】
図１０（Ａ）に示すように，ＶＭ機構５のドメイン数は４である。それぞれのドメインをドメイン＃ａ，ドメイン＃ｂ，ドメイン＃ｃ，ドメイン＃ｄとする。
【０１１０】
図１０（Ｂ）に示すようにメモリバッファ分割数が３であり，図１０（Ａ）に示すようにＶＭ機構５のドメイン数は４であるので，メモリバッファ分割の条件は満たされている。メモリバッファサイズが１２［ＭＢ］のメモリバッファ３は，それぞれ４［ＭＢ］の専用メモリバッファ＃１，専用メモリバッファ＃２，共用メモリバッファに分割される。
【０１１１】
図１０（Ｃ）に示すように，本実施例の起点では，専用メモリバッファ＃１にはドメイン＃ａが，専用メモリバッファ＃２には，ドメイン＃ｂが割り当てられており，ドメイン＃ｃとドメイン＃ｄは，共用メモリバッファを使用している。また，図１１に示すように，本実施例の起点では，ドメイン＃ａのＣＰＵ使用率（図１１中のCPU Busy）が４０％，ドメイン＃ｂのＣＰＵ使用率が３０％，ドメイン＃ｃのＣＰＵ使用率が１０％，ドメイン＃ｄのＣＰＵ使用率が１０％であるものとする。また，起点でのメモリバッファサイズ設定カウンタの値は，図１０（Ａ）に示す設定値，すなわち１０であるものとする。
【０１１２】
図１０（Ａ）に示すように，各ドメインをディスパッチする間隔は１０［ｍｓ］である。ここでは，各ドメインのディスパッチ４回分のタイミングでデータ収集を行うものとする。
【０１１３】
起点後，１回目のデータ収集において，図１１のデータ収集Ｎｏ．１に示すように，ドメイン＃ａのＣＰＵ使用率１０％，ドメイン＃ｂのＣＰＵ使用率３０％，ドメイン＃ｃのＣＰＵ使用率４０％，ドメイン＃ｄのＣＰＵ使用率１０％が得られる。このとき，ＣＰＵ使用率が最大のドメイン＃ｃには専用メモリバッファが割り当てられていない。専用メモリバッファが割り当てられているドメインのうち，最小のものはドメイン＃ａであるので，ドメイン＃ａに割り当てられていた専用メモリバッファ＃１をドメイン＃ｃに割り当てる。ドメイン＃ａは，共用メモリバッファを使用することになる。ドメイン＃ｃの次にＣＰＵ使用率が高いドメインは，専用メモリバッファ＃２が割り当てられているドメイン＃ｂであるので，これ以上の割当て変更はない。メモリバッファ３の状態は，図１０（Ｃ）のデータ収集Ｎｏ．１に示す通りとなる。
【０１１４】
その後，データ収集Ｎｏ．１０まで，データ収集Ｎｏ．１と同じデータが収集され，新たな専用メモリバッファの割当て変更はなかったものとする。データ収集Ｎｏ．１０の段階で，メモリバッファ設定カウンタが０となり，メモリバッファサイズ設定処理が行われる。
【０１１５】
この時点でのドメインごと，データごとの累計は，図１１の累計に示す通りであるものとする。図１０（Ａ）に示すように，プロセッサ係数は１であり，図１０（Ｂ）に示すように，メモリ補正係数は０．３，Ｉ／Ｏ補正係数は１であるので，上記の式（１）を用いて各ドメインの基礎値を算出すると，ドメイン＃ａ：６０００，ドメイン＃ｂ：２８０００，ドメイン＃ｃ：４０００，ドメイン＃ｄ：８０００となり，システム全体の基礎値を算出すると，４６０００となる。なお，図１１において，Memory Size は実メモリ使用量を示し，I/O Count はＩ／Ｏ発行回数を示す。
【０１１６】
上記の式（２）を用いて各ドメインのドメイン係数を算出すると，ドメイン＃ａ：０．１３，ドメイン＃ｂ：０．６０，ドメイン＃ｃ：０．９，ドメイン＃ｄ：０．１８となり，上記の式（３）を用いて専用メモリバッファが割り当てられたドメイン＃ｂ，ドメイン＃ｃのメモリバッファ係数を算出すると，ドメイン＃ｂ：０．３３，ドメイン＃ｃ：０．３３となる。
【０１１７】
図１０（Ｂ）に示すように，増減幅は±１０［％］であり，図１０（Ａ）に示すように，最低メモリバッファサイズは１［ＭＢ］である。ドメイン＃ｃについては，０．１８±１０［％］＜０．３３であるので，専用メモリバッファのサイズ見直しを実施しないと判定される。ドメイン＃ｂについては，０．６０±１０［％］＞０．３３であり，ドメイン＃ｃに割り当てられた専用メモリバッファサイズ４［ＭＢ］＞最低メモリバッファサイズ１［ＭＢ］であるので，専用メモリバッファのサイズ見直しを実施すると判定される。ここでは，図１０（Ｃ）のメモリバッファサイズ見直しに示すように，ドメイン＃ｃに割り当てられた専用メモリバッファ＃１のサイズが２［ＭＢ］に縮小され，ドメイン＃ｂに割り当てられた専用メモリバッファ＃２のサイズが６［ＭＢ］に拡張される。
【０１１８】
以上，本発明の実施の形態について説明したが，本発明は本実施の形態に限られるものではない。例えば、図１０（Ａ）や図１０（Ｂ）に設定されているメモリバッファの分割数や、専用メモリバッファとして割り当てる数、共用メモリバッファとして割り当てる数や他の各値は、適宜変更して構わない。
【０１１９】
また，例えば，本実施の形態では，基本的に1'stメモリバッファの分割／割当てについて説明しているが，2'ndメモリバッファ，3'rdメモリバッファ，... についても，分割／割当てを実施可能である。
【０１２０】
例えば，2'ndメモリバッファや3'rdメモリバッファについて，分割／割当てを実施する場合には，1'stメモリバッファの４〜８倍程度のサイズが分割の１単位として望ましいと考えられる。これ以上小さいサイズに分割すると，メモリバッファのヒット率が低下するケースが増え，仮想計算機システムの性能低下に繋がる可能性が高くなるからである。
【図面の簡単な説明】
【０１２１】
【図１】本実施の形態による動作モデルの例を示す図である。
【図２】各ドメインに対するメモリバッファ割当て例を示す図である。
【図３】本実施の形態によるメモリバッファ割当装置の構成例を示す図である。
【図４】本実施の形態によるメモリバッファ割当処理フローチャートである。
【図５】本実施の形態によるメモリバッファ割当処理フローチャートである。
【図６】本実施の形態によるメモリバッファ分割処理フローチャートである。
【図７】本実施の形態によるデータ収集処理フローチャートである。
【図８】本実施の形態による特定ドメイン割当処理フローチャートである。
【図９】本実施の形態によるメモリバッファサイズ設定処理フローチャートである。
【図１０】メモリバッファ割当処理の具体的な実施例を説明する図である。
【図１１】メモリバッファ割当処理の具体的な実施例を説明する図である。
【図１２】プロセッサとメモリの構造概念図である。
【図１３】キャッシュ遷移の概念を説明する図である。
【符号の説明】
【０１２２】
１  ＣＰＵ
２  プロセッサ
３  メモリバッファ
４  メモリストレージ
５  ＶＭ機構（仮想計算機機構）
１０  メモリバッファ割当装置
１１  専用メモリバッファ割当部
１２  メモリバッファ分割部
１３  データ収集部
１４  特定ドメイン割当部
１５  メモリバッファサイズ設定部
２０  ＶＭ管理装置
【図１】
0005040773.tif 000002
【図２】
0005040773.tif 000003
【図３】
0005040773.tif 000004
【図４】
0005040773.tif 000005
【図５】
0005040773.tif 000006
【図６】
0005040773.tif 000007
【図７】
0005040773.tif 000008
【図８】
0005040773.tif 000009
【図９】
0005040773.tif 000010
【図１０】
0005040773.tif 000011
【図１１】
0005040773.tif 000012
【図１２】
0005040773.tif 000013
【図１３】
0005040773.tif 000014