32 ビット Windows OS での仮想メモリの制限について - 日本HP · 2008-11-21 ·...

6
© 2004 Hewlett-Packard Development Company, L.P. 本書に記載された情報は、将来予告なく変更されることがあります。HP は、本書中の技 術的あるいは校正上の誤り、省略に対して責任を負いかねますのでご了承ください。2006 年出版 技術概要 HP ワークステーション 2008 8 15 テクニカル コンサルタント Peter Torvi ([email protected]) 32 ビット Windows OS での仮想メモリの制限について はじめに: ユーザー アプリケーションは、ユーザーの入力コマンド、数学アルゴリズムや配置アルゴリズム、データ管理、グラ フィックス表示などの目的で、メモリの割り当て、変更、および割り当て解除を行います。ユーザー アプリケーションがメモリ ケーションを参照する場合、仮想アドレスを使用します。Windows オペレーティング システムは、ユーザー アプリケーションに 対して、連続する範囲の仮想メモリ アドレスを提供します。32 ビットの Windows OS の場合、この仮想メモリ範囲は通常 02GB で、OS の起動オプションを使用した場合は 03GB です。これらと同じ仮想メモリ範囲がそれぞれのユーザー アプリ ケーション、さらに具体的にはそれぞれのプロセスに与えられます。本書では、Windows オペレーティング システムでの仮想 メモリの管理方法、仮想メモリと物理メモリの関係、および一般的な CAD アプリケーションにおける仮想メモリの構成方法を説 明します。また、仮想メモリの使用量と、システム全体またはプロセスあたりの仮想メモリの制限値を監視する基本ツールについ ても取り上げます。 仮想メモリ: 仮想メモリは、Windows で使用する技術で、物理メモリの制限値を超える場合にプロセスのアドレス空間を拡張しま 1 。オペレーティング システムとコンピュータ上の専用のハードウェア コンポーネントが、仮想アドレスを物理アドレスに変換す る処理を行っており、ほとんどの場合、この処理はアプリケーションからは見えません。仮想メモリの使用量を示す測定基準はい くつかあります。仮想メモリの全体像を把握するには、多くの場合において、いくつかの測定基準を組み合わせることが必要です。 これは、すべての Windows オペレーティング システムに言えることですが、ユーザーがメモリ不足やメモリ低下の問題に最も 直面するのは、32 ビットの Windows です。仮想メモリの使用量が、システム全体、さらにはアプリケーションの性能で重要な意 味を持つのは、以下の 2 つの理由からです。 1. 仮想メモリには上限があります。プロセスあたりの仮想メモリの制限値は、2GB または 3GB です。さらに、物理メモリと ページング ファイルの合計が、システムでの制限値となります。上記のどちらかの制限値に達した場合、メモリ不足が発生 します。 2. 物理メモリに対して仮想メモリの割合が大きい場合、OS がアプリケーション メモリを管理する際に、膨大な割り込み時間 が必要となり、物理メモリとディスク上の低速なページング ファイルの間でアプリケーション メモリの転送またはページング が発生します。このようなハード ページ フォールトが生じると、アプリケーションの一時停止が頻発します。 仮想メモリ構成: Windows のユーザー プロセスに対する仮想メモリ構成は、コミット、ワーキング セット、リザーブ3 種類に 分類できます。仮想メモリの各フラグメントをページといい、サイズは通常 4KB です。 コミット ページは、プロセスに割り当てられた、使用可能なすべての仮想メモリを表します。各コミット ページのコピー がシステムのページング ファイルで管理されます。アプリケーションがコミット ページにアクセスすると、オペレーティ ング システムはそのページをワーキング セットに指定します。 ワーキング セット ページは、最も頻繁かつ直近にアクセスされた仮想メモリです。ワーキング セット ページは、常に 物理メモリ内にあります。Windows はワーキング セット ページを、常に最適な数値に調整しています。 リザーブ ページは、割り当てられたメモリですが、プロセスが直接使用することはできず、将来の使用に備えて確保さ れています。リザーブ ページは、物理メモリやページング ファイルを占有しません。 1 Wikipedia.org 等、多数の出典より コミット ページは、仮想メモリと して割り当てられ、システム ページ ファイルに (常にコピー ) 保存された、すべての使用 可能なメモリを表します。 Windows は、システム メモリ内にある、プロセスのワーキング セット ページ の量を常に調整します。コミット ページは、システム ページ ファイルとシステ メモリとの間でやり取りされます。ハード ページ フォールトが頻繁に発生 すると、システムのレスポンスが低下します。 ワーキング セット ページは、 システム メモリ内にあります。 ワーキング セットはコミットの サブセットです。 プロセスのコミット ページの一 部がシステム メモリ内に含まれ ることがありますが、ワーキング セットとはみなされません。

Transcript of 32 ビット Windows OS での仮想メモリの制限について - 日本HP · 2008-11-21 ·...

Page 1: 32 ビット Windows OS での仮想メモリの制限について - 日本HP · 2008-11-21 · Windows オペレーティング システムは、ユーザー アプリケーションに

© 2004 Hewlett-Packard Development Company, L.P. 本書に記載された情報は、将来予告なく変更されることがあります。HP は、本書中の技術的あるいは校正上の誤り、省略に対して責任を負いかねますのでご了承ください。2006 年出版

技術概要

HP ワークステーション 2008 年 8 月 15 日 テクニカル コンサルタント Peter Torvi ([email protected])

32 ビット Windows OS での仮想メモリの制限について

はじめに: ユーザー アプリケーションは、ユーザーの入力コマンド、数学アルゴリズムや配置アルゴリズム、データ管理、グラフィックス表示などの目的で、メモリの割り当て、変更、および割り当て解除を行います。ユーザー アプリケーションがメモリ ロケーションを参照する場合、仮想アドレスを使用します。Windows オペレーティング システムは、ユーザー アプリケーションに対して、連続する範囲の仮想メモリ アドレスを提供します。32 ビットの Windows OS の場合、この仮想メモリ範囲は通常 0~2GB で、OS の起動オプションを使用した場合は 0~3GB です。これらと同じ仮想メモリ範囲がそれぞれのユーザー アプリケーション、さらに具体的にはそれぞれのプロセスに与えられます。本書では、Windows オペレーティング システムでの仮想メモリの管理方法、仮想メモリと物理メモリの関係、および一般的な CAD アプリケーションにおける仮想メモリの構成方法を説明します。また、仮想メモリの使用量と、システム全体またはプロセスあたりの仮想メモリの制限値を監視する基本ツールについ

ても取り上げます。

仮想メモリ: 仮想メモリは、Windows で使用する技術で、物理メモリの制限値を超える場合にプロセスのアドレス空間を拡張します1。オペレーティング システムとコンピュータ上の専用のハードウェア コンポーネントが、仮想アドレスを物理アドレスに変換する処理を行っており、ほとんどの場合、この処理はアプリケーションからは見えません。仮想メモリの使用量を示す測定基準はい

くつかあります。仮想メモリの全体像を把握するには、多くの場合において、いくつかの測定基準を組み合わせることが必要です。

これは、すべての Windows オペレーティング システムに言えることですが、ユーザーがメモリ不足やメモリ低下の問題に最も直面するのは、32 ビットの Windows です。仮想メモリの使用量が、システム全体、さらにはアプリケーションの性能で重要な意味を持つのは、以下の 2 つの理由からです。

1. 仮想メモリには上限があります。プロセスあたりの仮想メモリの制限値は、2GB または 3GB です。さらに、物理メモリとページング ファイルの合計が、システムでの制限値となります。上記のどちらかの制限値に達した場合、メモリ不足が発生します。

2. 物理メモリに対して仮想メモリの割合が大きい場合、OS がアプリケーション メモリを管理する際に、膨大な割り込み時間が必要となり、物理メモリとディスク上の低速なページング ファイルの間でアプリケーション メモリの転送またはページングが発生します。このようなハード ページ フォールトが生じると、アプリケーションの一時停止が頻発します。

仮想メモリ構成: Windows のユーザー プロセスに対する仮想メモリ構成は、コミット、ワーキング セット、リザーブの 3 種類に分類できます。仮想メモリの各フラグメントをページといい、サイズは通常 4KB です。

• コミット ページは、プロセスに割り当てられた、使用可能なすべての仮想メモリを表します。各コミット ページのコピーがシステムのページング ファイルで管理されます。アプリケーションがコミット ページにアクセスすると、オペレーティング システムはそのページをワーキング セットに指定します。

• ワーキング セット ページは、最も頻繁かつ直近にアクセスされた仮想メモリです。ワーキング セット ページは、常に物理メモリ内にあります。Windows はワーキング セット ページを、常に最適な数値に調整しています。

• リザーブ ページは、割り当てられたメモリですが、プロセスが直接使用することはできず、将来の使用に備えて確保されています。リザーブ ページは、物理メモリやページング ファイルを占有しません。

1 Wikipedia.org 等、多数の出典より

コミット ページは、仮想メモリとして割り当てられ、システム ページ ファイルに (常にコピーが) 保存された、すべての使用可能なメモリを表します。

Windows は、システム メモリ内にある、プロセスのワーキング セット ページの量を常に調整します。コミット ページは、システム ページ ファイルとシステム メモリとの間でやり取りされます。ハード ページ フォールトが頻繁に発生すると、システムのレスポンスが低下します。

ワーキング セット ページは、 システム メモリ内にあります。

ワーキング セットはコミットの サブセットです。

プロセスのコミット ページの一部がシステム メモリ内に含まれることがありますが、ワーキング セットとはみなされません。

Page 2: 32 ビット Windows OS での仮想メモリの制限について - 日本HP · 2008-11-21 · Windows オペレーティング システムは、ユーザー アプリケーションに

© 2004 Hewlett-Packard Development Company, L.P. 本書に記載された情報は、将来予告なく変更されることがあります。HP は、本書中の技術的あるいは校正上の誤り、省略に対して責任を負いかねますのでご了承ください。2006 年出版

使用可能なツール:

• Windows タスク マネージャ: Windows XP の場合、タスク マネージャでは「メモリ使用量」の列がデフォルトで表示されており、オプションで「仮想メモリ サイズ」の列を選択できます。「メモリ使用量」の列で表示される値は、プロセスの仮想メモリの容量で、ワーキング セットにあたります。「仮想メモリ サイズ」の列で表示される値は、プロセスの仮想メモリの容量で、コミットにあたります。Windows Vista の場合、これらの列はワーキング セットおよびコミット サイズとしてラベル付けされています。いずれの値にも、リザーブ ページが含まれていないため、プロセスの仮想メモリの総容量はレポートされません。

• Windows パフォーマンス モニタ: このツールは、Windows パフォーマンス カウンタをベースとしています。Windows パフォーマンス モニタは、[プロセス] -> [仮想メモリ容量] のカウンタを通じて、プロセスの仮想メモリの総容量を正確にレポートします。必要なパフォーマンス カウンタを収集し、アプリケーションに関連する正確なプロセスを特定するには、このツールを設定する必要があります。

• PTF (Performance Tuning Framework): HP PTF は、お使いの HP ワークステーションにインストールされた主要アプリケーションの多くを自動で認識します。PTF は、大規模アプリケーションの個別のプロセスを認識するよう設計されています。また、PTF は Windows のパフォーマンス カウンタをベースとしています。PTF では、Resource Graph、Capacity Meters、および Resource Collector の 3 つで、仮想メモリの監視と記録を行います。詳細については、本書で後述します。

システム全体での仮想メモリの制限: システムの仮想メモリの制限値は、物理メモリとページング ファイルの合計です。Windows XP および Vista では、必要なメモリが増えた場合、ページ ファイルの容量を動的に増加させることができます。Windows XP の場合、デフォルトはカスタム サイズとなっており、ページ ファイルの最小サイズと最大サイズが定められています。ページング ファイルがカスタム サイズとして設定され、すべてのプロセスのコミット ページの合計が物理 RAM とページング ファイルの合計サイズを超えた場合、プロセスの仮想メモリの追加が拒否されることがあります。Vista の場合、デフォルトの動作として、ページ ファイルのサイズを OS が自動的に管理します。これにより、ページ ファイルは、要求に応じて増減可能です。以下の 3 つの Vista タスク マネージャ画面では、メモリにプロセスが集中し、8GB を超える仮想メモリが割り当てられた際に、ページ ファイルのサイズが自動的に管理され、増加する様子が示されています。

OS はページング ファイル サイズを自動的に管理します。 プロセスで仮想メモリ空間がさらに必要になった場合、システムのページ ファイル サイズが動的に増加します。 7GB 8.5GB 10.5GB

Page 3: 32 ビット Windows OS での仮想メモリの制限について - 日本HP · 2008-11-21 · Windows オペレーティング システムは、ユーザー アプリケーションに

© 2004 Hewlett-Packard Development Company, L.P. 本書に記載された情報は、将来予告なく変更されることがあります。HP は、本書中の技術的あるいは校正上の誤り、省略に対して責任を負いかねますのでご了承ください。2006 年出版

Windows XP の場合、管理者は [パフォーマンス オプション] -> [仮想メモリ] のコントロール パネルで、ページング ファイルの [カスタム サイズ] のデフォルトを変更できます。

XP では、[カスタム サイズ] が デフォルトで設定されています。 これにより、システムの仮想メモリの

制限値には、物理メモリにページン

グ ファイル サイズの最大値を加えたものが設定されます。

管理者は [システム管理サイズ] を選択すると設定を変更できます。 この設定変更により、アプリケーショ

ンの組み合わせに応じてシステムの

仮想メモリを増減できます。

システムの仮想メモリの制限値は、タスク マネージャではコミット チャージとして表示されます。 このケースでは、仮想メモリの制限値は、システム メモリの 2.5GB に、ページング ファイルの 2,048MB を足したもので、合計 4,447MB です。

Page 4: 32 ビット Windows OS での仮想メモリの制限について - 日本HP · 2008-11-21 · Windows オペレーティング システムは、ユーザー アプリケーションに

© 2004 Hewlett-Packard Development Company, L.P. 本書に記載された情報は、将来予告なく変更されることがあります。HP は、本書中の技術的あるいは校正上の誤り、省略に対して責任を負いかねますのでご了承ください。2006 年出版

物理メモリの使用率 コミット メモリの使用率

プロセスあたりのコミット メモリ量

HPPTF の Resource Usage Plot には、上記と同じ情報がグラフ形式で表示され、一定のサンプリング間隔で更新されます。

Page 5: 32 ビット Windows OS での仮想メモリの制限について - 日本HP · 2008-11-21 · Windows オペレーティング システムは、ユーザー アプリケーションに

© 2004 Hewlett-Packard Development Company, L.P. 本書に記載された情報は、将来予告なく変更されることがあります。HP は、本書中の技術的あるいは校正上の誤り、省略に対して責任を負いかねますのでご了承ください。2006 年出版

プロセスあたりの仮想メモリ制限: Windows XP および Vista の場合、プロセスあたりの仮想メモリの制限値は、ユーザーが設定できます。プロセスあたりの仮想メモリの制限値は、より正確に言うと仮想メモリ サイズであり、プロセスで割り当てられたコミット ページとリザーブ ページの合計です。Windows XP および Vista は OS 起動オプションをサポートしており、プロセスあたりの仮想メモリ サイズをデフォルトの 2GB から最大 3GBまで増やすことができます。

PTF Capacity Meters のフォームを起動す

るには、Resource Graph の強調表示されたエリアで、プロ

セスをダブルクリック

します。

− 上記の画像は、CAD アプリケーションでメモリ不足が生じた際の、Windows タスク マネージャ、Windows パフォーマンス モニタ、および HP Performance Tuning Framework の「Capacity Meters」をスクリーン キャプチャしたものです。

− タスク マネージャでは、ワーキング セット (XP の場合「メモリ使用量」) とコミットがレポートされています。仮想メモリ サイズはレポートされていません。 − パフォーマンス モニタは、プロセスの仮想メモリ サイズを表示していますが、この値をレポートする設定は容易ではありません。

− HP PTF の Capacity Meters では、プロセスあたりの仮想メモリの値が、Working Set、Virtual Size (Bytes)、Commit Size の各テキスト ボックスに表示されます。これらの値はキロバイト (KB) 形式で表示されます。PTF では、以下の割合を表示します。

• ワーキング セットのバイト数と物理メモリの割合

• 仮想メモリ サイズと、プロセスの最大アドレス サイズ (OS の起動オプションに応じて、2GB または 3GB) の割合

• コミット サイズとシステムのページ ファイル サイズの割合

− プロセスのリソース使用量がシステム リソースの最大値に近づくと、緑色のインジケータが黄色 (リソースの 70% に達した場合)、さらには赤色 (80%) へと切り替わります。この例では、プロセスのワーキング セットに物理 RAM の大部分が割り当てられており、プロセスの仮想メモリが最大値 (このケースでは 3GB) に到達しています。

Page 6: 32 ビット Windows OS での仮想メモリの制限について - 日本HP · 2008-11-21 · Windows オペレーティング システムは、ユーザー アプリケーションに

© 2004 Hewlett-Packard Development Company, L.P. 本書に記載された情報は、将来予告なく変更されることがあります。HP は、本書中の技術的あるいは校正上の誤り、省略に対して責任を負いかねますのでご了承ください。2006 年出版

考察: システムの物理メモリに対する要求が高い場合、または物理メモリの使用量が一定のしきい値を超えた場合、OS は最も以前に使用されたページを移動し、ワーキング セットの全体サイズを減らすことで、システム全体のメモリ使用量を動的に最適化します。以前のワーキング セット ページは、可能な場合はシステム メモリで管理されるため、ハード ページ フォールト (ディスク I/O) は回避されます。このメモリ最適化により、追加のワーキング セットが必要となった場合、これらのページは物理メモリからページ ファイルに移されます。このメモリ最適化が実行されると、タスク マネージャにおいてアプリケーション メモリの数値が低くなる可能性があります。システムおよびアプリケーションの動作が非常に遅い、または応答がないといった状況

が生じることがあります。その際ユーザーは、XP ではタスク マネージャの「メモリ使用量」の列、Vista では「ワーキング セット」の列を確認することになります。この場合、「最大メモリ使用量」の値を確認する方が参考になります。「最大メモリ使用量」の列

は、メニューの[表示] ->[列の選択] で設定すると、タスク マネージャの表示内容に追加できます。

まとめ: メモリ低下またはメモリ不足が原因となる、コスト増につながる設計のダウンタイムや再作業を回避するため、システム全体、またはプロセスあたりの測定基準を組み合わせて監視する必要があります。HP Performance Tuning Framework では、簡単なインタフェースでこれらの数値を監視し、ユーザーに未解決の問題を警告できます。CAD アプリケーション ベンダーの多くは、全体のメモリ使用量を減らすための設計技術を提供しています。このような技術を取り入れたにもかかわらず、メモリ不足

が引き続き発生する場合は、Windows XP x64 または Vista x64 上で実行している、64 ビット バージョンのアプリケーションを評価します。また、Windows XP または Vista で、3GB の仮想メモリを使用できる 32 ビット アプリケーションの多くは、Windows XP x64 または Vista x64 で実行している場合、4GB の仮想メモリを使用できます。

このスクリーン キャプチャでは、プロセスのメモリ使用量が約 417MB、最大メモリ使用量が 2.5GB 強となっています。