すべてのスワップを消去する必要がありますか、賢明ですか?

すべてのスワップを消去する必要がありますか、賢明ですか?

時々、スワップパーティションがいっぱいになるLinuxボックスがあります。利用可能なRAMはまだ十分なので、メモリが不足するリスクはありません。
完全なスワップが発生した場合、一般的な作業プロセスはswapoff -a && swapon -aスワップを完全に消去することです。

私の質問:

  1. 完全なスワップパーティションは最初に注意が必要な問題ですか、それとも無視できる「正常な」問題ですか?
  2. スワップをオフにしてオンにするのは良いことですか、それともカーネルがスワップスペースをクリーンアップするのに忙しく、状況が悪化しますか?
  3. より良い(または最良の)対応方法は何ですか?

答え1

スワップ領域をクリアすることは必要でも有用でもありません。読むLinuxatemyram

カーネルはかなり効率的ですページキャッシュ。したがって、RAMは便利なデータ(最近アクセスされたファイルセグメントブロックやヒープメモリなど)を格納するために使用され、あまり役に立たないデータはスワップ領域に置き換えられます。

スワップ領域が小さすぎる場合があります。ファイルに置き換えることもできます。よりこれ

答え2

私の経験では、スワップパーティション全体はメモリ使用量が高い場合にのみ発生します。この場合、スワップからすべてのエントリをロードするのに十分なメモリがない可能性があるため、スワップを無効にすると問題が発生する可能性があります。

使用可能なメモリが不足しているときにスワップを無効にしようとすると、システムが応答を停止したり、メモリを解放したりするためにプロセスを終了し始めることがあります。

メモリ使用量が高かったり低下したりすると、スワップ利用率が高くなる可能性がありますが、メモリが解放された原因が何であれ、少なくとも数ページのスワップが解放された可能性が高いため、100%と見ると驚くことでしょう。 。

メモリ使用量が減少した後にスワップを無効にすると、多くの問題が発生しない可能性があります。しかし、私はあなたがシステムパフォーマンスのために良いことをしているとは思いません。

スワップ全体を含むシステムを表示するたびに、より多くのスワップを追加してパフォーマンスを向上させることができます。

答え3

他の答えで述べたように、スワップを手動で消去するのは良い考えではありません。ただし、スワップとメモリの両方がいっぱいで、他のプログラムを実行できない場合に問題がある可能性があります。

この場合は、htop[実行]をクリックしてメモリ使用量で並べ替えますMEM%。これにより、多くのメモリを使用するプログラムを見つけることができます。それに合わないようなものが見つかった場合(たとえば、小さなユーティリティプログラム)、Googleにアクセスしてプログラムに既知のメモリリークがあるかどうかを確認してください。可能性は低いですが、起こることがあります。

私の場合は、i3通知マネージャを見つけました。Dunstでメモリリークが発生しました。これは既知で修正されていますが、変更されたバージョンは私の配布リポジトリにありません。

関連情報