メモリページング
Ferranti AtlasEdit
ページングをサポートする最初のコンピュータは、1963年にFerranti、マンチェスター大学、Plesseyが共同で開発したスーパーコンピュータAtlasでした。 マシンには、512ワードのページごとに1つのエントリを持つ連想(コンテンツアドレス指定可能)メモリがありました。 スーパーバイザは、プログラムに一レベルのストアを提供するために、非等価中断を処理し、coreとdrum間のページの転送を管理しました。
Microsoft WindowsEdit
Windows3.XとWindows9xedit
ページングは、1990年のWindows3.0からMicrosoft Windowsの機能となっています。 ウィンドウズ3.xは、スワップファイルとして使用するために386SPART.PAR
またはWIN386.SWP
という名前の隠しファイルを作成します。 一般的にはルートディレクトリにありますが、他の場所(通常はWINDOWSディレクトリ)に表示されることがあります。 そのサイズは、システムがどのくらいのスワップ領域を持っているかによって異なります(コントロールパネル→”仮想メモリ”の下で拡張された設定)。 ユーザーがこのファイルを移動または削除すると、次回のWindows起動時にブルースクリーンが表示され、”永続的なスワップファイルが破損しています”というエラーメッ ユーザーは、ファイルを削除するかどうか(存在するかどうか)を選択するように求められます。
Windows95、Windows98、およびWindows Meは同様のファイルを使用しており、その設定はコントロールパネル→システム→パフォーマンスタブ→仮想メモリの下にあります。 Windowsは、ページファイルのサイズを物理メモリの1.5倍のサイズで開始し、必要に応じて最大3倍の物理メモリに拡張するように自動的に設定します。 ユーザーが物理メモリの少ないシステムでメモリを大量に消費するアプリケーションを実行する場合は、これらのサイズを手動でdefaultよりも高い値に設
Windows NTEdit
Windows NTファミリのページングに使用されるファイルはpagefile.sys
です。 ページファイルの既定の場所は、Windowsがインストールされているパーティションのルートディレクトリにあります。 Windowsは、ページファイル用に使用可能な任意のドライブ上の空き領域を使用するように構成できます。 ただし、ブートパーティション(つまり、ブートパーティション)には必要です。 システムがブルースクリーンの後にカーネルまたはフルメモリダンプのいずれかを書き込むように構成されている場合、その上にページファイルを持 Windowsは、メモリダンプの一時記憶域としてページングファイルを使用します。 システムが再起動されると、Windowsはメモリダンプをページファイルから別のファイルにコピーし、ページファイルで使用されていた領域を解放します。
FragmentationEdit
Windowsの既定の構成では、必要に応じて、ページファイルを最初の割り当てを超えて展開することができます。 これが徐々に発生すると、大幅に断片化され、パフォーマンスの問題を引き起こす可能性があります。 これを避けるために与えられる一般的なアドバイスは、Windowsがそれを展開しないように、単一の”ロックされた”ページファイルサイズを設定するこ ただし、ページファイルがいっぱいになったときにのみ展開され、デフォルトの構成では、物理メモリの合計量の150%になります。 したがって、ページファイルが拡張される前に、ページファイルでバックアップされた仮想メモリの総需要がコンピュータの物理メモリの250%を超え
展開時に発生するページファイルの断片化は一時的なものです。 展開された領域が使用されなくなるとすぐに(次回の再起動時に、そうでない場合)、追加のディスク領域の割り当てが解放され、ページファイルは元の状
Windowsアプリケーションが物理メモリとページファイルの合計サイズよりも多くのメモリを要求した場合、ページファイルサイズをロックすると問題が発生し、メモリの割り当て要求が失敗し、アプリケーションとシステムプロセスが失敗する可能性があります。 また、ページファイルが連続した順序で読み取られたり書き込まれたりすることはめったにないため、完全に連続したページファイルを持つパフォーマ しかし、大きなページファイルは、一般的に、より多くのディスク領域を使用する以外に罰則なしで、メモリ重いアプリケーションの使用を可能にします。 断片化されたページファイル自体は問題ではないかもしれませんが、可変サイズのページファイルの断片化は、時間の経過とともにドライブ上にいくつかの断片化されたブロックを作成し、他のファイルが断片化されます。 このため、割り当てられたサイズがすべてのアプリケーションのニーズに対応するのに十分な大きさであれば、固定サイズの連続したページファイルの方が優れています。
必要なディスク領域は、より最近の仕様を持つシステムでは簡単に割り当てることができます(つまり、 750GBのディスクドライブ上に6GBの固定サイズのページファイルを持つ3GBのメモリを持つシステム、または6GBのメモリと16GBの固定サイズのペー どちらの例でも、システムはディスク領域の約0.8%を使用し、ページファイルはその最大値まで事前に拡張されています。
Windowsシステムが慢性的に総物理メモリよりもはるかに多くのメモリを使用している場合、パフォーマンスを向上させるために、ページファイルのデフラグ このビューでは、展開の一時的な結果を除いて、ページファイルが時間の経過とともに断片化されないという事実を無視します。 一般に、ページファイルアクセスに関連するパフォーマンス上の懸念は、物理メモリを追加することによってはるかに効果的に処理されます。
UnixとUnixライクなシステム編集
Unixシステムやその他のUnixライクなオペレーティングシステムでは、物理RAMがいっぱいになったときにRAMのディスク領域を置換する行為を記述するために”スワップ”という用語を使用します。 これらのシステムの一部では、ハードディスクのパーティション全体をスワップ専用にするのが一般的です。 これらのパーティションはスワップパーティションと呼ばれます。 多くのシステムには、スワップ専用のハードドライブ全体があり、データドライブとは別に、スワップパーティションのみが含まれています。 スワップ専用のハードドライブは、”スワップドライブ”または”スクラッチドライブ”または”スクラッチディスク”と呼ばれます。 これらのシステムの中には、スワップパーティションへのスワップのみをサポートするものもあれば、ファイルへのスワップをサポートするものもあります。
LinuxEdit
Linuxカーネルは、実質的に無制限のスワップバックエンド(デバイスまたはファイル)をサポートし、バックエンドの優先順位の割り当てもサポートしています。 カーネルが物理メモリからページをスワップすると、利用可能な空き領域を持つ最優先のバックエンドが使用されます。 複数のスワップバックエンドに同じ優先度が割り当てられている場合は、ラウンドロビン方式で使用されます(RAID0ストレージレイアウトに多少似ています)。
ファイルとパーティションのスワップedit
エンドユーザーの観点からは、バージョン2.6でファイルをスワップします。x以降のLinuxカーネルは、スワップ-パーティションとほぼ同じくらい高速です。 スワップファイルのパフォーマンスを向上させるために、カーネルは、基になるデバイス上の配置場所のマップを保持し、それらに直接アクセスするため、 それにもかかわらず、Red Hatはswapパーティションを使用することをお勧めします。 回転磁気メディアデバイスであるHddに常駐する場合、スワップパーティションを使用する利点の一つは、データスループットが高く、シーク時間が速い連続したHDD領域にそれらを配置できることです。 ただし、スワップファイルの管理の柔軟性は、スワップパーティションの特定の利点を上回る可能性があります。 例えば、スワップファイルは、任意のマウントされたファイルシステム上に配置することができ、任意の所望のサイズに設定することができ、必要に応じて追加または変更することができる。 スワップパーティションは柔軟ではありません; パーティションやボリューム管理ツールを使用しないと、さまざまな複雑さや潜在的なダウンタイムが発生します。
SwappinessEdit
Swappinessは、空きメモリからのメモリ割り当て要求を満たすことができないときに、システムページキャッシュからページを削除するのではなく、ランタイムメモリからスワッピングすることに与えられる相対的な重みを制御するLinuxカーネルパラメータです。 Swappinessは、0~200(両端を含む)の値に設定することができます。 値が小さいと、カーネルはページキャッシュからページを削除することを好み、値が大きいとカーネルは”冷たい”メモリページを交換することを好みます。 デフォルト値は60
です。これを高く設定すると、コールドページをスワップインする必要がある場合(たとえばアイドル状態のプログラムと対話する場合)に高いレイテンシが発生する可能性があります。一方、低く設定すると(0でも)、キャッシュから削除されたファイルを再度読み取る必要がある場合に高いレイテンシが発生する可能性がありますが、コールドページをスワップインする必要が少なくなるため、対話型プログラムの応答性が向上します。 スワップは、多くのランダムな書き込みを伴うため、Hddをさらに遅くすることもできますが、Ssdにはこの問題はありません。 もちろん、ほとんどのワークロードではデフォルト値が適切に機能しますが、予期されるタスクのデスクトップや対話型システムでは、バッチ処理中に設定を下げたり、対話型でないシステムでは設定を増やしたりすることができます。
Swap deathEdit
システムメモリが現在のタスクに対して非常に不十分であり、メモリアクティビティの大部分が遅いスワップを通過すると、CPUがアイドル状態であっても、システムは実質的にどのタスクも実行できなくなる可能性がある。 すべてのプロセスがスワップで待機しているとき、システムはスワップ死にあるとみなされます。
スワップ死は、誤って設定されたメモリのオーバーコミットのために発生する可能性があります。
“スワッピング-トゥ-デス”問題の元の説明は、Xサーバーに関するものです。 キーストロークに応答するためにXサーバーが使用するコードまたはデータがメインメモリにない場合、ユーザーがキーストロークを入力すると、サーバーは一つ以上のページフォルトを取り、キーストロークを処理する前にswapから読み取る必要があり、応答が遅くなります。 これらのページがメモリに残っていない場合は、次のキーストロークを処理するために再度フォールトする必要があり、実際に他のタスクを正常に実行していてもシステムが実質的に応答しなくなります。
macOSEdit
macOSは複数のスワップファイルを使用します。 デフォルト(およびApple推奨)のインストールでは、ルートパーティションに配置されますが、代わりに別のパーティションまたはデバイスに配置するこ
AmigaOS4edit
AmigaOS4.0では、RAMの割り当てと物理メモリのデフラグのための新しいシステムが導入されました。 それでも、最適化できないフラットな共有アドレス空間を使用します。 これは、スワップを可能にするスラブ割り当て方法とページングメモリに基づいています。 ページングはAmigaOS4.1で実装されましたが、すべての物理メモリが使い果たされるとシステムがロックされる可能性があります。 スワップメモリは、ユーザーが唯一の物理RAMを使用することを選択することができ、任意の瞬間を活性化し、非活性化することができます。
Leave a Reply