フルスワップを達成するためにカーネルを調整する方法は?

フルスワップを達成するためにカーネルを調整する方法は?

私は次の交換戦略を展開したいと思います。

  • デフォルトでは、メモリ内のすべてのページはスワップ領域にも存在する必要があります。
  • メモリ内のページが変更されると(つまり、汚れた場合)、そのページはできるだけ早く書き込まれる必要がありますが、他のプロセスよりも優先順位が低くなります。
  • 設定可能な透かしに達すると(ページの80%がダーティであると仮定)、優先順位は他のプロセスと同じです。

このスワップ戦略はLinuxカーネルで実行可能ですか?それでは、これを達成するためにカーネル設定をどのように指定できますか?

編集する:

明らかに、その理由は、置き換える必要があるページ数を減らすことです。ダーティページのみをディスクに書き込む必要があり、これは時間の経過とともにバックグラウンドで発生します。したがって、ページの損失が発生した場合(つまり、ページがメモリにない場合)、ページをメモリからディスクに書き込む必要はなく、ディスクからメモリに書き込む必要があります。これにより、スワップインとスワップアウトが同時にディスクにアクセスしようとするため、I / Oボトルネックが発生する可能性が低くなります。

ベストアンサー1

/proc/sys/vm/swappinessメモリに残っているデータセグメントと交換されるデータセグメントの割合を制御するために設定できる値。値がゼロの場合、何を書き込んでも完全に置き換えることを防ぎます。

これは、次のいずれかの方法を使用して実行できます。

  • echo 0 > /proc/sys/vm/swappiness
  • sysctl -w vm.swappiness=0
  • この設定を次の場所に保存してください。/etc/sysctl.conf

一般的に言えば、少しのスワップを使うのは悪いことではありません。空きメモリはディスクから読み出されたデータをキャッシュするために使用でき、システムは突然大量のメモリを必要とするアプリケーションに対して事前に計画することができます。

しかし、あまりにも多くのプログラムを交換すると、各プログラムの切り替え中にディスク関連のアクティビティが増え、すべての操作が実際に遅くなる可能性があります。何かを使用するには、まずメモリにリロードする必要があります。

データの到着にはずっと時間がかかるため、ディスクの読み取りはメモリアクセスに比べて非常に遅くなります。システムは異なる読み取り/書き込み要求間で読み取りをスケジュールする必要があり、ドライブは正しいシリンダーを見つけ始め、最終的にゆっくりとデータ転送を開始します。

だから私はあなたの論理に欠陥があると思います。通常、突然の増加に備えて十分なスペースを残しながら、プログラムをメモリ内で実行し続けたいと思います。バックアップでもパフォーマンスも向上しないため、「ディスクへの書き込み」にスワップを頻繁に使用しないでください。

古いコンピュータにはメモリが少ないため、スワッピングの問題が発生する可能性があります。同時に多くのプログラムが開いていると、システムが遅くなり、ディスクがスワップファイルを読み書きする音が聞こえます。

おすすめ記事