Почему Linux не использует всю доступную память?

Почему Linux не использует всю доступную память?

У меня есть Linux VPS с 256 МБ памяти ( freeхотя находит только 248). Однако, похоже, у меня все еще есть 85 МБ свободной памяти,ноон меняет на 255 МБ. Почему так?

free -m

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

решение1

У вас свободно 3 МБ, а не 85 МБ. Поскольку у вас 255 МБ подкачки и только 88 МБ памяти, которые потенциально можно использовать для хранения данных, которые были подкачаны, у ядра нет выбора, кроме как подкачать по крайней мере 167 МБ. Причина, по которой оно подкачало больше, заключается в том, что ядро ​​посчитало, что производительность будет выше, если оно будет использовать эту память для кэширования диска (технически, для кэширования страниц), а не использовать ее для хранения данных приложения, к которым недавно не обращались.

Причина, по которой 3 МБ остаются свободными, заключается в том, чтобы обрабатывать всплески нагрузки в контекстах, где память не может быть легко освобождена или переназначена. Например, если происходит всплеск сетевого трафика или когда завершается дисковый ввод-вывод.

Связанный контент