JP2008505389A - コンピュータ・オペレーティング・システムの仮想メモリのサブシステムを自動調整する方法、プログラム記憶デバイス、および装置 - Google Patents

コンピュータ・オペレーティング・システムの仮想メモリのサブシステムを自動調整する方法、プログラム記憶デバイス、および装置 Download PDF

Info

Publication number
JP2008505389A
JP2008505389A JP2007519201A JP2007519201A JP2008505389A JP 2008505389 A JP2008505389 A JP 2008505389A JP 2007519201 A JP2007519201 A JP 2007519201A JP 2007519201 A JP2007519201 A JP 2007519201A JP 2008505389 A JP2008505389 A JP 2008505389A
Authority
JP
Japan
Prior art keywords
free
wait
rate
memory space
memory
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
JP2007519201A
Other languages
English (en)
Other versions
JP2008505389A5 (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2008505389A publication Critical patent/JP2008505389A/ja
Publication of JP2008505389A5 publication Critical patent/JP2008505389A5/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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • 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/12Replacement control

Landscapes

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

Abstract

【課題】コンピュータ・システムのメイン・メモリをそのオペレーティング・システムのインスタンスで実行するアプリケーション間に効率的に配分する方法、情報処理システム、およびコンピュータ読み取り可能媒体を提供する。
【解決手段】仮想メモリ・マネージャのページ置換アルゴリズムで使用する閾値を、コンピュータ・システムのメモリ負荷に応答して自動的に調整する。ある前記閾値は、メモリ負荷の関数として変更する空きメモリの下限閾値である。例えば、このような負荷を、所定の時間間隔の間に待ち行列に加えられたスレッドの数を、その間隔のクロック・ティックの数で割った値で表すことができるであろう。この値はスレッド待機率として知られる。さらにこの率を目標率と比較して、下限閾値の値を変更するべきかどうかを判断する。空きメモリ空間が下限閾値未満になったら、ページ置換デーモンを使ってメモリをページアウトして、利用できるメモリ空間を増やす。
【選択図】図2

Description

本発明は、コンピュータ・オペレーティング・システムの仮想メモリの管理コンポーネントに関する。さらに具体的には、本発明はオペレーティング・システムの仮想メモリ・マネージャのあらゆるページ置換アルゴリズムで使用する閾値の調整に関する。
マシン上で実行するオペレーティング・システム(OS)の仮想メモリ・マネージャ(VMM)コンポーネントは、マシンのメイン・メモリをそのOSインスタンスで実行するアプリケーション間に効率的に配分する役割をする。VMMの主な役割の1つが、十分に利用されていないメイン・メモリのブロックのコンテンツ(「フレーム」もしくは「ページ・フレーム」という)をディスク上のページング・スペースにページアウトすることと、そのフレームをメイン・メモリを必要とする別のアプリケーションに再割り当てすることである。これは一般的には、「ページ置換デーモン」(ほとんどのUNIXオペレーティング・システムでは「LRUデーモン」ともいう)と呼ばれるデーモン・プロセスの助けを借りて行う。
フレームを解放するプロセス(すなわち、そのコンテンツをディスクに移動してフリー・フレームにする行為)はフリー・フレームを要求するアプリケーション(フリー・フレームの使用者)に割り当てるプロセスよりもかなり時間が長くかかるため、ページ置換デーモンはOSのフリー・フレームが余分に必要になることを見越して、OSのフリー・フレームの数がゼロになる前に、フレームのページアウトを開始するのが一般的である。VMMはページ置換デーモンを開始する時期と各実行で解放すべきページ数を、2つの調整可能なパラメータmin_freeおよびmax_freeを使って決定できる。ページ置換デーモンはフリー・フレームの数がmin_free未満になるとすぐに開始し、各実行の最後にフリー・フレームの数がmax_freeに達するように十分なページを解放する。
現在、これらのパラメータは、VMMのパフォーマンスを調整して、OSで実行するアプリケーションのニーズに合わせるために、システム・アドミニストレータが明確に入力しなければならない。この調整には人手による入力が必要なため、これらのパラメータが調整されることはほとんどなく、その結果VMMは、そのためOSも次善のパフォーマンスしか得られていない。この調整不足によりIT組織のコストがかかる。
本発明の目的は、システム・アドミニストレータによるVMMの手作業による調整の必要をなくして、システムのパフォーマンスを改善することである。本発明の重要な利点は、OSがその作業負荷の変動にはるかに反応性/適応性があることである。さらに具体的には、本発明はVMMシステム・パラメータの調整を、OSのメモリ負荷の変動に応答してその値を自動的に変えることによって自動化する。
本発明は、OSのメモリ負荷に応答して、下限閾値として知られるパラメータを自動的に変更することによって、OSのメモリの可用性を高める方法を提供する。現在の空きメモリ空間が下限閾値未満になるとき、より多くの空きメモリ空間を作る。
本発明に関する主題は、本明細書の前にある請求項で具体的に指摘し、かつ個別に請求する。本発明の前述並びにその他の特徴および利点は、添付の図面と合わせて以下の詳細な説明を読めば明らかになるであろう。
本発明のより具体的な好適な実施例は、空きメモリ空間の下限閾値を初期値に設定し、現在の「スレッド待機率」が目標の「スレッド待機率」と異なるときに、この下限閾値を自動的に変更することによって、OSのメモリ・マネージャを自動的に調整する方法を提供する。「スレッド待機率」とは、規定の時間間隔における単位時間あたりのスレッド待ちの数である。さらに、メモリ・マネージャは、空きメモリ空間が下限閾値未満になるときに利用できるメモリ空間を増やす操作を開始する。
図1を参照すると、代表的なオペレーティング・システム・カーネル10は、仮想メモリ・マネージャ(VMM)20、プロセス・マネージャ30、ファイルシステム40、ネットワーキング・サブシステム50等の複数のコンポーネントからなる。ファイルシステム40はハードディスク・ドライブへの構造的なアクセスを提供する。プロセス・マネージャはプロセスのスケジュールを管理して、プロセッサにスレッドを割り当て、一方ネットワーキング・サブシステムはアプリケーションが他のマシンまたはコンピュータと通信するのを可能にする。本発明は、オペレーティング・システム(OS)の仮想メモリ・マネージャ・コンポーネントに関係しており、他のコンポーネントは技術上よく知られているため本出願では説明しない。図2は、VMM20がシステムのメモリの管理を維持するデータ構造の一部を示す。VMM20は、フリー・ページ・フレーム22のトラックを実メモリに保持する一又は複数のフリー・リスト21を維持する。VMM20はフリー・フレームの総数も変数nfree63に維持する。フリー・ページの要求がきたら、VMM20はnfreeが>0かどうかをチェックし、もしそうなら、そのフリー・リスト21を検索してフリー・ページを確保する。nfree63の値が下限閾値値min_free61未満の場合、VMM20はページ置換デーモン(LRUデーモンとしても知られる)25を呼び出して、ページアウトを開始し、使用中のページ・フレーム23のコンテンツをディスク51に退避させることによってフリー・ページ・フレーム22を作成する。ここで説明する実施例では、このページアウトは、ページ置換デーモンと呼ばれる個別のプロセスで行う。ページ置換デーモンは、その実行の最後に、nfreeがmax_free以上になるような十分な数のページ・フレームをページアウトする。フリー・ページ・フレームの要求が満たされないものはすべて、図2に図示する待機リスト32に入れられる。フリー・ページ・フレームが後で利用できるようになったら、要求するスレッド33がウェイクアップされる。
ページ置換デーモンが使用する高次のアルゴリズムを図3に示す。ブロック101は、nfree<min_freeのときのページ置換デーモンの呼び出しを表す。102で、ページ置換デーモンは、max_free61からnfree63を引いて、ページアウトするページ数を計算する。103で、使用中のページ・フレーム・リスト23をスキャンして、退避させるのに適切な候補を見つける。ページ置換デーモンが退避させるページの候補を選択するのにメモリのスキャンを開始したら、どのページをページアウトするかを決めるにはいくつかのポリシーがある。本発明は退避させるページの候補選びに特に決まったポリシーに依存しない。102で計算したページ数を退避させたら、104でページ置換デーモンはnfreeがまだmax_free未満かどうかをもう一度チェックする。ページ・フレームを解放した直後に消費される場合には、そうなる可能性があるからである。104の述語が真なら、分岐線106に進んで、ステップ102を再開する。そうでなければ、分岐線105に進んで、ページ置換デーモンは107でスリープに戻る。
上記説明によると、VMMのページ置換デーモンの最終目標は、待機リスト32に過多のフリー・ページを要求するスレッド33をもつコストと、過多の使用中のページ24を早期に退避させるコストとのバランスをとることである。本発明は、パラメータmin_free61およびmax_free62の最適値を判断して、これらパラメータをフリー・フレームの変動を待っているスレッドの数に応じて継続的に調整するメカニズムを提供することによって、この問題を解決する。
図4は、本発明の実装に必要な好適な実施例のデータ構造を示す。要求するスレッドの数と、待機リストで各要求するスレッドがフリー・フレームを待つ時間数を継続的にモニターする必要がある。これは変数thrd_wait35を維持することによって行う。
thrd_wait35の値は次のとおり更新する。スレッド33が待機リスト32に入る度に、オペレーティング・システムはスレッドがスレッドあたりの変数waitlist_enque_time36で待ち行列に入っている時間を表す。フリー・ページが利用できるようになってそのスレッドが最終的に待ち行列から出されたら、OSは現在時刻からwaitlist_enque_time36を引いて、スレッドが待機リストで費やした合計時間を出す。次に、OSはこの合計時間をクロック・ティックに変換して、それにthrd_wait35カウンタに追加すると、カウンタは待機リストですべてのスレッドが合わせて消費したクロック・ティックの合計時間数に相当する。このカウンタは、図5で説明するようにページ置換デーモンでリセットされる。そのため、thrd_wait35カウンタは、待ち行列に入れられて、後で、ページ置換デーモンの2つの実行の間のある時点で待機リストから出されたすべてのスレッドの合計待ち時間に相当する。ページ置換デーモンは別の変数thrd_wait_rate37を維持するが、これはクロック・ティックあたりの待機スレッドの平均数である。これはクロック・ティックあたりのカウント単位で維持されるため、この値はCPUの周波数が異なる様々なシステム全体で統一できる。ページ置換デーモンが始動する度に、すべてのスレッドが最後の実行以降待機に費やした合計時間数の累計と、2つの実行の間に含まれるクロック・ティック数との比として、thrd_wait_rate37の値を計算する。ページ置換デーモンは別の変数strt_time39も維持し、それを使って前述した2つの実行の間に含まれるクロック・ティック数を計算する。最後に、ページ置換デーモンは図4に示すthrd_wait_rate_tgt38の値を使って、min_freeおよびmax_freeをどれくらい変更しなければならないかを計算する。
図5に示すフローチャートは、ページ置換デーモンの新しい機能をまとめている。ブロック201は、nfree<min_freeの場合のページ置換デーモンの呼び出しを表す。202で、ページ置換デーモンは、その最後の実行以降の経過時間と、すべてのスレッドが最後の実行以降待機リストで費やしたクロック・ティックの合計時間数を計算する。経過時間は、システムの現在時刻を読みとって、以前に記録されたstrt_time38の値を引いて計算する。すべてのスレッドが最後の実行から待機している合計時間数は、2つの部分からなる。最初の部分は、現在待機リストに入っていないスレッドの合計待ち時間である。これはOSによりthrd_waitカウンタに維持される。2つめの部分は、すでに待機リストにあって待ち状態で費やしているスレッドの合計時間である。ページ置換デーモン25は、待機リスト32をウォークスルーし、現在時刻から各スレッドのwaitlist_enque_time36を引いて、すべての待ち時間を合計することによって、この2つめの部分を計算する。待機リストに入るまたは出るすべてのスレッドの合計待ち時間は、上記値をthrd_waitカウンタ35に足して計算する。
すべてのスレッドの合計待ち時間を計算する代替法は、クロック・ティックごとに1回待機リストにポーリングして待機リストのスレッドの数をカウントし、それをthrd_waitカウンタに加える。この場合、ページ置換デーモンは各実行の始めに待機リストをウォークスルーする必要はない。欠点は、OSがクロック・ティックの度に追加作業をする必要があるため、かなりのオーバーヘッドになりうることである。
ページ置換デーモンが202で経過時間と合計スレッド待ち時間を計算するとき、タイムスタンプ値strt_timeとスレッドごとのwaitlist_enque_timeも、これら変数を読み込んだ直後のシステムの現在時刻にリセットする。thrd_wait_timeも0にリセットして、このカウンタが今から待機リストに行く全スレッドの待ち時間に対応させるようにする。203で、ページ置換デーモンは、合計スレッド待ち時間を経過時間で割って、thrd_wait_rate36を計算する。204で、以下に示すように、上記計算したthrd_wait_rateと予め設定した目標値thrd_wait_rate_tgtとの差に基づいて、min_free61およびmax_free62の値を再計算する。
望ましいmin_free値は、thrd_wait_rateがthrd_wait_rate_tgtよりも高い場合に増やし、thrd_wait_rateがthrd_wait_rate_tgtよりも低い場合に減らす。実施例では、望ましいmin_freeは以下に示すようにメモリ負荷の関数として計算する。
望ましいmin_free=min_free×thrd_wait_rate/thrd_wait_rate_tgt
min_freeパラメータは、望ましいmin_free値と現在値の平均として更新する。この平均化は、作業負荷の突発的な急増による振幅に対するある程度の減幅を提供する。スラッシングを避けるために、ページ置換デーモンによって更新できるmin_free値に上限を課すこともできる。
max_freeパラメータは、このmin_freeの更新前と同じmax_freeとmin_freeとの差を維持するように更新する。
例:thrd_wait_rate_tgtを1に設定し、thrd_wait_rateの計算値が1.5で、min_freeおよびmax_freeがそれぞれ120および128と仮定する。望ましいmin_freeは、120×1.5/1=180となる。ページ置換デーモンはmin_freeを、望ましいmin_freeと現在のmin_freeとの平均に変更するので、120+180/2=150である。max_freeの新たな値は、150+(128−120)=158となる。
前述した単純な線形近似の代わりに、thrd_wait_rateの偏差から望ましいmin_free値を計算するいくつかの代替法も使用できる。望ましいmin_free値を計算するのに使う方法は、min_freeを、thrd_wait_rate>thrd_wait_rate_tgtの場合に増やし、thrd_wait_rate<thrd_wait_rate_tgtの場合に減らすという一般原則を守るべきである。
min_freeおよびmax_freeの値を再計算した後、ページ置換デーモンのステップの残り、205、206、207、208、209、210は、それぞれ図3の102、103、104、105、106、107のステップと同様である。より具体的には、205で、ページ置換デーモンは、max_free61からnfree63を引いて、ページアウトするべきページ数を計算する。206で、使用中のページ・フレーム・リストをスキャンして、退避させるのに適切な候補を見つける。ページ置換デーモンが退避させるページの候補を選択するためにメモリをスキャンし始めたら、どのページをページアウトするかを決めるポリシーはいくつかある。本発明は、退避させるページの候補選びに特に決まったポリシーに依存しない。205で計算したページ数を退避させたら、ページ置換デーモンは、207でまだnfreeがmax_free未満かどうかを再びチェックする。ページ・フレームを解放した直後に消費されたら、そうなる可能性があるためである。207の述語が真の場合、分岐線209に進んで、ステップ205を再び始める。そうでなければ、分岐線208に進んで、210でページ置換デーモンはスリープに戻る。
図6は、時間線図を使って、thrd_wait_rateをどのように計算するかを例証する。
矢印381は壁時計時刻の基準線を表す。381上で、3個のタイムスタンプts、ts、tsは、ページ置換デーモンの3回の実行の始まりを表す。時間軸に示される双頭の矢印は、ページ置換デーモン25の各実行が完了するのにかかる時間数を表す。この図から、ページ置換デーモンの各実行は完了するのにかかる時間数が異なることが分かる。また、ページ置換デーモンの連続する2つのインスタンスの間の経過時間は定まっていない。各タイムスタンプのTW値は、ページ置換デーモンの最後の実行から全スレッドが待ち行列で費やす合計時間数を表す。TW値は、前の段落で説明したように、待機リストにある各スレッドのthrd_waitカウンタとwaitlist_enque_timeを使って計算する。
実施例では、様々なパラメータは以下に示すようにシステム初期化のときに初期設定しなければならない。
・min_free61およびmax_free62はあるディフォルト値に設定する。
・thrd_waitカウンタ35およびthrd_wait_rate37は0に初期設定する。
・thrd_wait_rate_tgt38は特定の値に初期設定する。
・strt_time39は現在時刻に初期設定する。
上記の実施例で説明するように、たとえthrd_wait_rate値を正確に維持しなくても、本発明を実施できることに注目するべきである。本出願で説明する好適な実施例では、ページ置換デーモンは、呼び出される度に待機リスト全体をウォークスルーすることによって、thrd_wait_rateの正確な値を計算する。thrd_wait_rateの概算値を計算することによっても本発明を実施することはでき、それによってメモリの可用性に対する影響を著しく減じることなく、実装の複雑さを減らすことができる。以下の段落で、thrd_wait_rateを計算する代替法を2つ説明する。
1)システムはthrd_waitカウンタに加えて、2つの変数nthrds_waitedおよびnthrds_waitingを維持できる。nthrds_waitedは、thrd_waitの値に寄与したスレッドの数に相当する。nthrds_waitingは、現在待機リストにあるスレッドの数に相当する。これら変数は共に、1つのスレッドが待機リストからなくなる度に更新される。nthrds_waitingは、1つのスレッドが待機リストに入れられるときにも更新される。これらの変数があれば、ページ置換デーモンは以下のようにthrd_wait_rateを計算できる。
thrd_wait_rate=(thrd_wait+((thrd_wait/nthrds_waited)×nthrds_waiting))/(current time−strt_time)
この方法を使うと、各スレッドのwaitlist_enque_timeを維持する必要はなくなる。
2)待機リストから外されたスレッドを無視すれば、予測はさらに簡略化できる。現在待機リストにないスレッドを無視して、待機リストにあるスレッドが均一な時間間隔で待ち行列に入れられたと仮定すると、thrd_wait_rateは単純にnthrds_waiting/2として計算できる。これは以下のように導くことができる。
待機リストにある最初のスレッドが時間T1で待ち行列に入れられ、現在時刻がT2だと仮定する。スレッドは均一な時間間隔で待機リストに入れられたと仮定しているため、平均して各スレッドは(T2−T1)/2の時間数分待機している。
現在待機リストにある全スレッドの合計待ち時間=(nthrds_waiting×(T2−T1)/2)

経過時間=(T2−T1)
thrd_wait_rate=(nthrds_waiting×(T2−T1)/2)/(T2−T1)=nthrds_waiting/2
図7は、本発明の実施例を実装するのに使える情報処理システムを示す高次のブロック図である。コンピュータシステムは、プロセッサ704などの一又は複数のプロセッサを含む。プロセッサ704は通信インフラストラクチャ702(例、通信バス、クロスオーバー・バー、またはネットワーク)に接続する。様々なソフトウェア実施例がこの例示的なコンピュータ・システムに関して考えられる。本明細書を読めば、関連技術の当業者には、他のコンピュータ・システムおよびコンピュータ・アーキテクチャもしくは他のコンピュータ・システムまたはコンピュータ・アーキテクチャを使って本発明を実施する方法が明らかになるであろう。
コンピュータ・システムは、ディスプレイ装置710に表示するために、通信インフラストラクチャ702(もしくは図示していないフレーム・バッファ)から画像、テキスト、および他のデータを送るディスプレイ・インターフェース708を含むことができる。コンピュータ・システムはメイン・メモリ706、好ましくはランダム・アクセス・メモリ(RAM)も含み、また二次メモリ712を含んでもよい。二次メモリ712は、例えば、ハードディスク・ドライブ714および取り外し可能ストレージ・ドライブ716もしくはハードディスク・ドライブ714または取り外し可能ストレージ・ドライブ716を含んでもよく、取り外し可能ドライブの代表的なものとしてフレキシブルディスク・ドライブ、磁気テープ・ドライブ、光ディスク・ドライブ等がある。取り外し可能ストレージ・ドライブ716は、当業者に周知の方法で、取り外し可能記憶装置718から読み取りかつ取り外し可能記憶装置718に書き込み、もしくは取り外し可能記憶装置718から読み取りまたは取り外し可能記憶装置718に書き込む。取り外し可能記憶装置718の代表的なものとしてフレキシブルディスク、コンパクト・ディスク、磁気テープ、光ディスク等があり、取り外し可能ストレージ・ドライブ716によって読み取り、書き込まれる。言うまでもなく、取り外し可能記憶装置718は、内部にコンピュータ・ソフトウェアおよびデータもしくはコンピュータ・ソフトウェアまたはデータを記憶したコンピュータ読み取り可能媒体を含む。
代替実施例では、二次メモリ712は、コンピュータ・プログラムまたは他の命令をコンピュータ・システムにロードさせる他の同様な手段を含んでもよい。前記手段には、例えば、取り外し可能記憶装置722およびインターフェース720があろう。前記例は、プログラム・カートリッジおよびカートリッジ・インターフェース(ビデオゲーム機にあるようなものなど)、取り外し可能メモリチップ(EPROMまたはPROMなど)および付属ソケット、ならびにその他取り外し可能記憶装置722およびソフトウェアとデータを取り外し可能記憶装置722からコンピュータ・システムに転送できるインターフェース720を含んでもよい。
さらに、コンピュータ・システムは通信インターフェース724を含んでもよい。通信インターフェース724は、ソフトウェアおよびデータをコンピュータ・システムと外部デバイスとの間で転送できる。通信インターフェース724の例には、モデム、ネットワーク・インターフェース(イーサーネット・カードなど)、通信ポート、PCMCIAスロットおよびカード等があろう。通信インターフェース724経由で転送されるソフトウェアおよびデータは、例えば、電子信号、電磁信号、光信号、または通信インターフェース724が受信できるその他の信号のような信号の形態である。これら信号は通信路(すなわち、チャネル)726経由で通信インターフェース724に供給される。このチャネル726は信号を伝送するが、ワイヤまたはケーブル、光ファイバー、電話回線、携帯電話リンク、RFリンク、およびその他の通信チャネル、もしくはワイヤまたはケーブル、光ファイバー、電話回線、携帯電話リンク、RFリンク、またはその他通信チャネルを使って実施できよう。
本明細書で、「コンピュータ・プログラム媒体」、「コンピュータ使用可能媒体」、および「コンピュータ読み取り可能媒体」という表現は、一般的にメイン・メモリ706および二次メモリ712、取り外し可能ストレージ・ドライブ716、ハードディスク・ドライブ714にインストールされたハードディスク、および信号などの媒体を言うために使う。これらコンピュータ・プログラムは、ソフトウェアをコンピュータ・システムに提供する手段である。コンピュータ読み取り可能媒体は、コンピュータ・システムにデータ、命令、メッセージまたはメッセージ・パケット、並びにその他コンピュータ読み取り可能な情報をコンピュータ読み取り可能媒体から読み取らせることができる。コンピュータ読み取り可能媒体には、例えば、フレキシブルディスク、ROM、フラッシュメモリ、ディスク・ドライブ・メモリ、CD−ROM、およびその他永久記憶装置などの不揮発性メモリがあろう。例えば、データおよびコンピュータ命令などの情報を、コンピュータ・システム間で転送するのに便利である。さらに、コンピュータ読み取り可能媒体は、コンピュータにコンピュータ読み取り可能な情報を読み取らせることのできる、有線ネットワークまたは無線ネットワークなど、ネットワーク・リンクおよびネットワーク・インターフェースもしくはネットワーク・リンクまたはネットワーク・インターフェースなどの一時的な状態の媒体のコンピュータ読み取り可能情報を含んでもよい。
コンピュータ・プログラム(コンピュータ制御ロジックともいう)は、メイン・メモリ706および二次メモリ712もしくはメイン・メモリ706または二次メモリ712に格納される。コンピュータ・プログラムは通信インターフェース724経由で受信してもよい。前記コンピュータ・プログラムは、実行時、コンピュータ・システムに本明細書で説明した本発明の特徴を実施させることができる。具体的には、コンピュータ・プログラムは、実行時、プロセッサ704にコンピュータ・システムの特徴を実施させることができる。従って、前記コンピュータ・プログラムはコンピュータ・システムのコントローラに相当する。
本発明の特定の実施例を開示してきたが、当業者は本発明の精神および範囲を逸脱することなくこの特定の実施例に変更を行えることは理解するであろう。従って、本発明の範囲はこの特定の実施例に制限するつもりはない。
さらに、添付の請求項は本発明の範囲内にあるあらゆる前記応用、変更、および実施例を含むことが意図される。
代表的なコンピュータ・オペレーティング・システムの主要なサブシステムを示す図。 現在のページ置換アルゴリズムを実装するのに使用するデータ構造を示す図。 現在のページ置換アルゴリズムのフローチャートを示す図。 ページ置換デーモンの動的な自動調整を実装するために、好適な実施例で使用するデータ構造を示す図。 本発明による新規のページ置換アルゴリズムのフローチャートを示す図。 LRUデーモンを使ってどのようにmin_freeおよびmax_freeを時間について変更するかを示す図。 本発明の一又は複数のコンポーネント/方法論を実装できるコンピューティング・システムの例示的なハードウェアの実装図。
符号の説明
10 オペレーティング・システム
20 仮想メモリ・マネージャ
21 フリー・リスト
22 フリー・フレーム
23 使用中のリスト
24 使用中のフレーム
25 ページ置換デーモン
30 プロセス・マネージャ
32 待機リスト
33 待機中のスレッド
40 ファイルシステム
50 ネットワーク・サブシステム
51 ハードディスク・ドライブ
702 通信インフラストラクチャ(バス)
704 プロセッサ
706 メイン・メモリ
708 ディスプレイ・インターフェース
710 ディスプレイ装置
712 二次メモリ
714 ハードディスク・ドライブ
716 取り外し可能ストレージ・ドライブ
718 取り外し可能記憶装置
720 インターフェース
724 通信インターフェース
726 通信路

Claims (14)

  1. コンピュータ・システムのメモリの可用性を管理する方法で、前記方法が、
    空きメモリ空間の下限閾値をメモリ負荷の関数として自動的に変更するステップと、
    空きメモリ空間が前記下限閾値未満になったときに、利用できるメモリ空間を増やすステップとを有する、方法。
  2. コンピュータ・システムのメモリの可用性を管理する方法で、前記方法が、
    スレッド待機率が目標スレッド待機率と差が出てきたときに、空きメモリ空間の下限閾値を自動的に変更するステップで、前記スレッド待機率が単位時間あたりの空きメモリの待機リストに待機しているスレッドの平均数である、前記ステップと、
    空きメモリ空間が前記下限閾値未満になったときに、利用できるメモリ空間を増やすステップとを有する、方法。
  3. 前記スレッド待機率が前記目標スレッド待機率よりも高くなったときに、前記下限閾値を上げる、請求項2に記載の方法。
  4. 前記スレッド待機率が前記目標スレッド待機率よりも低くなったときに、前記下限閾値を下げる、請求項2に記載の方法。
  5. 前記スレッド待機率が前記目標スレッド待機率よりも高くなったときに、上限閾値を上げ、前記上限閾値を使って、ページ置換デーモンを実行するとき、利用できるようにするメモリ空間の量を判断する、請求項2に記載の方法。
  6. 前記スレッド待機率が前記目標スレッド待機率よりも低くなったときに、上限閾値を下げ、前記上限閾値を使って、ページ置換デーモンを実行するとき、利用できるようにするメモリ空間の量を判断する、請求項2に記載の方法。
  7. 前記スレッド待機率を、空きメモリの待機リストで待機している全スレッドが費やすクロック・ティックの累積数をカウントして、前記累積数を前記ページ置換デーモンの連続2回の実行の間のクロック・ティックの総数で割って計算できる、請求項5に記載の方法。
  8. 前記スレッドが現在前記空きメモリの待機リストにある第1スレッドと、前記ページ置換デーモンの前記連続2回の実行の最初の実行の後に前記空きメモリの待機リストにあったが、もはや前記空きメモリの待機リストにない第2スレッドとを有する、請求項7に記載の方法。
  9. 前記スレッド待機率を、空きメモリの待機リストに現在あるスレッドの数をある数で割って計算できる、請求項2に記載の方法。
  10. 前記数が整数の2である、請求項9に記載の方法。
  11. 空きメモリ空間が前記下限閾値未満になったときにページ置換デーモンを実行し、前記ページ置換デーモンが利用できるメモリ空間を増やす、請求項2に記載の方法。
  12. 空きメモリ・フレームの数が下限閾値未満になったときに前記ページ置換デーモンを実行し、前記ページ置換デーモンが、フリー・フレームの数が上限閾値に達するようにフレームの数を解放するステップを有する、請求項11に記載の方法。
  13. コンピュータ・システムのメモリの可用性を管理するためのプログラムであって、該プログラムが、
    空きメモリ空間の下限閾値をメモリ負荷の関数として自動的に変更するステップと、
    空きメモリ空間が前記下限閾値未満になったときに、利用できるメモリ空間を増やすステップとをコンピュータに実行させるプログラム。
  14. コンピュータ・システムのメモリの可用性を管理する装置で、前記装置が、
    空きメモリ空間の下限閾値をメモリ負荷の関数として自動的に変更する手段と、
    空きメモリ空間が下限閾値未満になったときに、利用できるメモリ空間を増やす手段とを有する、装置。
JP2007519201A 2004-06-30 2005-05-04 コンピュータ・オペレーティング・システムの仮想メモリのサブシステムを自動調整する方法、プログラム記憶デバイス、および装置 Pending JP2008505389A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/881,508 US20060004977A1 (en) 2004-06-30 2004-06-30 Autonomically tuning the virtual memory subsystem of a computer operating system
PCT/US2005/015493 WO2006007043A2 (en) 2004-06-30 2005-05-04 Autonomically tuning the virtual memory subsystem of a computer operating system

Publications (2)

Publication Number Publication Date
JP2008505389A true JP2008505389A (ja) 2008-02-21
JP2008505389A5 JP2008505389A5 (ja) 2008-05-22

Family

ID=35515385

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007519201A Pending JP2008505389A (ja) 2004-06-30 2005-05-04 コンピュータ・オペレーティング・システムの仮想メモリのサブシステムを自動調整する方法、プログラム記憶デバイス、および装置

Country Status (7)

Country Link
US (1) US20060004977A1 (ja)
EP (1) EP1782205A2 (ja)
JP (1) JP2008505389A (ja)
KR (1) KR20070024552A (ja)
CN (1) CN101124551A (ja)
TW (1) TW200602869A (ja)
WO (1) WO2006007043A2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8055876B2 (en) * 2008-06-06 2011-11-08 International Business Machines Corporation Selectively mark free frames as unused for cooperative memory over-commitment
US8799892B2 (en) * 2008-06-09 2014-08-05 International Business Machines Corporation Selective memory donation in virtual real memory environment
US8312201B2 (en) * 2008-06-09 2012-11-13 International Business Machines Corporation Managing memory allocations loans
US8230155B2 (en) * 2008-06-26 2012-07-24 Microsoft Corporation Direct memory access filter for virtualized operating systems
FR2939223A3 (fr) * 2008-12-02 2010-06-04 Toluna Procede pour optimiser le fonctionnement d'un systeme pour realiser au moins un sondage en ligne, systeme mettant en oeuvre le procede
CN101430670B (zh) * 2008-12-16 2010-06-23 中国科学院计算技术研究所 一种在虚拟化环境中i/o设备重构的方法及系统
KR101618634B1 (ko) 2009-01-07 2016-05-09 삼성전자주식회사 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법
KR101612922B1 (ko) * 2009-06-09 2016-04-15 삼성전자주식회사 메모리 시스템 및 메모리 시스템 관리 방법
CN101833512A (zh) * 2010-04-22 2010-09-15 中兴通讯股份有限公司 一种内存回收方法及其装置
US8713565B2 (en) 2010-04-28 2014-04-29 International Business Machines Corporation Automated tuning in a virtual machine computing environment
WO2012126180A1 (en) 2011-03-24 2012-09-27 Microsoft Corporation Multi-layer search-engine index
US8683169B2 (en) 2011-05-05 2014-03-25 International Business Machines Corporation Selecting an auxiliary storage medium for writing data of real storage pages
US8656133B2 (en) 2011-05-05 2014-02-18 International Business Machines Corporation Managing storage extents and the obtaining of storage blocks within the extents
US8793444B2 (en) * 2011-05-05 2014-07-29 International Business Machines Corporation Managing large page memory pools
US8799611B2 (en) * 2011-05-05 2014-08-05 International Business Machines Corporation Managing allocation of memory pages
US8868876B2 (en) 2011-12-28 2014-10-21 International Business Machines Corporation Dedicated large page memory pools
US9367439B2 (en) * 2012-04-30 2016-06-14 Oracle International Corporation Physical memory usage prediction
US9696933B2 (en) * 2014-08-15 2017-07-04 International Business Machines Corporation Virtual machine manager initiated page-in of kernel pages
US9996455B2 (en) * 2015-12-09 2018-06-12 International Business Machines Corporation Virtual storage address threshold for freemained frames
JP2017201481A (ja) * 2016-05-06 2017-11-09 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
JP7007557B2 (ja) * 2017-08-24 2022-01-24 富士通株式会社 情報処理装置、プロセス管理方法およびプロセス管理プログラム
JP2020031307A (ja) * 2018-08-21 2020-02-27 京セラドキュメントソリューションズ株式会社 電子機器及びメモリー管理プログラム
CN112099955A (zh) * 2020-09-27 2020-12-18 合肥移瑞通信技术有限公司 安卓系统运行内存的控制方法、装置及介质、计算机设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207696A (ja) * 1997-01-15 1998-08-07 Internatl Business Mach Corp <Ibm> オペレーティング・システムをカスタマイズするシステムおよび方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6427161B1 (en) * 1998-06-12 2002-07-30 International Business Machines Corporation Thread scheduling techniques for multithreaded servers
US7080379B2 (en) * 2002-06-20 2006-07-18 International Business Machines Corporation Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue
US7120753B2 (en) * 2004-04-20 2006-10-10 International Business Machines Corporation System and method for dynamically adjusting read ahead values based upon memory usage

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207696A (ja) * 1997-01-15 1998-08-07 Internatl Business Mach Corp <Ibm> オペレーティング・システムをカスタマイズするシステムおよび方法

Also Published As

Publication number Publication date
US20060004977A1 (en) 2006-01-05
EP1782205A2 (en) 2007-05-09
KR20070024552A (ko) 2007-03-02
CN101124551A (zh) 2008-02-13
WO2006007043A2 (en) 2006-01-19
TW200602869A (en) 2006-01-16
WO2006007043A3 (en) 2007-04-26

Similar Documents

Publication Publication Date Title
JP2008505389A (ja) コンピュータ・オペレーティング・システムの仮想メモリのサブシステムを自動調整する方法、プログラム記憶デバイス、および装置
US20240029488A1 (en) Power management based on frame slicing
US10528481B2 (en) Apparatus and method for managing storage of data blocks
US8019954B2 (en) Kernel and application cooperative memory management
US9619378B2 (en) Dynamically optimizing memory allocation across virtual machines
US8190795B2 (en) Memory buffer allocation device and computer readable medium having stored thereon memory buffer allocation program
US8959515B2 (en) Task scheduling policy for limited memory systems
US8539186B2 (en) Methods and mechanisms for proactive memory management
US9135059B2 (en) Opportunistic multitasking
US8683476B2 (en) Method and system for event-based management of hardware resources using a power state of the hardware resources
EP3796168A1 (en) Information processing apparatus, information processing method, and virtual machine connection management program
JP2013232207A (ja) コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置
US6944736B2 (en) Managing latencies in accessing memory of computer systems
CN108073457B (zh) 一种超融合基础架构的分层资源管理方法、装置及系统
KR20100074920A (ko) 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법
CN110795323A (zh) 负载统计方法、装置、存储介质及电子设备
WO2024148864A1 (zh) 虚拟机内存的调整方法和装置、非易失性可读存储介质及电子装置
WO2022050197A1 (ja) コンピュータシステムおよびコンピュータプログラム
US20130346975A1 (en) Memory management method, information processing device, and computer-readable recording medium having stored therein memory management program
CN108885587B (zh) 具有系统高速缓存和本地资源管理的功率降低存储器子系统
US7080212B1 (en) Closed loop adaptive prestage method, system, and product for prestaging cache blocks
Molano et al. Dynamic disk bandwidth management and metadata pre-fetching in a real-time file system
Liu et al. OKAM: A Linux Application Manager Based on Hierarchical Freezing Technology
JP2001282553A (ja) マルチスレッド制御方法、マルチスレッド制御装置、記録媒体、及びプログラム
CN116320031A (zh) 服务器响应方法、设备及介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080401

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080401

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110705

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111129