データベーステーブルの一部を保存するためにRAMを使用しており、その他はハードディスクに保存されています。
今日、自分のプロセスがスワップメモリを使用していることを知りました。スワップメモリとは何ですか?どのプロセスがスワップメモリを使用しているかをどのように検出できますか?
データベーステーブルの一部を保存するためにRAMを使用しており、その他はハードディスクに保存されています。
今日、自分のプロセスがスワップメモリを使用していることを知りました。スワップメモリとは何ですか?どのプロセスがスワップメモリを使用しているかをどのように検出できますか?
回答:
物理メモリが不足した場合、ディスク上のメモリにデータを保存する仮想メモリを使用します。ディスクからの読み取りは、メモリからの読み取りよりも桁違いに遅いため、すべてが遅くなります。(実メモリと仮想メモリ間でのデータ交換は「スワップ」です。ディスク上のスペースは「スワップスペース」です。)
アプリが「スワップを使用する」場合、使用するメモリを減らすか、RAMを追加購入する必要があります。
(スワップは、使用されていないアプリケーションを使用するまでディスクに保存できるので便利です。その後、「ページイン」して再び正常に実行できます。メモリにない間でも、OSはそのメモリを使用できます。ディスクキャッシュのような他の何かのため。それは非常に便利な機能ですが、プログラムを実行するのに十分な物理メモリがない場合は、間違いなくより多くのメモリが必要です。幸いなことに、メモリは本当に本当に安いです。
コンピューターには、一定量の物理メモリーがあります。しかし、ほとんどの場合、もっと欲しいです。したがって、ディスク上のメモリを交換します。
そのメモリが必要になるたびに、メモリにスワップバックする必要があります(他の部分をスワップアウトする)。遅延を最小限に抑えるための非常にインテリジェントなアルゴリズムがありますが、それでも待機する必要がある場合があります。
Windowsでは、タスクマネージャーを見ると、列ページフォールトを表示できます。これは時間を示し、アプリケーションはディスク上にあり、交換する必要のあるメモリを要求します。ページフォールトが多い=アプリケーションが遅い。
このプロセスはいくつかのレベルで使用されます。高速から低速への要約:
cat /proc/pid/smaps
スワップを使用したくない場合は、スワップパーティションを使用しないでください(の行をコメントアウトします/etc/fstab
)が、それにより新しいプロセスの開始が妨げられ、物理メモリが不足するとmallocが失敗します。OSはメモリ内にホットページを保持し、最近使用されていないものをディスクにスワップするため、これは一般的には良い考えではありません...あまり安全ではなく、非常に有用でもありません。
別の解決策は、データベースをハッキングしてページをメモリにロックすることです(実行できることはわかっていますが、今どのように正確に説明することはできません)が、とにかく、データベースが独自のスワッピングを使用する可能性がありますキャッシングメカニズム。
スワップとは何か、仮想メモリがどのように機能するかを知るには、いくつかのオペレーティングシステムの講義をご覧になることをお勧めします。MITオープンコースウェアが役立つかもしれません。
私は部分的に答えを見つけました。スワップメモリは、オペレーティングシステムが実際にRAMにある情報を別のアプリケーション用に解放するために使用する、コンピューターのハードディスク内のスペースです。これは、システムが新しいプロセスにメモリを必要とし、何も存在しない場合に実行する必要があります。したがって、システムに十分なRAMがある場合、SWAPメモリは必要ないことがわかります。
更新
スワップスペース(または仮想メモリ)を見つけるには、タスクマネージャー(Ctrl + Alt + Del)に移動し、[表示]-> [列]-> [仮想メモリ]からオンにします。次に、メモリ使用量と仮想メモリの差を計算します。また、Vistaを実行している場合にそれを確認する方法についても説明します:http : //www.ehow.com/how_5067693_increase-swap-space.html
スワップは、RAMとして使用されるハードディスク領域です。それは(相対的に言って)で非常に遅いが、彼らはその後、彼らのRAMを扱うことができるより多くのデータを扱うためにしようとしているときにクラッシュからコンピュータを停止します。
プロセスがスワップを使用しないようにするには、RAMを追加します。
プロセスでスワップメモリを使用したくない場合は、スワップメモリを完全に無効にしてください。残念ながら、メモリが足りなくなった場合、Linuxカーネルは実行中のプロセスの一部を強制終了して、メモリを解放して使用できるようにします。
システムに十分なRAMがあれば、実際にはスワップメモリなしで実行できます。
スワップメモリを使用しない768MbのRAMを搭載したラップトップを使用しています。私のニーズには十分です。256MbのRAMを搭載したサーバーがあり、スワップメモリを使用していません。OpenVZ仮想化を使用して、8台の仮想サーバーを問題なく実行しています。
そのため、スワップメモリが必要かどうかはあなた次第です。