JPWO2012111113A1 - メモリ管理プログラム、メモリ管理方法、及び情報処理装置 - Google Patents

メモリ管理プログラム、メモリ管理方法、及び情報処理装置 Download PDF

Info

Publication number
JPWO2012111113A1
JPWO2012111113A1 JP2012557716A JP2012557716A JPWO2012111113A1 JP WO2012111113 A1 JPWO2012111113 A1 JP WO2012111113A1 JP 2012557716 A JP2012557716 A JP 2012557716A JP 2012557716 A JP2012557716 A JP 2012557716A JP WO2012111113 A1 JPWO2012111113 A1 JP WO2012111113A1
Authority
JP
Japan
Prior art keywords
memory
program
main memory
virtual
area
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.)
Pending
Application number
JP2012557716A
Other languages
English (en)
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2012111113A1 publication Critical patent/JPWO2012111113A1/ja
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

複数の演算処理部と、データを記憶するメインメモリと、複数の演算処理部から共有されるとともに、メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータが、次の処理を実行する。すなわち、仮想コンピュータの仮想化されたメモリである仮想メモリの領域にプログラムの配置を指示する。そして、仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムがメインメモリに配置されているかを判定する。配置対象のプログラムがメインメモリに配置されていると判断された場合、配置対象のプログラムが配置されたメインメモリの領域を、仮想メモリの領域に対応づける。一方、配置対象のプログラムがメインメモリに配置されていない場合、配置対象のプログラムを仮想メモリの領域に配置する。

Description

本発明は、メモリ管理プログラム及びメモリ管理方法、情報処理装置、及びメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体に関する。
近年、ハイパーバイザ(Hypervisor)と呼ばれる仮想マシンを制御する制御プログラムにより、1台の物理コンピュータ上に複数台の仮想マシンとしての仮想コンピュータを構築し、各仮想コンピュータごとに任意のOS(Operating System)やアプリケーションプログラムを動作させる仮想化システムが実用化されている。仮想化システムにおいては、仮想コンピュータ間の通信効率などを向上させるために、各仮想コンピュータがメモリ空間の一部を共有する技術が提案されている。
特開平11−249916号公報
ところで、物理コンピュータは、メモリへのアクセス速度を向上させるために、低速かつ大容量のメインメモリに加え、高速かつ小容量のキャッシュメモリを搭載している。仮想化システムでは、各仮想コンピュータにおけるOSやアプリケーションなどのプログラム部品が共通することが多い。しかし、各仮想コンピュータは、セキュリティなどの観点から、各仮想コンピュータ専用のメモリ空間にプログラム部品を格納している。この場合、キャッシュメモリに同一のプログラム部品が格納されていると、他のプログラム部品などがキャッシュメモリからメインメモリへキャッシュアウトされる(追い出される)確率が高くなり、キャッシュアウトされたプログラム部品を記憶する低速なメインメモリへのアクセスにより仮想化システムの性能向上が阻害されるおそれがあった。
そこで、本発明は従来技術の問題点に鑑み、キャッシュメモリを効率的に使用することで、仮想化システムの性能が向上する技術を提供することを目的とする。
本技術の一実施形態では、複数の仮想コンピュータが動作可能なコンピュータが、複数の演算処理部と、データを記憶するメインメモリと、複数の演算処理部から共有されるとともに、メインメモリが記憶するデータの一部を保持するキャッシュメモリを有する。コンピュータは、仮想コンピュータの仮想化されたメモリである仮想メモリの領域にプログラムの配置を指示する。また、コンピュータは、仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムがメインメモリに配置されているかを判定する。配置対象のプログラムがメインメモリに配置されていると判断された場合、コンピュータは、配置対象のプログラムが配置されたメインメモリの領域を、仮想メモリの領域に対応づける。一方、配置対象のプログラムがメインメモリに配置されていない場合、コンピュータは、配置対象のプログラムを仮想メモリの領域に配置する。
本技術によれば、キャッシュメモリを効率的に使用することで、仮想化システムの性能が向上する。
実施形態に係るサーバの一例の全体構成図である。 実施形態に係るサーバの一例の機能構成図である。 IDテーブルの説明図である。 管理テーブルの説明図である。 サーバのハードウェア構成図である。 仮想アドレス通知処理のフローチャートである。 物理アドレス配置処理のフローチャートである。 管理テーブル更新処理のフローチャートである。 管理テーブル更新処理のフローチャートである。 使用頻度更新処理のフローチャートである。 キャッシュメモリ入替処理のフローチャートである。 キャッシュメモリ入替処理のフローチャートである。 具体的な実施例における、サーバの全体構成図である。 具体的な実施例における、管理テーブルの説明図である。 具体的な実施例における、管理テーブルの説明図である。 具体的な実施例における、管理テーブルの説明図である。 具体的な実施例における、管理テーブルの説明図である。
以下、添付された図面を参照して本発明を実施するための実施形態について技術を詳細に説明する。
図1は、本実施形態におけるサーバ100の一例を示す。
メインメモリ110は、CPU(Central Processing Unit)120がアクセスする主記憶装置であり、具体例としてRAM(Random Access Memory)が挙げられる。また、メインメモリ110を制御するためのメインメモリ制御機構は、特定の期間におけるメインメモリ110内の特定の領域がいつ最後に使用されたかについて、LRU(Least Recently Used)情報等の使用状況を、ソフトウェアからの要求に応じて通知することができる状況通知機能を有する。
CPU120は複数のコア210、及び、各コア210間で共用されるキャッシュメモリ220を有する。
キャッシュメモリ220は、キャッシュメモリ制御機構によって制御される。キャッシュメモリ制御機構は、特定の期間におけるキャッシュメモリ220内の特定の領域がいつ最後に使用されたかについて、LRU情報等の使用状況を、ソフトウェアからの要求に応じて通知することができる状況通知機能を有する。また、キャッシュメモリ220内の領域には、キャッシュメモリ制御機構によって、データをメインメモリ110からキャッシュメモリ220に登録するキャッシュイン及びキャッシュメモリ220が登録するデータをメインメモリ110に追い出す(吐き出す)キャッシュアウトをソフトウェアから制御することができるソフトウェア制御領域が設定される。即ち、サーバ100は、キャッシュメモリ220に対してメインメモリ110に格納されているデータの一部を任意にキャッシュイン及びキャッシュアウトさせる機構を有する。
CPU120上で、仮想マシン制御部としてのハイパーバイザを用いた仮想化機構230により、仮想コンピュータ(仮想マシン)240が複数動作する。また、各仮想コンピュータ240上で、プログラム部品250が動作する。なお、プログラム部品250は、例えば、実行ファイルとして、サーバ100に備えられたハードディスクなどのストレージに予め格納されている。
各仮想コンピュータ240上には、仮想化されたメモリ(以下、「仮想メモリ」と略記する)が夫々存在する。各仮想メモリは、各仮想コンピュータ240上からは、各仮想コンピュータ240専用の物理的なメインメモリとして扱われる。仮想化機構230は、各仮想メモリにメインメモリ110の一部を適宜対応づけることによって、各仮想コンピュータ240上に仮想メモリを実現させる。
サーバ100のメインメモリ110には、図2に示すように、IDテーブル300及び管理テーブル310が存在する。
IDテーブル300には、図3に示すように、プログラム部品250の実行ファイルなどのファイル名、及び、プログラム部品250を特定するIDが関連付けられたレコードが格納されている。各プログラム部品250のIDは、例えば、サーバ100の管理者によって定義される。また、IDテーブル300は、例えば、サーバ100の管理者によって定義され、サーバ100に備えられたハードディスクなどのストレージに予め格納されている。
管理テーブル310には、図4に示すように、プログラム部品250のID、使用頻度、ポイント、メモリ状態、物理アドレス、及び、サイズが関連付けられたレコードが格納されている。使用頻度は、プログラム部品250を、OSやアプリケーションなどのプログラムが所定期間に使用した回数である。ポイントは、使用頻度から算出される値である。ポイントは、プログラム部品250が展開(配置)されたメインメモリ110の領域であるメインメモリ領域を、ソフトウェア制御領域に対し、キャッシュイン及びキャッシュアウトするための判定に使用される。メモリ状態は、プログラム部品250が展開されたメインメモリ領域が、ソフトウェア制御領域にキャッシュインされているか否かを示す。プログラム部品250が展開されたメインメモリ領域がキャッシュインされている場合、メモリ状態は“IN”となる。一方、プログラム部品250が展開されたメインメモリ領域がキャッシュインされていない場合、メモリ状態は“OUT”となる。物理アドレスには、プログラム部品250が展開されたメインメモリ領域の先頭アドレスが、16進数で格納される。サイズには、プログラム部品250が展開されたメインメモリ領域のバイト単位の大きさが16進数で格納される。また、以下では、物理アドレス及びサイズにより特定されるメインメモリ領域を「データメモリ領域」と略記する。
なお、物理アドレス及びサイズは、プログラム部品250の所在情報の一例として挙げられる。さらに、管理テーブル310は、テーブルの一例として挙げられる。
サーバ100には、図5に示すように、CPU120、メインメモリ110の他に、さらに通信インターフェース130、ストレージ140、入出力装置150、及び可搬記録媒体駆動装置160などのハードウェアも含まれている。各ハードウェアは、バス170を介して相互に接続されている。また、通信インターフェース130は、ネットワークを介してデータを送受信するための装置であり、具体例としてネットワークカードが挙げられる。さらに、入出力装置150は、サーバ100にデータを入力又はサーバ100からデータを出力するための装置であり、具体例として、キーボード、マウス、及びディスプレイが挙げられる。そして、可搬記録媒体駆動装置160は、CD−ROM、DVD−ROMなどのコンピュータ読取可能なデータが記録された可搬記録媒体180から、データを読取る装置であり、具体例として、CD−ROMドライブ、DVD−ROMドライブが挙げられる。
可搬記録媒体180には、本実施形態を具現化するメモリ管理プログラムが記録されている。可搬記録媒体180に記録されたメモリ管理プログラムは、可搬記録媒体駆動装置160からストレージ140にインストールされる。CPU120は、インストールされたメモリ管理プログラムをメインメモリ110に展開し、実行することで、図2に示すように、通知部320、配置部330、管理部340、監視部350、入替部360を夫々具現化する。通知部320は、各仮想コンピュータ240上に具現化される。配置部330、管理部340、監視部350、入替部360は、仮想化機構230上に夫々具現化される。また、メモリ管理プログラムは、ネットワークから通信インターフェース130を介し、ストレージ140にインストールされることもある。
仮想コンピュータ240は、プログラム部品250の展開指示を受けた場合、展開対象のプログラム部品250の実行ファイルなどのファイル名を、自己に存在する通知部320に送信する。また、仮想コンピュータ240上のOSは、プログラム部品250の展開指示を受けた場合、展開対象のプログラム部品250の実行ファイルなどのファイル名を、自己が存在する仮想コンピュータ240上の通知部320に送信する。
通知部320は、展開対象のプログラム部品250のIDを配置部330に送信する。通知部320は、展開対象のプログラム部品250が展開された仮想メモリの領域の先頭アドレス(以下、「仮想アドレス」と略記する)及びサイズが、配置部330から返信された場合、返信された仮想アドレス及びサイズを仮想コンピュータ又はOSに通知する。一方、NULL(値が設定されていない状態)の仮想アドレス及びNULLのサイズが返信された場合、通知部320は、展開対象のプログラム部品250を仮想メモリに展開し、展開部分の仮想アドレス、サイズ、及びIDを管理部340に送信する。また、通知部320は、展開部分の仮想アドレス、サイズを仮想コンピュータ又はOSに通知する。
仮想アドレス及びサイズを通知された仮想コンピュータ240又はOSは、通知された仮想アドレス及びサイズに基づいて、展開されたプログラム部品250を起動する。
配置部330は、受信したIDに対するプログラム部品250が既にメインメモリ領域に展開されているか判定する。配置部330は、プログラム部品250が既にメインメモリ領域に展開されている場合、プログラム部品250が展開されているメインメモリ領域を仮想メモリの領域に対応づける。また、配置部330は、メインメモリ領域に対応づけた仮想メモリの領域の仮想アドレス及びサイズを通知部320に返信する。一方、配置部330は、プログラム部品250が展開されていない場合、NULL値の仮想アドレス及びNULL値のサイズを通知部320に返信する。なお、配置部330は、判定部の一例として挙げられる。
管理部340は、管理テーブル310のレコードを生成し、各プログラム部品250が展開された各部分のメインメモリ領域を、メインメモリ110からキャッシュメモリ220にキャッシュイン及びキャッシュメモリ220からメインメモリ110にキャッシュアウトする。
監視部350は、所定期間毎、例えば10ms毎に、メインメモリ110に展開された各プログラム部品250が使用されたか否かを判定し、管理テーブル310の各レコードの使用頻度を更新する。
入替部360は、一定期間毎、例えば200ms毎に、管理テーブル310の各レコードのポイントを算出し、各プログラム部品250が展開された各メインメモリ領域をキャッシュイン及びキャッシュアウトする。
なお、所定期間及び一定期間の間隔は、ポイントに応じたキャッシュイン及びキャッシュアウト処理が適切な間隔で実行されることで仮想化システムの性能が向上するように、ハイパーバイザ又はサーバ100の管理者などが調整する。
図6は、通知部320が、配置部330からプログラム部品250の展開指示をうけた場合において、展開対象のプログラム部品250の実行ファイルなどのファイル名を当該配置部330から受信したことを契機として実行する仮想アドレス通知処理のフローチャートを示す。
ステップ1(図では「S1」と略記する。以下同様)では、通知部320が、IDテーブル300を参照し、上記受信したファイル名によって、プログラム部品250のIDを特定する。
ステップ2では、通知部320が、特定したID、及び、送信元である通知部320を特定できる送信元情報を、配置部330に送信する。
ステップ3では、通知部320が、配置部330から、仮想アドレス及びサイズを受信したか否か判定する。通知部320は、仮想アドレス及びサイズを受信していれば、処理をステップ4に進める一方(Yes)、仮想アドレス及びサイズを受信していなければ、処理をステップ3に戻す(No)。すなわち、通知部320は、仮想アドレス及びサイズを受信するまで、ステップ4に処理を進めない。
ステップ4では、通知部320が、受信した仮想アドレスがNULL値か否か判定する。通知部320は、仮想アドレスがNULL値であれば、処理をステップ5に進める一方(Yes)、仮想アドレスがNULL値でなければ、処理をステップ8に進める(No)。
ステップ5では、通知部320が、展開対象のプログラム部品250を仮想メモリに展開する。
ステップ6では、通知部320が、仮想メモリに展開されたプログラム部品250の仮想アドレス、サイズ、及び、展開されたプログラム部品250のIDを管理部340に送信する。
ステップ7では、通知部320が、仮想メモリに展開されたプログラム部品250の仮想アドレス及びサイズを、自己が存在する仮想コンピュータ240又は仮想コンピュータ240上のOSに通知する。即ち、通知部320は、展開されたプログラム部品250がOSならば仮想コンピュータ240、又は、展開されたプログラム部品250がアプリケーションやドライバならばOSに対し、展開部分の仮想アドレス及びサイズを通知する。
ステップ8では、通知部320が、受信した仮想アドレス及びサイズを、自己が存在する仮想コンピュータ240又は仮想コンピュータ240上のOSに通知する。即ち、通知部320は、受信した仮想アドレス及びサイズにより特定される仮想メモリ領域に展開されたプログラム部品250がOSならば、自己が存在する仮想コンピュータ240に対し、受信した仮想アドレス及びサイズを送信する。また、通知部320は、受信した仮想アドレス及びサイズにより特定される仮想メモリ領域に展開されたプログラム部品250がアプリケーションやドライバならば、自己が存在する仮想コンピュータ240上のOSに対し、受信した仮想アドレス及びサイズを通知する。
かかる仮想アドレス通知処理によれば、通知部320は、展開対象のプログラム部品250のIDを配置部330に送信する。通知部320は、配置部330から返信された仮想アドレスがNULL値ではない場合、返信された仮想アドレス及びサイズを仮想コンピュータ240又は仮想コンピュータ240上のOSに通知する。一方、返信された仮想アドレスがNULL値の場合、通知部320は、展開対象のプログラム部品250を仮想メモリに展開する。また、通知部320は、展開されたプログラム部品250の展開部分の仮想メモリの領域の仮想アドレス、サイズ、及び、展開されたプログラム部品250のIDを管理部340に送信する。そして、通知部320は、展開されたプログラム部品250の展開部分の仮想メモリの領域の仮想アドレス及びサイズを、仮想コンピュータ240又は仮想コンピュータ240上のOSに通知する。
図7は、配置部330が、ID及び送信元情報を受信したことを契機として実行する物理アドレス配置処理のフローチャートを示す。
ステップ11では、配置部330が、仮想コンピュータ240の通知部320から受信したIDが管理テーブル310に存在するか否か判定する。配置部330は、受信したIDが存在すれば、処理をステップ12に進める一方(Yes)、受信したIDが存在しなければ、処理をステップ15に進める(No)。
ステップ12では、配置部330が、管理テーブル310を参照し、受信したIDによってレコードを特定する。また、配置部330は、特定したレコードから物理アドレス及びサイズを取り出す。
ステップ13では、配置部330が、取り出した物理アドレス及びサイズにより特定される物理メモリ(メインメモリ110)上のデータメモリ領域を、送信元情報により特定される通知部320の仮想コンピュータ240の仮想メモリの領域に、システムコールなどによって対応づける。
ステップ14では、配置部330が、物理メモリ上のデータメモリ領域が対応づけられた部分の仮想メモリの領域の仮想アドレス及びサイズを、送信元情報により特定される通知部320に返信する。
ステップ15では、配置部330が、NULL値の仮想アドレス及びNULL値のサイズを、送信元情報により特定される通知部320に返信する。
かかる物理アドレス配置処理によれば、配置部330は、受信したIDが管理テーブル310に存在する場合、受信したIDからレコードを特定する。また、配置部330は、特定したレコードの物理メモリ(メインメモリ110)上のデータメモリ領域を、送信元情報により特定される通知部320が存在する仮想コンピュータ240の仮想メモリの領域に対応づける。そして配置部330は、対応づけられた部分の仮想メモリの領域の仮想アドレス及びサイズを、通知部320に返信する。一方、配置部330は、受信したIDが管理テーブル310に存在しない場合、NULL値の仮想アドレス及びNULL値のサイズを、通知部320に返信する。
図8及び図9は、管理部340が、通知部320から、ID、仮想アドレス及びサイズを受信したことを契機として実行する管理テーブル更新処理のフローチャートを示す。
ステップ21では、管理部340が、OSが実行するシステムコールなどにより、受信した仮想アドレスに対応づけられた物理アドレスを取得する。
ステップ22では、管理部340が、物理アドレス、受信したID及びサイズに基づき管理テーブル310のレコードを生成する。また、管理部340は、生成したレコードの使用頻度及びポイントに“0”を夫々設定し、使用頻度及びポイントを夫々初期化する。さらに、管理部340は、生成したレコードにより特定されるデータメモリ領域が、キャッシュメモリ220からメインメモリ110にキャッシュアウトされた旨を表す“OUT”をレコードのメモリ状態に設定する。そして、管理部340は、生成したレコードを管理テーブル310に格納することで、管理テーブル310を更新する。
ステップ23では、管理部340が、管理テーブル310を参照し、メモリ状態が“OUT”になっているレコードが存在するか否か判定する。管理部340は、“OUT”になっているレコードが存在すれば、処理をステップ24に進める一方(Yes)、“OUT”になっているレコードが存在しなければ、処理を終了する(No)。
ステップ24では、管理部340が、管理テーブル310を参照し、メモリ状態が“OUT”であるレコードのうち、ポイントが最も高いレコードを選択する。該当するレコードが複数ある場合、管理部340は、メインメモリ制御機構の状況通知機能を利用し、該当する各レコードのデータメモリ領域のLRU情報等の使用状況を参照する。管理部340は、参照した各レコードのデータメモリ領域のLRU情報等の使用状況に基づいて、現時刻から最も近い過去に使用されたデータメモリ領域を特定し、特定したデータメモリ領域に対するレコードを選択する。
ステップ25では、管理部340は、キャッシュメモリ制御機構の状況通知機能を利用し、ソフトウェア制御領域の空き容量が選択レコードのサイズ未満か否か判定する。管理部340は、ソフトウェア制御領域の空き容量が選択レコードのサイズ未満であれば、処理をステップ26に進める一方(Yes)、ソフトウェア制御領域の空き容量が選択レコードのサイズ以上であれば、処理をステップ33に進める(No)。
ステップ26では、管理部340が、管理テーブル310を参照し、メモリ状態が、レコードにより特定されるデータメモリ領域がメインメモリ110からキャッシュメモリ220にキャッシュインされた旨を表す“IN”であり、かつ、ポイントが選択レコードのポイント未満のレコードをすべて抽出する。
ステップ27では、管理部340は、抽出したすべてのレコードのサイズの総計(ステップ26で抽出したレコードがなかった場合は“0”)と、ソフトウェア制御領域の空き容量と、を加えた値を算出する。
ステップ28では、管理部340は、ステップ27で算出した値が選択レコードのサイズ以上か否か判定する。管理部340は、ステップ27で算出した値が選択レコードのサイズ以上であれば、処理をステップ29に進める一方(Yes)、算出した値が選択レコードのサイズ未満であれば、処理を終了する(No)。
ステップ29では、管理部340が、管理テーブル310を参照し、メモリ状態が“IN”であるレコードのなかで、ポイントが最低であるレコードを特定する。該当するレコードが複数ある場合、管理部340は、キャッシュメモリ制御機構の状況通知機能を利用し、該当する各レコードのデータメモリ領域がキャッシュインされた部分のソフトウェア制御領域(以下、「データキャッシュ領域」と略記する)のLRU情報等の使用状況を参照する。管理部340は、該当する各レコードのデータキャッシュ領域のLRU情報等の使用状況に基づいて、現在から最も遠い過去に使用されたデータキャッシュ領域を特定し、特定したデータキャッシュ領域に対応するレコードを特定する。
ステップ30では、管理部340は、特定したレコードのデータメモリ領域を、キャッシュメモリ220上のソフトウェア制御領域からメインメモリ110にキャッシュアウトする。
ステップ31では、管理部340は、特定したレコードのメモリ状態を“OUT”に設定する。
ステップ32では、管理部340は、キャッシュメモリ制御機構の状況通知機能を利用し、ソフトウェア制御領域の空き容量が選択レコードのサイズ以上か否か判定する。管理部340は、空き容量が選択レコードのサイズ以上であれば、処理をステップ33に進める一方(Yes)、空き容量が選択レコードのサイズ未満であれば、処理をステップ29に進める(No)。
ステップ33では、管理部340が、選択レコードのデータメモリ領域を、メインメモリ110からキャッシュメモリ220上のソフトウェア制御領域にキャッシュインする。
ステップ34では、管理部340が、選択レコードのメモリ状態を“IN”に設定する。
かかる管理テーブル更新処理によれば、管理部340は、仮想コンピュータ240の通知部320から受信したID、仮想アドレス及びサイズに基づいて管理テーブル310のレコードを生成する。また、管理部340は、管理テーブル310の各レコードのポイントを参照し、ポイントがより高いレコードのデータメモリ領域を、より優先的にキャッシュインする。さらに、管理部340は、ポイントがより高いレコードのデータメモリ領域をキャッシュインするだけの空き容量がソフトウェア制御領域にない場合、ポイントがより低いレコードのデータメモリ領域をキャッシュアウトする。そして、管理部340は、ポイントがより高いレコードのデータメモリ領域を、より優先的にキャッシュインする。
図10は、監視部350が、所定期間毎、例えば、10ms毎に実行する使用頻度更新処理のフローチャートを示す。
ステップ41では、監視部350が、管理テーブル310を参照し、レコードを順次選択する。
ステップ42では、監視部350が、選択レコードのメモリ状態が“IN”であるか否か判定する。監視部350は、メモリ状態が“IN”であれば、処理をステップ43に進める一方(Yes)、メモリ状態が“IN”でなければ、処理をステップ46に進める(No)。
ステップ43では、監視部350が、キャッシュメモリ制御機構の状況通知機能によって、選択レコードのデータキャッシュ領域のLRU情報等の使用状況を参照し、データキャッシュ領域が、例えば、現時刻から過去10msの間に使用されたか否かを判定する。監視部350は、判定した結果、データキャッシュ領域が過去10msの間に使用されていれば、処理をステップ44に進める一方(Yes)、データキャッシュ領域が過去10msの間に使用されていなければ、処理をステップ45に進める(No)。
ステップ44では、監視部350が、選択レコードの使用頻度に1を加える。
ステップ45では、監視部350が、管理テーブル310のすべてのレコードについて処理を実行したか否か判定する。監視部350が、管理テーブル310のすべてのレコードについて処理を実行していれば、処理を終了する一方(Yes)、管理テーブル310のすべてのレコードについて処理を実行していなければ、処理をステップ41に進める(No)。
ステップ46では、監視部350が、メインメモリ制御機構の状況通知機能によって、選択レコードのデータメモリ領域のLRU情報等の使用状況を参照し、データメモリ領域が、例えば、現時刻から過去10msの間に使用されたか否かを判定する。監視部350は、判定した結果、データメモリ領域が過去10msの間に使用されていれば、処理をステップ44に進める一方(Yes)、データメモリ領域が過去10msの間に使用されていなければ、処理をステップ45に進める(No)。
かかる使用頻度更新処理によれば、監視部350は、管理テーブル310の各レコードのデータキャッシュ領域又はデータメモリ領域が、例えば、現時刻から過去10msの間に使用されたか否かを判定する。監視部350は、データキャッシュ領域又はデータメモリ領域が、例えば、現時刻から過去10msの間に使用されていた場合、当該レコードの使用頻度に1を加える。
図11及び図12は、入替部360が、一定期間毎、例えば200ms毎に実行するキャッシュメモリ入替処理のフローチャートを示す。
ステップ51では、入替部360が、管理テーブル310を参照し、各レコードについて、使用頻度を例えば5で割り、小数点以下を切り上げた値を算出する。次に、入替部360は、各レコードについて算出した値を、各レコードのポイントに夫々設定する。
ステップ52では、入替部360が、管理テーブル310の各レコードの使用頻度を“0”に初期化する。
ステップ53では、入替部360が、管理テーブル310を参照し、メモリ状態が“OUT”になっているレコードが存在するか否か判定する。入替部360は、“OUT”になっているレコードが存在すれば、処理をステップ54に進める一方(Yes)、“OUT”になっているレコードが存在しなければ、処理を終了する(No)。
ステップ54では、入替部360が、管理テーブル310を参照し、メモリ状態が“OUT”であるレコードのうち、ポイントが最高値であるレコードを選択する。該当するレコードが複数ある場合、入替部360は、メインメモリ制御機構の状況通知機能を利用し、該当する各レコードのデータメモリ領域の使用状況を参照する。入替部360は、該当する各レコードのデータメモリ領域の使用状況に基づいて、現時刻から最も近い過去に使用されたデータメモリ領域を特定し、特定したデータメモリ領域に対するレコードを選択する。
ステップ55では、入替部360は、キャッシュメモリ制御機構の状況通知機能を利用し、ソフトウェア制御領域の空き容量が選択レコードのサイズ未満か否か判定する。入替部360は、空き容量がサイズ未満であれば、処理をステップ56に進める一方(Yes)、空き容量がサイズ以上であれば、処理をステップ63に進める(No)。
ステップ56では、入替部360が、管理テーブル310を参照し、メモリ状態が“IN”、かつ、ポイントが選択レコードのポイント未満のレコードをすべて抽出する。
ステップ57では、入替部360は、抽出したすべてのレコードのサイズの総計(ステップ56で抽出したレコードがなかった場合は“0”)と、ソフトウェア制御領域の空き容量と、を加えた値を算出する。
ステップ58では、入替部360は、算出した値が選択レコードのサイズ以上か否か判定する。入替部360は、算出した値が選択レコードのサイズ以上であれば、処理をステップ59に進める一方(Yes)、算出した値が選択レコードのサイズ未満であれば、処理を終了する(No)。
ステップ59では、入替部360が、管理テーブル310を参照し、メモリ状態が“IN”であるレコードのなかで、最低のポイントのレコードを特定する。該当するレコードが複数ある場合、入替部360は、キャッシュメモリ制御機構の状況通知機能を利用し、該当する各レコードのデータキャッシュ領域の使用状況を参照する。入替部360は、該当する各レコードのデータキャッシュ領域のLRU情報等の使用状況に基づいて、現在から最も遠い過去に使用されたデータキャッシュ領域を特定し、特定したデータキャッシュ領域に対するレコードを特定する。
ステップ60では、入替部360は、特定したレコードのデータメモリ領域を、ソフトウェア制御領域からキャッシュアウトする。
ステップ61では、入替部360は、特定したレコードのメモリ状態を“OUT”に設定する。
ステップ62では、入替部360は、キャッシュメモリ制御機構の状況通知機能を利用し、ソフトウェア制御領域の空き容量が選択レコードのサイズ以上か否か判定する。入替部360は、空き容量が選択レコードのサイズ以上であれば、処理をステップ63に進める一方(Yes)、空き容量が選択レコードのサイズ未満であれば、処理をステップ59に進める(No)。
ステップ63では、入替部360が、選択レコードのデータメモリ領域をソフトウェア制御領域にキャッシュインする。
ステップ64では、入替部360が、選択レコードのメモリ状態を“IN”に設定する。
かかるキャッシュメモリ入替処理によれば、入替部360が、管理テーブル310の各レコードについて、使用頻度からポイントを計算する。また、入替部360は、管理テーブル310の各レコードのポイントを参照し、ポイントがより高いレコードのデータメモリ領域を、より優先的にキャッシュインする。入替部360は、ポイントがより高いレコードのデータメモリ領域をキャッシュインするだけの空き容量がソフトウェア制御領域にない場合、ポイントがより低いレコードのデータメモリ領域をキャッシュアウトする。そして、入替部360は、ポイントがより高いレコードのデータメモリ領域を、より優先的にキャッシュインする。
従って、仮想コンピュータ240において、仮想化機構230の配置部330がプログラム部品250の展開指示を指示した場合、展開対象のプログラム部品250が、既にメインメモリ領域に存在する場合、展開対象のプログラム部品250が展開されているデータメモリ領域を、仮想コンピュータ240の仮想メモリの領域に対応づける。それゆえ、既存のデータメモリ領域とは別に、展開対象のプログラム部品250が展開されるメインメモリ領域を割当てないため、割当て不要となった分だけメインメモリ領域を節約することができる。このため、メインメモリ110を効率的に使用することができる。また、割当て不要となったメインメモリ領域が、キャッシュメモリ220の領域にキャッシュインされなくなるため、割当て不要となったメインメモリ領域の分だけキャッシュメモリ220の領域を節約することができる。このため、キャッシュメモリ220を効率的に使用することができ、仮想化システムの性能が向上する。
また、一定期間毎に管理テーブル310のレコードのポイントを更新し、ポイントに基づいて管理テーブル310のレコードのデータメモリ領域をキャッシュイン又はキャッシュアウトする。これにより、適度な間隔で、キャッシュインされているデータメモリ領域を見直し、入替えるため、キャッシュメモリ220を効率的に使用することができ、仮想化システムの性能が向上する。
また、メモリ管理プログラムが動作するサーバ100には、前述した実施形態に加えて、以下で示すような実施形態もある。
サーバ100のCPU120は、コアが1つのみでもよい。
サーバ100は、複数のCPU120を有していてもよい。この場合、CPU毎に管理テーブル310が存在する。
サーバ100は、シングルコアのCPU120を複数含み、1つのキャッシュメモリ220が各シングルコアのCPU120間で共用されるようなサーバ100であってもよい。
前述した実施形態について、具体的な実施例を以下に説明する。
実施例の前提条件として、IDテーブル300は図3に示すとおりである。また、管理テーブル310は図4に示すとおりである。さらに、図1で示すように、サーバの仮想化機構230上では、仮想コンピュータ#0〜#2が存在している。
仮想コンピュータ#0上では、OSとしてOS−Aが動作している。仮想コンピュータ#0のOS−A上では、アプリケーションとしてAPL−1及びAPL−2が動作している。仮想コンピュータ#1上では、OSとしてOS−Bが動作している。仮想コンピュータ#1のOS−B上では、アプリケーションとしてAPL−1及びAPL−2が動作している。仮想コンピュータ#2上では、OSとしてOS−Bが動作している。
ソフトウェア制御領域の空き容量は、16進数で100000バイトとする。
管理テーブル310のID“10”のレコードのデータキャッシュ領域は、現時刻から過去10msの間に使用されている。また、管理テーブル310のID“10”以外のレコードのデータメモリ領域、又は、管理テーブル310のID“10”以外のレコードのデータキャッシュ領域は、現時刻から過去10msの間に使用されていない。
ユーザなどから仮想化機構230に対し、仮想コンピュータ#3を作成し仮想コンピュータ#3上でOS−Aを動作させる指示と共に、OS−Aのファイル名“OS−A”が入力される。仮想化機構230は、仮想コンピュータ#3を作成し、仮想コンピュータ#3を起動する。起動された仮想コンピュータ#3上でファイル名“OS−A”により特定されるプログラム部品250の展開指示がされると、通知部320にファイル名“OS−A”が送信される。ファイル名“OS−A”を受信した通知部320は、IDテーブル300を参照し、ファイル名によって、OS−AのIDである“10”を特定する。次に通知部320は、配置部330に対し、ID“10”及び送信元情報を送信する。
配置部330は、管理テーブル310を参照し、ID“10”によって特定されるレコードから、物理アドレス“800000”、及びサイズ“200000”を取り出す。さらに、配置部330は、物理アドレス“800000”、及びサイズ“200000”から特定されるデータメモリ領域を、仮想コンピュータ#3の仮想メモリ領域の、例えば、“A0000000”から“A01FFFFF”に対応づける。そして、配置部330は、対応づけた仮想メモリ領域の仮想アドレス“A0000000”及びサイズ“200000”を、仮想コンピュータ#3の通知部320に対し返信する。
通知部320は、受信した仮想アドレスがNULL値ではないため、受信した仮想アドレス及びサイズを仮想コンピュータ#3に通知する。仮想コンピュータ#3は、通知された仮想アドレス及びサイズに基づき、図13に示すようにOS−Aを起動する。
また、仮想コンピュータ#1のOS−B上において、プログラム部品250であるAPL−3の実行のために、ユーザがファイル名“APL−3”を入力する。OS−Bは、APL−3を実行させるために、ファイル名“APL−3”のファイルから仮想コンピュータ#1の仮想メモリに対しAPL−3を展開する指示を発行し、仮想コンピュータ#1の通知部320にファイル名“APL−3”を送信する。
通知部320は、ファイル名“APL−3”を受信すると、IDテーブル300を参照し、受信したファイル名によってAPL−3のID“22”を特定する。次に、通知部320は、配置部330に対し、ID“22”及び送信元情報を送信する。
配置部330は、ID“22”によって特定されるレコードが管理テーブル310に存在しないため、NULL値の仮想アドレス及びNULL値のサイズを仮想コンピュータ240#1の通知部320に対し返信する。
通知部320は、NULL値の仮想アドレスが返信された場合、ストレージ140を参照し、APL−3を、仮想コンピュータ240#1の仮想メモリの領域に展開する。また、通知部320は、APL−3が展開された仮想メモリの領域が、例えば、“B0000000”から“B000FFFF”の場合、仮想アドレスとして“B0000000”、サイズとして“10000”、IDとして“22”を管理部340に送信する。さらに通知部320は、仮想アドレスとして“B0000000”、サイズとして“10000”をOS−Bに通知する。OS−Bは、通知された仮想アドレス及びサイズに基づいて、APL−3を起動する。
管理部340は、通知部320から仮想アドレス“B0000000”を受信すると、仮想アドレス“B0000000”に対する物理アドレス“F00000”を取得する。管理部340は、物理アドレス“F00000”、受信したサイズ“10000”及びID“22”、使用頻度“0”、ポイント“0”、メモリ状態“OUT”を設定した管理テーブル310のレコードを生成する。管理部340は、図14で示すように、生成したレコードを管理テーブル310に格納する。
また、管理部340は、メモリ状態が“OUT”であるレコードが管理テーブル310に存在するので、メモリ状態が“OUT”であるレコードのなかで、最高のポイント“2”を持つ、ID“21”のレコードを選択する。管理部340は、ソフトウェア制御領域の空き容量“100000”が選択レコードのサイズ“1F0000”未満のため、管理テーブル310を参照し、メモリ状態が“IN”であるレコードのなかで、ポイントが“2”未満のレコードである、ID“20”のレコードを抽出する。
次に管理部340は、抽出したレコードのサイズの総計及びソフトウェア制御領域の空き容量を加えた値“2A0000”を算出する。管理部340は、算出した値“2A0000”が選択レコードのサイズ“1F0000”以上のため、ID“20”のレコードのデータメモリ領域をキャッシュアウトし、ID“20”のレコードのメモリ状態を“OUT”に設定する。
さらに、管理部340は、ソフトウェア制御領域の空き容量“2A0000”となり、選択レコードのサイズ“1F0000”以上となったので、選択レコードのデータメモリ領域をソフトウェア制御領域にキャッシュインし、選択レコードのメモリ状態を“IN”に設定する。処理の結果、管理テーブル310は、図15に示すようになるため、管理部340は、ID“11”のレコードを選択する。選択レコードのサイズ“100000”は、選択レコードのポイント“1”未満のレコードの総計“10000”と、ソフトウェア制御領域の空き容量“B0000”と、を加算した値“C0000”より大きいため、管理部340は処理を終了する。
監視部350は、管理テーブル310のレコード“10”を選択する。監視部350は、選択レコードのメモリ状態が“IN”であるので、選択レコードのデータキャッシュ領域が現時刻から過去10msの間に使用された否か判定する。監視部350は、選択レコードのデータキャッシュ領域が現時刻から過去10msの間に使用されているため、選択レコードの使用頻度に“1”を加える。
また、監視部350は、管理テーブル310のレコード“11”を選択する。監視部350は、選択レコードのメモリ状態が“OUT”であるので、選択レコードのデータメモリ領域が現時刻から過去10msの間に使用された否か判定する。監視部350は、選択レコードのデータメモリ領域が現時刻から過去10msの間に使用されていないため、管理テーブル310の次のレコードの処理に移る。同様に管理テーブル310の各レコードについて、監視部350によって使用頻度更新処理が実行された結果、管理テーブル310の各レコードは図16に示すようになる。
入替部360は、管理テーブル310の各レコードについて、使用頻度からポイントを算出し、使用頻度を“0”にする(例えば、管理テーブル310のレコード“22”は、図17で示すように、ポイントが“1”になり、使用頻度が0になる)。
また、入替部360は、メモリ状態が“OUT”であるレコードが管理テーブル310に存在するので、メモリ状態が“OUT”であるレコードのなかで、最高のポイント“2”を持つ、ID“20”のレコードを選択する。入替部360は、ソフトウェア制御領域の空き容量“B0000”が選択レコードのサイズ“1A0000”未満のため、メモリ状態が“IN”であるレコードのなかで、ポイントが“2”未満のレコードを抽出する。入替部360は、該当するレコードがなかったため、ソフトウェア制御領域の空き容量“B0000”を算出した値とする。入替部360は、算出した値“B0000”が選択レコードのサイズ“1A0000”以上ではないため、処理を終了する。
100 サーバ
110 メインメモリ
220 キャッシュメモリ
240 仮想コンピュータ
310 管理テーブル
320 通知部
330 配置部
340 管理部
350 監視部
360 入替部
本発明は、メモリ管理プログラムメモリ管理方法、及び情報処理装置に関する。
また、入替部360は、メモリ状態が“OUT”であるレコードが管理テーブル310に存在するので、メモリ状態が“OUT”であるレコードのなかで、最高のポイント“2”を持つ、ID“20”のレコードを選択する。入替部360は、ソフトウェア制御領域の空き容量“B0000”が選択レコードのサイズ“1A0000”未満のため、メモリ状態が“IN”であるレコードのなかで、ポイントが“2”未満のレコードを抽出する。入替部360は、該当するレコードがなかったため、ソフトウェア制御領域の空き容量“B0000”を算出した値とする。入替部360は、算出した値“B0000”が選択レコードのサイズ“1A0000”以上ではないため、処理を終了する。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータに、
前記仮想コンピュータの仮想化されたメモリである仮想メモリの領域にプログラムの配置を指示し、
前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
処理を実行させることを特徴とするメモリ管理プログラム。
(付記2)
前記メモリ管理プログラムにおいて、
前記コンピュータは、
前記メインメモリに配置されたプログラムと、前記プログラムが配置されたメインメモリの領域を特定する所在情報と、を関連付けて保持するテーブルを参照することで、前記配置対象のプログラムが前記メインメモリに配置されているか否かを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムについて前記テーブルに保持された所在情報を更新することを特徴とする付記1記載のメモリ管理プログラム。
(付記3)
前記メモリ管理プログラムにおいて、
前記所在情報は、プログラムが配置されたメインメモリの領域の先頭物理アドレス、及び、前記配置されたプログラムのサイズであることを特徴とする付記2記載のメモリ管理プログラム。
(付記4)
前記メモリ管理プログラムにおいて、
前記コンピュータは、前記キャッシュメモリに対して前記メインメモリに格納されているデータの一部の登録又は吐き出しを行なうキャッシュメモリ制御部を有し、
前記コンピュータに、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されたプログラムと、前記キャッシュメモリに登録されていないプログラムと、を前記メインメモリに配置された各プログラムの使用頻度に応じて入替る処理を更に実行させることを特徴とする付記1記載のメモリ管理プログラム。
(付記5)
前記コンピュータは、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されているプログラムのなかで、使用頻度が最も少ないプログラムを前記キャッシュメモリから吐き出すとともに、使用頻度が最も多いプログラムを前記キャッシュメモリに登録することを特徴とする付記4記載のメモリ管理プログラム。
(付記6)
複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータが実行するメモリ管理方法であって、
前記仮想コンピュータの仮想化された仮想メモリの領域にプログラムの配置を指示し、
前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
ことを特徴とするメモリ管理方法。
(付記7)
複数の演算処理部と、
前記複数の演算処理部に接続され、データを記憶するメインメモリと、
前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリと、
前記仮想コンピュータの仮想化された仮想メモリの領域にプログラムの配置を指示する配置部と、
前記配置部から前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定する判定部と、
前記判定部が、前記配置対象のプログラムが前記メインメモリに配置されていると判定した場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけするとともに、前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する管理部を有することを特徴とする情報処理装置。
(付記8)
複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータに、
前記仮想コンピュータの仮想化されたメモリである仮想メモリの領域にプログラムの配置を指示し、
前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
処理を実行させることを特徴とするメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
(付記9)
前記メモリ管理プログラムにおいて、
前記コンピュータは、
前記メインメモリに配置されたプログラムと、前記プログラムが配置されたメインメモリの領域を特定する所在情報と、を関連付けて保持するテーブルを参照することで、前記配置対象のプログラムが前記メインメモリに配置されているか否かを判定し、
前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムについて前記テーブルに保持された所在情報を更新することを特徴とする付記8記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
(付記10)
前記メモリ管理プログラムにおいて、
前記所在情報は、プログラムが配置されたメインメモリの領域の先頭物理アドレス、及び、前記配置されたプログラムのサイズであることを特徴とする付記9記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
(付記11)
前記メモリ管理プログラムにおいて、
前記コンピュータは、前記キャッシュメモリに対して前記メインメモリに格納されているデータの一部の登録又は吐き出しを行なうキャッシュメモリ制御部を有し、
前記コンピュータに、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されたプログラムと、前記キャッシュメモリに登録されていないプログラムと、を前記メインメモリに配置された各プログラムの使用頻度に応じて入替る処理を更に実行させることを特徴とする付記8記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
(付記12)
前記コンピュータは、
前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されているプログラムのなかで、使用頻度が最も少ないプログラムを前記キャッシュメモリから吐き出すとともに、使用頻度が最も多いプログラムを前記キャッシュメモリに登録することを特徴とする付記11記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。

Claims (12)

  1. 複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータに、
    前記仮想コンピュータの仮想化されたメモリである仮想メモリの領域にプログラムの配置を指示し、
    前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
    前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
    前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
    処理を実行させることを特徴とするメモリ管理プログラム。
  2. 前記メモリ管理プログラムにおいて、
    前記コンピュータは、
    前記メインメモリに配置されたプログラムと、前記プログラムが配置されたメインメモリの領域を特定する所在情報と、を関連付けて保持するテーブルを参照することで、前記配置対象のプログラムが前記メインメモリに配置されているか否かを判定し、
    前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムについて前記テーブルに保持された所在情報を更新することを特徴とする請求項1記載のメモリ管理プログラム。
  3. 前記メモリ管理プログラムにおいて、
    前記所在情報は、プログラムが配置されたメインメモリの領域の先頭物理アドレス、及び、前記配置されたプログラムのサイズであることを特徴とする請求項2記載のメモリ管理プログラム。
  4. 前記メモリ管理プログラムにおいて、
    前記コンピュータは、前記キャッシュメモリに対して前記メインメモリに格納されているデータの一部の登録又は吐き出しを行なうキャッシュメモリ制御部を有し、
    前記コンピュータに、
    前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されたプログラムと、前記キャッシュメモリに登録されていないプログラムと、を前記メインメモリに配置された各プログラムの使用頻度に応じて入替る処理を更に実行させることを特徴とする請求項1記載のメモリ管理プログラム。
  5. 前記コンピュータは、
    前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されているプログラムのなかで、使用頻度が最も少ないプログラムを前記キャッシュメモリから吐き出すとともに、使用頻度が最も多いプログラムを前記キャッシュメモリに登録することを特徴とする請求項4記載のメモリ管理プログラム。
  6. 複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータが実行するメモリ管理方法であって、
    前記仮想コンピュータの仮想化された仮想メモリの領域にプログラムの配置を指示し、
    前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
    前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
    前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
    ことを特徴とするメモリ管理方法。
  7. 複数の演算処理部と、
    前記複数の演算処理部に接続され、データを記憶するメインメモリと、
    前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリと、
    前記仮想コンピュータの仮想化された仮想メモリの領域にプログラムの配置を指示する配置部と、
    前記配置部から前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定する判定部と、
    前記判定部が、前記配置対象のプログラムが前記メインメモリに配置されていると判定した場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけするとともに、前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する管理部を有することを特徴とする情報処理装置。
  8. 複数の演算処理部と、データを記憶するメインメモリと、前記複数の演算処理部から共有されるとともに、前記メインメモリが記憶するデータの一部を保持するキャッシュメモリを有し、複数の仮想コンピュータが動作可能なコンピュータに、
    前記仮想コンピュータの仮想化されたメモリである仮想メモリの領域にプログラムの配置を指示し、
    前記仮想メモリの領域に対しプログラムを配置する指示を受けた場合、配置対象のプログラムが前記メインメモリに配置されているかを判定し、
    前記配置対象のプログラムが前記メインメモリに配置されていると判断された場合、前記配置対象のプログラムが配置されたメインメモリの領域を、前記仮想メモリの領域に対応づけし、
    前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムを前記仮想メモリの領域に配置する、
    処理を実行させることを特徴とするメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
  9. 前記メモリ管理プログラムにおいて、
    前記コンピュータは、
    前記メインメモリに配置されたプログラムと、前記プログラムが配置されたメインメモリの領域を特定する所在情報と、を関連付けて保持するテーブルを参照することで、前記配置対象のプログラムが前記メインメモリに配置されているか否かを判定し、
    前記配置対象のプログラムが前記メインメモリに配置されていない場合、前記配置対象のプログラムについて前記テーブルに保持された所在情報を更新することを特徴とする請求項8記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
  10. 前記メモリ管理プログラムにおいて、
    前記所在情報は、プログラムが配置されたメインメモリの領域の先頭物理アドレス、及び、前記配置されたプログラムのサイズであることを特徴とする請求項9記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
  11. 前記メモリ管理プログラムにおいて、
    前記コンピュータは、前記キャッシュメモリに対して前記メインメモリに格納されているデータの一部の登録又は吐き出しを行なうキャッシュメモリ制御部を有し、
    前記コンピュータに、
    前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されたプログラムと、前記キャッシュメモリに登録されていないプログラムと、を前記メインメモリに配置された各プログラムの使用頻度に応じて入替る処理を更に実行させることを特徴とする請求項8記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
  12. 前記コンピュータは、
    前記メインメモリに配置されたプログラムについて、前記キャッシュメモリに登録されているプログラムのなかで、使用頻度が最も少ないプログラムを前記キャッシュメモリから吐き出すとともに、使用頻度が最も多いプログラムを前記キャッシュメモリに登録することを特徴とする請求項11記載のメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体。
JP2012557716A 2011-02-16 2011-02-16 メモリ管理プログラム、メモリ管理方法、及び情報処理装置 Pending JPWO2012111113A1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/053284 WO2012111113A1 (ja) 2011-02-16 2011-02-16 メモリ管理プログラム、メモリ管理方法、情報処理装置、及びメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体

Publications (1)

Publication Number Publication Date
JPWO2012111113A1 true JPWO2012111113A1 (ja) 2014-07-03

Family

ID=46672077

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012557716A Pending JPWO2012111113A1 (ja) 2011-02-16 2011-02-16 メモリ管理プログラム、メモリ管理方法、及び情報処理装置

Country Status (4)

Country Link
US (1) US20130346975A1 (ja)
EP (1) EP2677432A1 (ja)
JP (1) JPWO2012111113A1 (ja)
WO (1) WO2012111113A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016013086A1 (ja) * 2014-07-24 2016-01-28 株式会社日立製作所 計算機システムおよびメモリ割当管理方法
US10387329B2 (en) 2016-02-10 2019-08-20 Google Llc Profiling cache replacement
KR20190006719A (ko) 2017-07-11 2019-01-21 광주과학기술원 진단 키트, 진단 방법 및 진단 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11328031A (ja) * 1998-03-12 1999-11-30 Hewlett Packard Co <Hp> 動的変換システムにおけるトレ―スのランク付け方法
JP2004258698A (ja) * 2003-02-24 2004-09-16 Hitachi Ltd マルチos計算機システムの制御方法
JP2008033392A (ja) * 2006-07-26 2008-02-14 Nec Corp 仮想計算機システム及びその動作方法
JP2008077144A (ja) * 2006-09-19 2008-04-03 Ricoh Co Ltd 仮想化システム、メモリ管理方法及び制御プログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11249916A (ja) 1998-03-03 1999-09-17 Fujitsu Ltd メモリ管理装置および記録媒体

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11328031A (ja) * 1998-03-12 1999-11-30 Hewlett Packard Co <Hp> 動的変換システムにおけるトレ―スのランク付け方法
JP2004258698A (ja) * 2003-02-24 2004-09-16 Hitachi Ltd マルチos計算機システムの制御方法
JP2008033392A (ja) * 2006-07-26 2008-02-14 Nec Corp 仮想計算機システム及びその動作方法
JP2008077144A (ja) * 2006-09-19 2008-04-03 Ricoh Co Ltd 仮想化システム、メモリ管理方法及び制御プログラム

Also Published As

Publication number Publication date
EP2677432A1 (en) 2013-12-25
WO2012111113A1 (ja) 2012-08-23
US20130346975A1 (en) 2013-12-26

Similar Documents

Publication Publication Date Title
US8874877B2 (en) Method and apparatus for preparing a cache replacement catalog
US20150074058A1 (en) Container-based processing method, apparatus, and system
JP2020135499A (ja) データ処理装置、ストレージ装置およびプリフェッチ方法
TWI539280B (zh) 用於分析未經特定設計以提供記憶體分配資訊之應用程式及擷取記憶體分配資訊的方法、及其電腦系統和電腦可讀儲存媒體
US20150339229A1 (en) Apparatus and method for determining a sector division ratio of a shared cache memory
CN105659212A (zh) 对于分区休眠的热页的检测
JP5786955B2 (ja) メモリ縮退方法及び情報処理装置
US20130311751A1 (en) System and data loading method
Min et al. Vmmb: Virtual machine memory balancing for unmodified operating systems
EP3572940A1 (en) Method and device for scheduling vcpu thread
WO2012111113A1 (ja) メモリ管理プログラム、メモリ管理方法、情報処理装置、及びメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体
JP2019021070A (ja) 情報処理装置、情報処理方法、及びプログラム
JP6217008B2 (ja) 電子機器、制御方法、及び、プログラム
US9898405B2 (en) Working set adjustment in a managed environment
JP5342660B2 (ja) 管理システム及びシステム管理方法及びプログラム
JP5699665B2 (ja) サーバ装置、処理実行方法およびプログラム
US8484423B2 (en) Method and apparatus for controlling cache using transaction flags
JP4799587B2 (ja) ネットワークブートシステム及びネットワークブート方法
KR101790728B1 (ko) 가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법 및 이를 기록한 기록 매체
JP6200100B2 (ja) 計算機システム
JP5577518B2 (ja) メモリ管理方法、計算機及びメモリ管理プログラム
JP5637934B2 (ja) 仮想化装置、仮想化装置制御方法、仮想化装置制御プログラム
US20170147408A1 (en) Common resource updating apparatus and common resource updating method
JP2013196421A (ja) 仮想化システム、仮想サーバ、メモリ管理方法及びメモリ管理プログラム
WO2016084150A1 (ja) サーバ計算機、計算機システム、及び、方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140902

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150106