Linuxが利用可能なメモリをすべて使用しないのはなぜですか

Linuxが利用可能なメモリをすべて使用しないのはなぜですか

私は256MBのメモリを持つLinux VPSを持っています(freeただし、248MBしか見つかりません)。しかし、まだ85MBは空いているようです。しかし255 MB がスワップされています。これはなぜでしょうか?

free -m

              total       used       free     shared    buffers     cached
Mem:           248        245          3          0         41         40
-/+ buffers/cache:        163         85
Swap:         1971        255       1716

答え1

空き容量は 85MB ではなく 3MB です。使用されているスワップは 255MB で、スワップされたデータを保持するために使用できるメモリは 88MB しかないため、カーネルは少なくとも 167MB をスワップするしかありません。それ以上のスワップを行った理由は、そのメモリを最近アクセスされていないアプリケーション データを保持するために使用するよりも、ディスク キャッシュ (技術的にはページ キャッシュ) に使用した方がパフォーマンスが向上するとカーネルが判断したためです。

3MB を空けておく理由は、メモリを簡単に空けたり再利用したりできない状況で、負荷の急増を処理するためです。たとえば、ネットワーク トラフィックの急増やディスク I/O の完了時などです。

関連情報