Вот краткое изложение команды "сверху"
наверх - 20:14:50 вверх 18 дней, 23 мин, 1 пользователь, средняя нагрузка: 0,22, 0,20, 0,18 Задачи: всего 99, 1 работает, 98 спящих, 0 остановлено, 0 зомби ЦП: 1,1% нас, 0,1% sy, 0,0% ni, 94,2% id, 3,5% wa, 0,0% hi, 0,0% si, 1,2% st Mem: всего 2092032k, использовано 471684k, 1620348k свободно, 924k буферов Swap: всего 4194296k, используется 153940k, 4040356k бесплатно , 42564k кэшированных
Как видите, из 2 ГБ памяти используется всего 461 МБ. В то же время он показывает, что используется 150 МБ свопа.
Как это возможно? Зачем моему серверу ударить по свопу, если физическая память свободна?
При нормальных обстоятельствах Linux меняет местами вещи, когда они не используются, даже если в оперативной памяти еще есть свободное место. Вместо этого он будет хранить кешированные файлы. Вы можете настроить это поведение, изменив vm.swappiness с помощью systctl. Более подробную информацию о том, как это работает, можно найти Вот.
Linux агрессивно заменяет адресное пространство, которое не используется в течение некоторого времени. Это делается для того, чтобы сделать больше оперативной памяти доступной для кешей файловой системы (ну, фактически, кешей SLAB) или приложений, использующих общую память, оперативный диск и т. Д. Обычно это именно то, что вам нужно.
Для дальнейшего чтения рекомендую Linux: настройка подкачки для подробного объяснения, хотя вам, вероятно, никогда не придется прикасаться к упомянутым там настройкам.