最近、私はスワップ領域に正確にゼロバイトの未使用のRAMがあり、空きRAM(無料ではありませんが、空き+バッファ+キャッシュの合計)が60%のボックス(実際にはWebサーバーVM)を見ました。合計仮想マシンメモリ。以前これを見たことがないので、これが良い設定であるかどうか疑問に思います(ボックスとアプリケーション用)。
仮想マシンの管理者は、これが完全に正常であると考え、ボックスを調整する一般的な方法であると述べました。
アイデアは、ボックスにコールドメモリページが多い場合、カーネルがこれをクリーンアップして「実際の」メモリページを取得し、データキャッシュに使用できることです。
私はクイックボックスが必要な場合は、スワップが最後に使用できる方法であることを知っていました。だから私はスワップの可能性を低い値に設定しようとしました(それでカーネルはページスワップが好きではありませんでした)。しかし、この人のアプローチは、スワップスペースと同じくらい多くのデータをスワップアウトしてより多くのキャッシュを確保することでした。はい、彼はカーネルがスワップされたページをキャッシュする可能性があるため、スワップをアイドル状態に保つことには何の利点もありません。
余裕を持ってください。 VM Seapを最適な方法で使用し、カーネルディスクキャッシュをより効率的に使用できるようにRAMを確保する必要がありますか?
正確に言えば、現在1Gbのスワップスペース(100%使用)、VMのメモリは32Gb、利用可能なメモリは13Gbです。
答え1
少量のスワップ(32GiB RAMに比べて1GiBは小さい)だけを使用すると問題はありません。これは、仮想マシン管理者が説明したとおりです。 RAMの可用性が与えられると、スワップ領域のすべてのエントリは使用されません。これを維持し、より緊急の作業のために適切な物理メモリを使用することをお勧めします。アクティブなワークロードまたはディスク・キャッシュ。
過度のスワップの使用は、スワップボリュームが大きい場合、またはメモリ不足のためにページがスワップされる場合にのみ問題になり、より重要なのはスワップする場合です。活動非常に重要な、つまりifvmstat
は、ページがスワップインおよびアウトされたことを示します。これは、システムがクラッシュしてページを削除するのに時間がかかり、再び交換する必要があることを示します。これは、RAMの量がシステムワークロードに比べて小さすぎる場合に発生します。
私がこの記事を書いているシステムは、より多くのスワップスペースを持ち、仮想マシンと同じような状況にあります。
$ free -m
total used free shared buff/cache available
Mem: 32054 19405 1098 2365 11550 9827
Swap: 6410 6410 0
ただし、インタラクションパフォーマンスは良好であり、vmstat
スワッピングアクティビティは表示されません。