使用後のスワップスペースはいつ消去されますか?

使用後のスワップスペースはいつ消去されますか?

私はメモリ(およびCPU)集約的なタスクの4つのインスタンスを実行しました。これでプログラムが完了したので(conkyを介して)RAMが解放され、プロセッサはほぼアイドル状態に戻りましたが、スワップパーティションはまだほとんどいっぱいです。

カーネルがスワップ領域をいつ消去しますか?という質問が浮かび上がります。これにより、スワップ領域を確保する必要がある別の集中プロセス配置を実行します。スワップから無関係な情報がフラッシュされますか、それとも衝突が発生しますか?

答え1

この回答では、「高速メモリ」と「低速メモリ」という用語を使用します。実際に何が起こっているのかについての説明が非常に不足していますが、何が起こっているのかを説明するのに役立つと思います。

お使いのコンピュータには、高速メモリと低速メモリで構成される「仮想メモリ」があります。合計メモリ空間は、高速メモリ+スローメモリの合計です。これで、コンピュータは高速メモリでのみ作業できるため、オペレーティングシステムはそれを最初に使用します。高速メモリがいっぱいになると、オペレーティングシステムはメモリの一部を遅いメモリに移動しようとします。これにより、使用可能な高速メモリが解放されます。プログラムが遅いメモリの一部のデータを使用する必要がある場合、オペレーティングシステムはそのデータを遅いメモリから高速メモリに戻します(スペースを確保するために、最初に一部のデータを高速メモリから遅いメモリに移動する必要があるかもしれません)。

このプロセスを「ページング」と呼びます。システムが移動するだけでできるだけスマートだからです。ページプログラム全体ではなくメモリ。プログラムは、高速メモリと低速メモリの両方に存在できます。あなたの視点で唯一の違いは、メモリ速度が遅いことです。遅い

これで、すべての高速メモリを使用したプログラムが終了すると、使用可能な高速メモリが大量に残り、内容はまだ低速メモリに残ります。しかし、これは問題ですか?使用可能な仮想メモリの量が等しい場合、システムはそのページを高速メモリに戻します。もし彼らは必要です。誰もこのページを望まない場合は、遅いメモリに残しておくとよいでしょう。

明らかに、この話では、「高速メモリ」はRAMであり、「遅いメモリ」はスワップです。

まあ、それは単なる「愚かな」物語です。

しかし、それは起こったこととほぼ同じです。

Linuxはプログラムを交換しません。交換とは、プログラムとデータセグメント全体が一度に交換装置に送信されることを意味する。しかし、Linuxページ;メモリページをスワップデバイスに送信します。これは、プログラムの一部のページがRAMにあり、一部のページがスワップにある可能性があることを意味します。スワップのページにアクセスすると、必要に応じて「スワップイン」されます。 RAMのページは、RAMに空き領域を作るためにスワップするために「スワップアウト」される。

したがって、16Gb RAM と 2Gb スワップ領域を使用するプログラムを実行し、プログラムが完了すると、スワップ領域にページが残る可能性があります。しかし、ただプログラムにまだ割り当てられているページがあります。free1Gスワップスペースが使用中とマークされている場合はいその程度の仮想メモリがまだどこかで使用されています。ただし、交換ページは最近訪問されていないため、そのページにそのまま存在する可能性があります。

ワークロードに応じて、これらのページをスワップデバイスに保持すると、より良いパフォーマンスが得られます。または事前にRAMに再インポートすると、より良いパフォーマンスが得られます。ただし、どちらの場合も、まったく同じ量の仮想メモリを使用できます。

(Linuxの過度の使用などにより状況がさらに複雑になりましたが、これが基本的なアイデアです。)

仮想メモリ管理に関しては調整パラメータがたくさんあります(https://www.kernel.org/doc/Documentation/sysctl/vm.txt)しかし、実際に調整する必要がない限り、デフォルトのままにしておくことをお勧めします。 https://en.wikipedia.org/wiki/Swappinessおそらく見る価値がある唯一の作品でしょう。

関連情報