Наверное начать стоит с того, что изначально swap - это отделенное место на ПЗУ (файлом или разделом), предназначенное в основном для двух целей:
- перемещать туда наборы страниц памяти для предотвращения выхода за доступные объёмы, во избежание Out of memory
- для использования режима гибернации (сна), когда содержимое оперативной памяти временно записывается в своп, для возможности снизить энергопотребление в простое
Если режим сна планируется использовать - то все рекомендации сводятся к хотя бы 1,5Х размеру свопа относительно ОЗУ
Исходя из этого - необходимость в свопе зависит от объема ОЗУ в разрезе на возлагаемые к системе ресурсоёмкие до оперативной памяти задачи, и от профиля использования режимов энергосбережения.
Для примера - свежий скайп в процессе работы без труда выходит к планке в 1Гб, браузеры могут за 2-3Гб при полусотне вкладок, плюс системные нужды от 300-500 Мб, офисные приложения, почтовые клиенты, виртуальные машины, Steam... Оперативы на всех не напасешься
На случай 4-х Гб ОЗУ - зная прожорливость десктопных приложений и игр - я предпочту выделить хотя бы пару гб под своп.
При 8 Гб и выше - мне обычно хватает оперативной памяти, особо не отслеживая запущенные приложения и спустя три-четыре дня аптайма - утилизация обычно не превышает 5,5Гб и система продолжает шевелиться.
Но под чьи-то типовые задачи не хватит и этого объема, например несколько виртуалок парралельно (еще и без balooning'а), Java разработчикам запуск и отладка приложений с высоким -Xmx, JMC из этой же серии... Есть немало сценариев забить и 16 и 32 Гб, с серверами - так вообще отдельная история...
При любой аппаратной конфигурации - обращение к своппированным данным это явная просадка по производительности. Поэтому при наличии свопа в системе - превый важный твик это
vm.swappiness
, о нем уже тоже упоминали неожнократно, дефолтное значение в 60 означает что использование свопа начнется уже при 40% утилизации ОЗУ, что в подавляющем большинстве случаев не будет эффективным сценарием распределения ресурсов. При типовых десктопных задачах - этот параметр лучше держать ближе к нулю.
Ну, и резюмируя все то что я тут понаписал - своп для спящего режима это нормально, а вот своппинг в процессе работы - всегда плохо, если он случается постоянно - все же лучше увеличить объем оперативной памяти, благо сегодня это не такой уж и дефицит.