(57)【特許請求の範囲】
【請求項１】
ハードウェア主メモリ圧縮を伴うコンピュータ・システムにおいてメモリを管理する方法であって、
ｉ）前記システムから現行の物理メモリ使用率を得るステップと、
ｉｉ）前記現行の物理メモリ使用率から、最大実ページ数を決定するステップと、
ｉｉｉ）一般システム動作に使用できない、いくつかの保留ページを維持するステップと、
ｉｖ）前記最大実ページ数が達成されるように、一般システム動作に使用できない保留ページの目標数を決定するステップと、
ｖ）ステップｉｖ）で決定した前記保留ページの目標数に基づき、保留ページの調整数を決定するステップと、
ｖｉ）ステップｖ）で決定した前記調整数の保留ページを予約し、当該予約した保留ページの内容をゼロにするステップと、
ｖｉｉ）前記調整数の予約済み保留ページを解放するステップとを含む方法。
【請求項２】
目標物理メモリ使用率で維持される前記最大実ページ数が、現在使用されている実ページ数とステップｉ）で得た前記現行の物理メモリ使用率とから計算される、請求項１に記載の方法。
【請求項３】
前記保留ページの目標数が、前記最大実ページ数と現在使用されている実ページ数との差の関数である、請求項１に記載の方法。
【請求項４】
前記保留ページの調整数が、前記保留ページの目標数と維持すべき最小空きページ数との差の関数である、請求項１に記載の方法。
【請求項５】
前記保留ページの調整数を予約するステップが、オペレーティング・システムによって維持すべき最小空きページ数を増加させるステップを含む請求項１に記載の方法。
【請求項６】
オペレーティング・システムによって維持すべき最小空きページの前記数を増加させることによって解放されたページの内容が、ゼロにされる請求項５に記載の方法。
【請求項７】
前記調整数の保留ページを解放するステップが、オペレーティング・システムによって維持すべき最小空きページ数を減少させるステップを含む請求項１に記載の方法。
【請求項８】
前記調整数の保留ページを予約するステップが、ページをオペレーティング・システムから明示的に割り振り、前記ページの内容をゼロにするステップを含む請求項１に記載の方法。
【請求項９】
前記調整数の保留ページを解放するステップが、ページを事前に前記保留ページから明示的に解放するステップを含む請求項１に記載の方法。
【請求項１０】
高い物理メモリ使用率によって強制的に外に出されたページの内容を収容するためのスワップ・スペースが、少なくとも１つのスワップ・デバイス上に予約される請求項１に記載の方法。
【請求項１１】
前記予約済みのスワップ・スペースが、最大実メモリ・サイズと物理メモリ・サイズとの差の関数である請求項１０に記載の方法。
【請求項１２】
ハードウェア主メモリ圧縮を伴うコンピュータ・システムにおいてメモリを管理するためのシステムであって、
ｉ）前記システムから現行の物理メモリ使用率を得る手段と、
ｉｉ）前記現行の物理メモリ使用率から、最大実ページ数を決定する手段と、
ｉｉｉ）一般システム動作に使用できない、いくつかの保留ページを維持する手段と、
ｉｖ）前記最大実ページ数が達成されるように、一般システム動作に使用できない保留ページの目標数を決定する手段と、
ｖ）ステップｉｖ）で決定された前記保留ページの目標数に基づき、保留ページの調整数を決定する手段と、
ｖｉ）ステップｖ）で決定した前記調整数の保留ページを予約し、当該予約した保留ページの内容をゼロにする手段と、
ｖｉｉ）前記調整数の予約済み保留ページを解放する手段とを含むシステム。
【請求項１３】
目標物理メモリ使用率で維持される前記最大実ページ数が、現在使用されている実ページ数とステップｉ）で得た前記現行の物理メモリ使用率とから計算される、請求項１２に記載のメモリ管理システム。
【請求項１４】
前記保留ページの目標数が、前記最大実ページ数と現在使用されている実ページ数との差の関数である、請求項１２に記載のメモリ管理システム。
【請求項１５】
前記保留ページの調整数が、前記前記保留ページの目標数と維持すべき最小空きページ数との差の関数である、請求項１２に記載のメモリ管理システム。
【請求項１６】
マシンによって実行可能な命令のプログラムを実行して、ハードウェア主メモリ圧縮を伴うコンピュータ・システムにおいてメモリを管理するための方法ステップを実行する、前記プログラムを記憶した機械可読プログラム記憶装置であって、前記方法ステップが、
ｉ）前記システムから現行の物理メモリ使用率を得るステップと、
ｉｉ）前記現行の物理メモリ使用率を用いて、目標物理メモリ使用率における、最大実ページ数を決定するステップと、
ｉｉｉ）一般システム動作に使用できない、いくつかの保留ページを維持するステップと、
ｉｖ）前記最大実ページ数が達成されるように、一般システム動作に使用できない保留ページの目標数を決定するステップと、
ｖ）ステップｉｖ）で決定した前記保留ページの目標数に対する、保留ページの調整数を決定するステップと、
ｖｉ）ステップｖ）で決定した前記調整数の保留ページを予約し、当該予約した保留ページの内容をゼロにするステップと、、
ｖｉｉ）前記予約した調整数の保留ページを解放するステップとを含むプログラム記憶装置。
【請求項１７】
目標物理メモリ使用率で維持される前記最大実ページ数が、現在使用されている実ページ数とステップｉ）で得た前記現行の物理メモリ使用率とから計算される、請求項１６に記載のプログラム記憶装置。
【請求項１８】
前記保留ページの目標数が、前記最大実ページ数と現在使用されている実ページ数との差の関数である、請求項１６に記載のプログラム記憶装置。
【請求項１９】
前記保留ページの調整数が、前記前記保留ページの目標数と維持すべき最小空きページ数との差の関数である、請求項１６に記載のプログラム記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、主メモリ内容のハードウェア圧縮を伴う計算機システムに関するものであり、より詳細には、ハードウェア主メモリ圧縮により動的に変化するメモリ・サイズの管理に関する。
【０００２】
【従来の技術】
データ圧縮技法は、記憶スペースまたは帯域幅を節約するために、コンピュータ・システムで広く使用されている。ハードウェア・ベースとソフトウェア・ベースの両方の圧縮方式が、磁気媒体上にデータを記憶するため、またはネットワーク・リンクを介してデータを伝送するために使用されている。多数のアプリケーションのメモリ・フットプリントは、主メモリ内容が、ほとんどの場合、２対１またはそれより大きい比率で圧縮できることを示している。既に圧縮または暗号化されているわずかなアプリケーションのデータのみが、さらに圧縮することが不可能である。２対１の圧縮は、実質的に、同一コストでメモリの量を２倍にし、またコストが重要なアプリケーションでは、同一量のメモリを１／２のコストで与える。
【０００３】
主メモリ圧縮は、データ・アクセスのトランスペアレントな、リアルタイムの、オンザフライ圧縮を使用して、物理メモリ必要量を低減し、または物理メモリ使用率（utilization）を増大させる。データ・ブロックまたはデータ・ページの圧縮がもたらす可変長レコード問題のため、データの圧縮済みページのランダム・アクセスは、最近まで実用的でないと考えられていた。ただし、米国特許第５７２９２２８号に記載される、並列圧縮−圧縮解除アルゴリズムにおける進歩が、シリコンの密度および速度の改善と相まって、今や、主メモリの圧縮が実用的なものになった。
【０００４】
図１に、本発明による主メモリ圧縮をサポートするコンピュータ・システムを示す。これは、１つまたは複数のＣＰＵで構成され、そのそれぞれが関連するキャッシュ１００を備え、バス１０１を介してメモリ・コントローラ１１２と通信を行っている。圧縮済みメモリ・アーキテクチャにより、従来のメモリ階層に追加レベルが１つ加わる。「実」アドレスと「物理」アドレスの区別が行われている。実アドレス１０４は、プロセッサ・チップの外部バス上に見られる従来のメモリ・アドレスである。物理アドレス１０５は、圧縮済み物理メモリをアドレス指定するために使用される。メモリ・コントローラは、通常、ＣＰＵにはメモリと同様に見えるＬ３キャッシュ１０６を実施／制御する。さらに、入出力装置１０３のアドレス指定が、このメモリ・コントローラによって制御される。本資料では、下記の用語を互いに交換可能なものとして使用する。圧縮により有効メモリ・サイズが増加するので、「拡張メモリ」は「実メモリ」を表し、また「圧縮メモリ」はこの拡張メモリを裏付ける「物理メモリ」を表す。
【０００５】
こうしたシステムでは、オペレーティング・システムは、実メモリ・スペースを管理し、物理メモリ自体は気にしない。メモリ・コントローラ・チップ内の圧縮エンジン１０７は、キャッシュ・ライン・ストア上のキャッシュ・ラインを圧縮し、ロード時に圧縮解除する。物理メモリ１０２内に記憶された圧縮の様々な可変長データ・レコードは、圧縮状態１０８の一部として保持されている実アドレス対物理アドレス変換を介してアクセスされる。システム、具体的には、メモリ・コントローラが、オペレーティング・システムが物理メモリ使用率を監視する１１０ことを可能にする１組の使用率レジスタ１０９をエクスポートすると期待される。任意選択で、メモリ・コントローラは、設定可能な１組のしきい値レジスタ１０９を有することができ、物理メモリ使用率がこのしきい値を超過した場合に、メモリ・コントローラが割込みを発行することになる。
【０００６】
任意の所与の時刻ｔでの、オペレーティング・システムの制御下でのデータの圧縮可能性ＣＲ（ｔ）が、システムが、その時刻に、固定量の物理メモリＰＭを使い果たすことなくどれだけの実メモリＲＭ（ｔ）を維持できるかを決定する。標準のオペレーティング・システムは、その実メモリを１組のページ・フレーム記述子によって記述する。これは、通常、定数である。主メモリ圧縮サポートのない汎用システムでは、実メモリは物理メモリに等しい。しかし、主メモリ圧縮サポートを有するシステムでは、メモリ管理は、次式で規定される。
ＲＭ（ｔ）＝ＣＲ（ｔ）*ＰＭ（Ｅｑ．１）
【０００７】
有効実メモリサイズ、すなわち、アプリケーションおよびＯＳ固有のタスク（例えば、ファイルシステム・キャッシュ）のためにＯＳが渡すページ数は、様々なアプリケーション状態に応じて常に変化する可能性がある現行の圧縮比ＣＲ（ｔ）に依存する。
【０００８】
標準のオペレーティング・システムは、この場合は圧縮比ＣＲ（ｔ）である、絶えず変化する実行時状態に基づいて、その実メモリ・サイズを動的に調整する手段を有さない。ページ・フレーム記述子は、メモリ内で永続的にアクセス可能でなければならないので、ほとんどのＯＳは、ブート時に一定数のページ・フレーム記述子を割り振り、それを使用してメモリを管理する。したがって、システムが固定比で構成されている場合には、圧縮比が、決してこの固定比を下回らないように保証しなければならない。さもなければ、物理メモリが使い尽くされ、システムに障害が起きる。
【０００９】
主メモリ圧縮システムの利点を十分に生かすためには、物理メモリが決して使い果たされることがないように、オペレーティング・システムがその動作のために考慮する拡張された実メモリ・サイズを所与の時刻での物理メモリ使用率の関数として動的に調整する、オペレーティング・システム内での有効な仮想メモリ管理の方法が必要とされる。言い換えれば、物理メモリ使用率は、決して１００％を超過すべきではない。
【００１０】
従来技術では、ページアウト動作を行うのではなく、ソフトウェア圧縮技法を使用して、空き物理メモリの可用性を増加させる特許および刊行物がいくつか存在する。それらは、本発明にいくらかの関係を有するものであるが、どのシステムも、主メモリ圧縮を扱わず、したがって、主メモリ圧縮を伴うシステムに関わる動的な実メモリ・サイジングおよび物理メモリ消耗の問題がある。
【００１１】
米国特許第５５５９９７８号は、ＲＡＭメモリ内容の選択的圧縮によって、仮想メモリ・システムの効率を高めるための方法を記載している。具体的には、この特許は、メモリのクリティカルではない領域（例えば、アクセスされる頻度の最も少ないメモリ・ページ）を識別し、それらを結合し、良く知られたソフトウェア圧縮技法によって圧縮する。結合された部分は、それが占める物理メモリ・リソースが減り、したがって、利用可能なメモリ・リソースのプールが増大する。圧縮済みのページは、アプリケーションの仮想メモリ変換表からマップ解除され、仮想アドレスのアクセス時に、仮想メモリ・システムが、圧縮済みのページを新しいページに圧縮解除し、圧縮解除済みのページをアクセス仮想アドレスに再マップしなければならない。クリティカルではないページを圧縮し、それによって物理メモリの可用性を増大させることにより、ページアウト動作が回避される。
【００１２】
米国特許第５５４４３４９号は、メモリを２つの区域、活動リスト部分と空きリスト部分に分割することによって、ページング活動を低減する方法を記載している。ページがプロセスから取り除かれたとき、そのプロセスのページ表中のそのページのマッピングが除去され、そのページが別のコンテナ内に圧縮され、次いで空きリスト上に配置される。プロセスがそのデータに後でアクセスする時、ページ不在ハンドラが空きリストを探し、そのページが圧縮されていることを見つけた場合、それを新しいフレームに圧縮解除し、そのページを再マップすることになる。突き詰めれば、この特許は、米国特許第５５５９９７８号のより限定されたケースであり、クリティカルではない領域が空きリスト上のページとなるように定義される。
【００１３】
Wilson等は「The Case for Compressed Caching in Virtual Memory System」で、ページング活動を低減するために圧縮を使用するが、オペレーティング・システムに対する変更を必要としない、別のソフトウェア手法を記載している。これは、圧縮仮想ページング・ファイルシステムに基づくものである。これは、物理メモリの一部分を、圧縮ページング・ファイルシステムのために保留することを必要とする。オペレーティング・システムの仮想管理システム（ＶＭＭ）が、どのページをページアウトするかを決定し、それらをページング・モジュールに渡す。ただし、ページをディスクに送るのではなく、ページをページング・ファイルシステム内で圧縮し、ページング・モジュールがその専用メモリを使い果たした場合のみ、圧縮済みのページのページアウトを始め、それによって、ページアウト／ページイン動作の回数を低減できる可能性がある。
【００１４】
従来技術は、圧縮比の低下が、物理メモリの消耗を、したがって破局的システム・クラッシュを招き得る状態にオペレーティング・システムが達する可能性がある、動的に変化する圧縮比に対する解決法を提供しないことに留意されたい。
【００１５】
【発明が解決しようとする課題】
本発明の一目的は、ハードウェア主メモリ圧縮が存在する場合に、オペレーティング・システム内でメモリを管理するための改良された方法を提供することである。
【００１６】
本発明の別の目的は、物理メモリ使用率を監視し、物理メモリが消耗に近い場合、メモリが強制的にページアウトされるようにし、それによって、実メモリ・ページを解放することである。
【００１７】
【課題を解決するための手段】
本発明は、ハードウェア主メモリ圧縮が存在する場合に、オペレーティング・システム内でメモリを管理する方法に関する。主メモリ内容を圧縮すると、オペレーティング・システムは、物理的に利用可能なメモリよりも大きな拡張実メモリを与えられる。圧縮比はメモリ内容に応じて変化するので、オペレーティング・システムおよびそのアプリケーションに実際に提供される拡張実メモリの量も同様に変化する。本発明は、物理メモリが決して使い果たされないよう、拡張実メモリのこの動的性質を経時的に圧縮比の関数として有効に管理する方法に関する。
【００１８】
本発明の方法は、物理メモリ使用率を監視して、物理メモリが消耗に近い場合、メモリが強制的にページアウトされるようにし、それによって、実メモリ・ページを解放する。これらのページは、この時点でゼロにされ、これにより高度に圧縮可能となり、したがって物理メモリ使用率が低減される。物理メモリ使用率が高いために強制的に出されたページは、割振りのために利用可能にはされない。オペレーティング・システムの変更が許されるシステムにおいて、本発明は、空きページ・プールの最小サイズおよび解放時のゼロ・ページを動的に制御する。物理メモリ使用率が、クリティカルなしきい値を下回ったとき、機構が、空きプールの最小サイズを縮小して、さらなる割振りを可能にする。オペレーティング・システムの変更が可能ではないシステムにおいては、ページは、モジュール（例えば、デバイス・ドライバ）によって割り振られ、次いでゼロにされる。物理メモリ使用率がクリティカルなしきい値を下回ったとき、この方法は、明示的に保留したページの一部を解放する。保留するページの量は、どちらの場合でも（暗示的または明示的に）、使用中のアクティブなページ数および現行の物理メモリ使用率の関数である。
【００１９】
【発明の実施の形態】
メモリ圧縮を導入すると、物理メモリ使用率が１００％を決して超過しないことを保証するという課題が生じる。１００％を超えると、データを物理メモリに書き戻すことができなくなり、そうしようとすると、典型的にはシステム・クラッシュを招くことになるからである。任意の時刻ｔにＯＳが提供することができる有効実メモリＲＭ（ｔ）の量は、下記のとおり、データの圧縮比ＣＲ（ｔ）によって決定される：ＲＭ（ｔ）＝ＣＲ（ｔ）*ＰＭ。ページをアプリケーションに渡すことにより、オペレーティング・システムは、圧縮比が低下したとき、物理メモリ使用率を拡大し過ぎる可能性があり、したがって、メモリ・コントローラが、ＯＳに対して、そのメモリ使用率がクリティカルなレベルに達したことを示したとき、物理メモリ使用率を低減する処置を行う準備ができていなければならない。残念ながら、どのような前提を立てることも、データの圧縮率または物理メモリ使用率を直接に制御することも不可能である。
【００２０】
方程式Ｅｑ−１は、物理メモリ使用率を低減させるのに、（１）圧縮率を増加する、および（２）有効な実メモリ・サイズを縮減するという、２つの基本的手段が存在することを示す。本発明は、この両方の技法を利用するものである。ゼロ・ページの数を増加させることによって、有効圧縮比を増大させる。空きページの使用に起因するさらなるメモリ逼迫を回避するため、アプリケーションに渡すことのできる空きページ数を制限することによって、使用されるメモリを低減する。ページを明示的にまたは暗示的に保留することにより、これを達成する。十分なページを保留することができない場合、本発明は、追加のページを強制的にスワップアウトさせ、それを次いでゼロにする。ゼロ・ページは、高度に圧縮可能であり、したがって、これらの２つの処置で、圧縮比が増大し、したがって、物理メモリ使用率が低減する。
【００２１】
好ましい実施形態をさらに詳細に記載する前に、使用される変数のリストを下記に示す。
【表１】
0003643318.tif 000002
【００２２】
定義により、ｍａｘ＿ｐｇ＝ｎｒ＿ｆｐ＋ｎｒ＿ｕｐである。この好ましい実施形態は、図２に示した仮想メモリおよび空きページの管理について以下の記述に基づいている。当分野の技術者には、メモリを管理する他の同様な手段が存在し、本発明内で記載する方法が同様に適用可能なことが理解されよう。空きページは、バディ・アルゴリズムなどの既成のアルゴリズムまたはリストによって、ｆｒｅｅ＿ｐｏｏｌ２０１内に維持される。ｆｒｅｅ＿ｐｏｏｌに対する抽象インターフェース２００は、いくつもの連続する物理ページを割り振るためのａｌｌｏｃ＿ｐａｇｅｓ（）２０２および１組の物理ページを解放するためのｆｒｅｅ＿ｐａｇｅｓ（）２０３として定義される。ｎｒ＿ｆｐ２０４は、空きプール内の未割振りの空きページを示す。これらのインターフェースは、例えば、ページ不在を解決するために、ページ不在ハンドラによって使用される。このページ・フレーム管理に加えて、オペレーティング・システムは、通常、より小さいチャンクの割振りのためにカーネルｍａｌｌｏｃ（）インターフェースを、またそれ自体の内部データ構造用にオブジェクトＳＬＡＢアロケータを提供する。
【００２３】
順方向進行を保証するため、ＯＳは、常時、最小数の空きページ（ｍｉｎ＿ｆｐ）２０５を維持しており、それが、このクリティカルなしきい値２０６を下回った場合、ＯＳは、空きページ（ｎｒ＿ｆｐ）２０４の数を増加させ始めなければならない。これは、通常、関数ｔｒｙ＿ｆｒｅｅ＿ｐａｇｅｓ（）２０７によって行われ、この関数は、バッファ・キャッシュをフラッシュし、ページ・キャッシュ（読取り専用メモリにマップされたファイル）からページを廃棄し、しばらくの間、アクセスされていないユーザ・ページをページアウトすることによって、ページを解放し、それによって、これらのページをｆｒｅｅ＿ｐａｇｅｓ（）を介して空きプールに補充しようと試みる。例えば、読取り専用のマップされたファイル・バッファを廃棄し、後で要求時に再ロードすることができる。同じタスクが、ゆっくりと、カーネル・スワップ・デーモンｋｓｗａｐ２０８によって呼び出される。
【００２４】
本発明は、物理メモリ使用率が決して１００％を超過しないように制御するのに、図３で示した従来の制御ループ（監視、計算、調整）を利用する。そうするために、１００％より低く、かつ未解決の入出力動作やキャッシュ・ライトバック動作などの動作からもたらされ得る副作用を考慮に入れた目標物理メモリ使用率が定義される。この制御は、ＯＳモジュール（デバイス・ドライバ／カーネル拡張／カーネル処理）として実施され、以下では、ｃｏｍｐｒｅｓｓｄと名付ける。ｃｏｍｐｒｅｓｓｄの制御ループは、所定の活動化しきい値を超えたときに、活動化３０９されなければならない。これは、割込み機構１１０を介して達成される。この制御ループに入ると、ｃｏｍｐｒｅｓｓｄは、タイマ機構を介して、または別のクリティカルなポイント（例えば、スケジューラ）で、コントロールがそのミッションを達成するまで、すなわち、物理メモリ使用率をクリティカルなレベルより下まで低下させるまで、ループしなければならない。割込み機構が利用できない場合には、ｃｏｍｐｒｅｓｓｄは、何らかのタイマに基づいて常にループしなければならず、このタイマは、監視される物理メモリ使用率に依存したものであってもよい。ｃｏｍｐｒｅｓｓｄ２５０は、後でさらに詳細に説明する下記のタスクを実行する。
【００２５】
制御ループに入ると、ｃｏｍｐｒｅｓｓｄは、メモリ・コントローラ１１２のメモリ使用率レジスタから現行のメモリ使用率ｍｕを得る２８１。ｍｕが活動化レベルより高い場合２８２、ｃｏｍｐｒｅｓｓｄは、Ｅｑ−１（ＲＭ（ｔ）＝ＣＲ（ｔ）*ＰＭ）を考慮に入れ、後でより詳細に説明する目的関数を使用して、実メモリ・サイズの制御に積極的に関与することになる。この目的関数は、維持できる最適実ページ数ｏｐｔ＿ｆｐを現行の物理メモリ使用率ｍｕおよび現行の実ページ・フレーム数ｎｒ＿ｕｐの関数として計算する２８３。最適数ｏｐｔ＿ｆｐから、どれだけのページを予約しなければならないかを決定する２８４、すなわち、空きページ・プールから取り除き、したがって、オペレーティング・システムによりアプリケーションに割振りできないようにし、それによって有効実メモリ・サイズｎｒ＿ｍａｘ＿ｐｇを低減する２８４ことができる。
【００２６】
決定されたページは、次いで、ｃｏｍｐｒｅｓｓｄにより暗示的または明示的に保留され、ゼロにされる２８５。これについては、後でより詳細に説明するが、ページのスワップアウトが必要となることがある。ｍｕが、活動化レベルより低く２８６、かつページが以前に保留されており、まだ解放されていない場合２８７には、ｃｏｍｐｒｅｓｓｄは、最適実ページ数を決定し２８８、そこから、解放できるページ数を決定する２８９。次いで、そのページを解放する２９０。どちらの場合も、ｃｏｍｐｒｅｓｓｄは、いくらかの遅延の後２９１、２８１に戻る。この遅延は、物理メモリ使用率に依存している。これは、システムによって経験され得る、使用率の最悪ケースの変化を考慮に入れたものでなければならない。最も一般的なケースでは、単に、定時にループする。ただし、代替の実施形態では、重要なしきい値を通過した後、メモリ・コントローラによって発行される割込みによってそれを強制することもできる。最悪ケースの変化が、ＯＳ内のタイマをスケジュールするには速すぎる場合には、ＯＳは、余りクリティカルでないメモリ使用率のレベルに達するまで、急速な圧縮劣化の原因となるアプリケーションの実行を一時的に禁止しまたは遅くすることができる。
【００２７】
より詳細には、どれだけのページを保留すべきかの決定は、下記のとおり、また図４に図示するように達成される。所与の物理使用のために、どれだけ追加の物理メモリが消費できるかを指定する目的関数３０６が定義される。目的関数３０６は、目標使用率３０７の所で、現行の目標曲線３０４と交差する。目標最大物理メモリ使用率ｔｍｕ３０７は、通常、変化する圧縮比に起因する非直線性、およびタイマまたは割込みを介して圧縮制御機構を呼び出すことに起因する遅延を考慮して、１００％より下に設定する。
【００２８】
現行の使用率ｍｕ３１２が、目標使用率ｔｍｕ３０７より低いとき、その差ｔｍｕ−ｍｕは、割振り３０８に使用可能な物理量を与える。現行の使用率ｍｕ３１２が、目標使用率ｔｍｕ３０７より高いとき、その差ｔｍｕ−ｍｕは負であり、したがって、結果３０５は、プロセスから取り戻して、空きページ・プールに追加しなければならない物理量を表す。現行の物理メモリ使用率ｍｕ３１２および使用ページ・カウントｎｒ＿ｕｐが与えられており、ページ・カウントが増加する区分的線形圧縮を想定すると、目標物理メモリ使用率ｔｍｕで維持され得る最大実ページ数ｎｒ＿ｍａｘ＿ｐｇは、ｎｒ＿ｍａｘ＿ｐｇ＝（ｔｍｕ／ｍｕ）*ｎｒ＿ｕｐと近似される。
【００２９】
ページング活動なしにＯＳによってまだ割り振られ得る割振り可能なページ数は、ａｌｌｏｃａｔａｂｌｅ＝ｎｒ＿ｆｐ−ｍｉｎ＿ｆｐであると計算される。この場合、ＯＳおよび圧縮機構によって維持すべき最適空きページ数ｏｐｔ＿ｆｐは、ｏｐｔ＿ｆｐ＝ｎｒ＿ｍａｘ＿ｐｇ−ｎｒ＿ｕｐ＝（ｔｍｕ／ｍｕ−１）*ｎｒ＿ｕｐであると決定される。ｏｐｔ＿ｆｐが決定されると、本発明は、次に、ＯＳによってまだ渡すことのできる最大空きページ数として、ｏｐｔ＿ｆｐを実施する。システムに応じて、オペレーティング・システムの変更は、可能なこともそうでないこともあり、したがって、本発明の方法で実メモリ・サイズをｎｒ＿ｍａｘ＿ｐｇのページに低減するのに、異なる手法が必要となる。
【００３０】
オペレーティング・システムの変更が可能であるシステムには以下の実施形態が好ましい。空きプール内の空きページ数ｎｒ＿ｆｐを（ａｌｌｏｃａｔａｂｌｅ−ｏｐｔ＿ｆｐ）だけ動的に増やすことによって、ページを予約する／保留する。そうすることによって、ｎｒ＿ｆｐが、ｍｉｎ＿ｆｐを下回った場合、ページングを開始するために、ページング・デーモンｋｓｗａｐを起動する。これによって、ページが解放され、そのため、有効実メモリ・サイズが縮小する。ただし、実メモリ・サイズを縮小するだけで、物理使用率は低下しない。そうしてもシステム内のデータ内容は何も変更されず、したがって、圧縮比が変化しないからである。したがって、本発明は、圧縮モジュールによって解放された少なくともすべてのページをゼロにし、それにより、圧縮比ＣＲ（ｔ）を増加させて、物理メモリ使用率ＰＭを低減する。この条件で十分であるが、好ましい実施形態では、すべてのページを、その割振り時にゼロにするのではなく、その解放時に、常に、ゼロにする。というのは、そうするとアカウンティングが単純に保たれ（ゼロにされたページを追跡する必要がなくなる）、さらに、すべての未使用ページがゼロにされるので、物理メモリ使用率が最小限にされるからである。
【００３１】
図５は、ｎｒ＿ｆｐを動的に維持することを越える、圧縮コントロールｃｏｍｐｒｅｓｓｄと割振り機構の対話を示す。ページ割振り時に（ｎｒ＿ｆｐ＜ｍｉｎ＿ｆｐ）である場合２０６、ページ・アロケータが、ページを解放しようと試みる２０７が、システムは、ファイル・キャッシュを低減する、バッファ・キャッシュを書き込む、またはユーザ・ページをページングすることによって、ページを即時に解放しようとするのではなく、まずｃｏｍｐｒｅｓｓ＿ｒｅｌｅａｓｅ（）を呼び出して、ｃｏｍｐｒｅｓｓｄの状態を調べることにより、メモリ使用率がページを渡すことを許すかどうかチェックし２２０、可能ならばｍｉｎ＿ｆｐを増加させ、それによってページング動作を回避する。例えば、ｃｏｍｐｒｅｓｓｄは、タイムリー機構によって呼び出されるので、メモリ使用率は、その前回の呼出し以降に低下している可能性がある。呼出しは、ａｌｌｏｃ＿ｐａｇｅｓ時に同期的に行われるので、ページを解放するのに積極的である必要はない。というのは、この機構は、ｏｐｔ＿ｆｐに違反しない限り、実際にｔｒｙ＿ｆｒｅｅ＿ｐａｇｅｓ（）を呼び出す前に、常にまず、より多くの保留ページを解放しようと試みるからである。
【００３２】
オペレーティング・システムに対する変更が許されないシステム用の代替実施形態では、ＯＳ内部変数の増加を利用する「保留ページ」機構は、可能ではない。この場合、図６を参照すると、動的にロードされるｃｏｍｐｒｅｓｓｄ２５０は、デバイス・ドライバまたはカーネル拡張であり、これが、明示的にページを割り振り、それをｃｏｍｐｒｅｓｓｉｏｎ＿ｓｔａｎｄｂｙ＿ｐｏｏｌ２７０内に保留する。図６に示すように、ｃｏｍｐｒｅｓｓｄは、ｏｐｔ＿ｆｐ数を決定し、そこから、どれだけのページを保留しておかなければならないかを決定する。次に、それらのページを明示的に割り振り、そのページをゼロにし、それをｃｏｍｐｒｅｓｓｉｏｎ＿ｓｔａｎｄｂｙ＿ｐｏｏｌ２７０に入れる。ｎｒ＿ｆｐやｍｉｎ＿ｆｐなどのＯＳ変数が利用可能ではない場合には、ｃｏｍｐｒｅｓｓｄは、物理メモリ使用率が望ましいレベルまで確実に低下するようにｍｕを監視しながら、ａｌｌｏｃ＿ｐａｇｅｓ（）を繰り返し呼び出さなければならない。圧縮比が、別の望ましいレベルより下に低下したとき、ｃｏｍｐｒｅｓｓｄは、ｆｒｅｅ＿ｐａｇｅｓ（）を介して、ｆｒｅｅ＿ｐｏｏｌへのページの解放を開始することができる。
【００３３】
これらの機構は、物理メモリ使用率が事前決定した限度を超過しないように、ページングを強制する手段を記述する。さらに、ページング・スペースまたはスワップ・スペースの使用率を変更しなければならない。物理メモリ使用率が高いときに、ページ・フレームをページアウトする能力を利用しているので、スワップ・スペースが利用可能であることを保証しなければならない。原則として、従来は物理メモリおよびページング・スペースまたはスワップ・スペースで構成される仮想メモリを管理している。これを、図７に示す。メモリ圧縮を伴うシステムでは、ページング・スペースは、強制的に外に出さなければならないページ用のバックアップ・デバイスとして使用される。任意の時刻に、ＰＭ＜ＲＭ（ｔ）＜ＲＭであると想定することができ、圧縮比が１にまで低下した場合、ＲＭ−ＰＭのメモリをページアウトすることができなければならない。したがって、スワップ・スペースを通常スワップ・スペースＳ７００とサイズＲＭ−ＰＭのスワップ・スペースＳ＿７０１に分割して、メモリ逼迫のためにページを強制的にページングしなければならないとき、十分なスワップ・スペースが利用可能であることを保証する。さらに、カーネル内に釘付けしまたは閉じ込めておくことができるページ数を、ＰＭまでに制限しなければならない。
【００３４】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３５】
（１）ハードウェア主メモリ圧縮を伴うコンピュータ・システムにおいてメモリを管理する方法であって、
ｉ）前記システムから物理メモリ使用率を得るステップと、
ｉｉ）目標実メモリ・サイズを決定するステップと、
ｉｉｉ）一般システム動作に使用できない、いくつかの保留ページを維持するステップと、
ｉｖ）前記目標実メモリ・サイズが達成されるように、一般システム動作に使用できない保留ページの目標数を決定するステップと、
ｖ）保留ページの前記数に対する調整を決定するステップと、
ｖｉ）保留ページの前記数に対する前記調整を予約し、保留ページの前記調整数をゼロにするステップと、
ｖｉｉ）前記調整数の予約済み保留ページを解放するステップとを含む方法。
（２）前記目標実メモリ・サイズが、現行の実メモリ使用率の、何らかの所定の目標物理メモリ使用率での測定された前記物理メモリ使用率との補間に基づく上記（１）に記載の方法。
（３）保留ページの前記目標数が、現行の実メモリ使用率と前記目標実メモリ・サイズとの差の関数である上記（１）に記載の方法。
（４）保留ページの数に対する調整が、現行の実メモリ使用率と前記目標実メモリ・サイズとの差の関数である上記（１）に記載の方法。
（５）前記調整数の保留ページを予約するステップが、オペレーティング・システムによって維持される最低空きページ数を増加させるステップを含む上記（１）に記載の方法。
（６）オペレーティング・システムによって維持される最低空きページの前記数を増加させることによって解放されたページが、ゼロにされる上記（５）に記載の方法。
（７）前記調整数の保留ページを解放するステップが、オペレーティング・システムによって維持される最低空きページ数を減少させるステップを含む上記（１）に記載の方法。
（８）前記調整数の保留ページを予約するステップが、ページをオペレーティング・システムから明示的に割り振り、前記ページをゼロにするステップを含む上記（１）に記載の方法。
（９）前記調整数の保留ページを解放するステップが、ページを前記事前保留ページから明示的に解放するステップを含む上記（１）に記載の方法。
（１０）高い物理メモリ使用率によって強制的に外に出されたページの内容を収容するためのスワップ・スペースが、少なくとも１つのスワップ・デバイス上に予約される上記（１）に記載の方法。
（１１）前記予約済みのスワップ・スペースが、最大実メモリ・サイズと物理メモリ・サイズとの差の関数である上記（１０）に記載の方法。
（１２）ハードウェア主メモリ圧縮を伴うコンピュータ・システムにおいてメモリを管理するためのシステムであって、
ｉ）前記システムから物理メモリ使用率を得る手段と、
ｉｉ）目標実メモリ・サイズを決定する手段と、
ｉｉｉ）一般システム動作に使用できない、いくつかの保留ページを維持する手段と、
ｉｖ）前記目標実メモリ・サイズが達成されるように、一般システム動作に使用できない保留ページの目標数を決定する手段と、
ｖ）保留ページの前記数に対する調整を決定する手段と、
ｖｉ）保留ページの前記数に対する前記調整を予約し、前記調整数の保留ページをゼロにする手段と、
ｖｉｉ）前記調整数の予約済み保留ページを解放する手段とを含むシステム。
（１３）前記目標実メモリ・サイズが、現行の実メモリ使用率の、何らかの所定の目標物理メモリ使用率での測定された前記物理メモリ使用率との補間に基づく上記（１２）に記載のメモリ管理システム。
（１４）保留ページの前記目標数が、現行の実メモリ使用率と前記目標実メモリ・サイズとの差の関数である上記（１２）に記載のメモリ管理システム。
（１５）保留ページの数に対する前記調整が、現行の実メモリ使用率と前記目標実メモリ・サイズとの差の関数である上記（１２）に記載のメモリ管理システム。
（１６）マシンによって実行可能な、ハードウェア主メモリ圧縮を伴うコンピュータ・システムにおいてメモリを管理するための方法ステップを実行するための命令のプログラムを有形に実施する機械可読プログラム記憶装置であって、前記方法ステップが、
ｉ）前記システムから物理メモリ使用率を得るステップと、
ｉｉ）目標実メモリ・サイズを決定するステップと、
ｉｉｉ）一般システム動作に使用できない、いくつかの保留ページを維持するステップと、
ｉｖ）前記目標実メモリ・サイズが達成されるように、一般システム動作に使用できない保留ページの目標数を決定するステップと、
ｖ）保留ページの前記数に対する調整を決定するステップと、
ｖｉ）保留ページの前記数に対する前記調整を予約し、前記調整数の保留ページをゼロにするステップと、
ｖｉｉ）前記調整数の予約済み保留ページを解放するステップとを含むプログラム記憶装置。
（１７）前記目標実メモリ・サイズが、現行の実メモリ使用率の、何らかの所定の目標物理メモリ使用率での測定された前記物理メモリ使用率との補間に基づく上記（１６）に記載のプログラム記憶装置。
（１８）保留ページの前記目標数が、現行の実メモリ使用率と前記目標実メモリ・サイズとの差の関数である上記（１６）に記載のプログラム記憶装置。
（１９）保留ページの数に対する前記調整が、現行の実メモリ使用率と前記目標実メモリ・サイズとの差の関数である上記（１６）に記載のプログラム記憶装置。
【図面の簡単な説明】
【図１】本発明による、主メモリ圧縮をサポートしているコンピュータ・システムのブロック図である。
【図２】従来技術のメモリ管理システムの諸コンポーネントおよびその相互作用を示すブロック図である。
【図３】ハードウェア主メモリ圧縮が存在する場合に空きページを管理する制御機構の流れ図である。
【図４】実メモリ管理を介して物理メモリ使用率を制御するための目的関数のグラフである。
【図５】オペレーティング・システムの変更が可能な、機能強化された仮想メモリ管理システム内の諸コンポーネントおよびその相互作用を示すブロック図である。
【図６】オペレーティング・システムの変更が可能ではない、機能強化された仮想メモリ管理システム内の諸コンポーネントおよびその相互作用を示すブロック図である。
【図７】圧縮メモリ・サポートが存在する場合のスワップ・スペースの予約に関する図である。
【符号の説明】
１００  キャッシュ
１０１  バス
１０２  物理メモリ
１０３  入出力装置
１０４  実アドレス
１０５  物理アドレス
１０６  キャッシュ
１０７  圧縮エンジン
１０９  使用レジスタ
１１０  割込み機構
１１２  メモリ・コントローラ
【図１】
0003643318.tif 000003
【図２】
0003643318.tif 000004
【図３】
0003643318.tif 000005
【図４】
0003643318.tif 000006
【図５】
0003643318.tif 000007
【図６】
0003643318.tif 000008
【図７】
0003643318.tif 000009