
В моей системе Debian stretch много оперативной памяти. В настоящее время она использует зашифрованный раздел подкачки на SSD, но в обычных условиях я не ожидаю, что нехватка памяти когда-либо заставит его использоваться.
Но, согласно комментариям Snakedoc, полное отключение подкачки — плохая идея:
Просто заметьте, никогда не "безопасно" полностью отключать swap. Даже в системах с 96+ ГБ ОЗУ, запуск по крайней мере 512 МБ swap является хорошей мерой безопасности. Это дает вашей системе время завершить ненужные процессы, если что-то пойдет не так и неожиданно съест всю оперативную память... альтернативой отключению swap является kernel panic.
Как безопасно отключить подкачку навсегда и освободить место? (на Debian Jessie)
Поэтому я подумал, что могу зарезервировать часть оперативной памяти, скажем, 0,5 ГБ для «RAM-диска», и использовать его в качестве файла подкачки, сохраняя запись на SSD.
Как мне это сделать? Это плохая идея по какой-то причине?
решение1
Я бы не сказал, что причина в стабильности, это распространенное заблуждение. Если системная оперативная память + подкачка заполнены, вы обнаружите фактически те же симптомы, что и без подкачки:
- Необъяснимый,большойзамедления (система блокирует процессы, запрашивающие оперативную память, на некоторое время, возможно, кто-то освобождает необходимую для них оперативную память)
- Процессы, завершенные функцией OOM (недостаточно памяти).
Единственное отличие в том, что без подкачки эти симптомы возникаютвнезапно, тогда как с свопом они происходят только после заполнения свопа. Таким образом, у вас гораздо больше времени задержки, прежде чем ваша система начнет полностью не реагировать.
Это первая причина, почему полезно иметь своп.
Второе менее известно, но на самом деле оно гораздо важнее:
В целом наличие подкачки не замедляет работу вашего компьютера, а ускоряет его, даже если у вас более чем достаточно оперативной памяти.
Причина в следующем: что делает ваша система с оперативной памятью, которая на самом деле не используется вашими процессами? Они используются для кэширования ваших жестких дисков, делая вашу систему быстрее.
Если у вас есть раздел подкачки, вы, по сути, позволяете своей системе выгружать действительно редко используемые страницы памяти и использовать их пространство для дискового кэша.Насколько быстро они происходят, зависит от настроек вашей виртуальной машины и эвристики, но они действительно хороши (насколько мне известно, Linux в этом смысле намного лучше).
Если ваши жесткие диски установлены на SSD, это не особо влияет на оба аргумента (хотя наличие гораздо более быстрых дисков с нулевым временем поиска, конечно, все ускоряет).
Я в основном использую старое золотое правило для разделов подкачки: я использую подкачку в 2 раза больше, чем моя оперативная память. Это для того, чтобы избежать фрагментации подкачки (блоки в файле подкачки могут фрагментироваться так же, как файлы в файловой системе). В вашем случае, когда у вас огромный объем оперативной памяти, но дорогой жесткий диск с нулевым временем поиска, фрагментация подкачки не является проблемой, поэтому, возможно, будет достаточно и меньшего объема. Я не знаю, сколько у вас SSD, может быть, 1x или даже 0,5x от вашего сайта ОЗУ будет достаточно.
По моему мнению, этот совет «иметь по крайней мере 512M swap» плох, объем используемого вами swap должен зависеть от параметров вашей системы (стоимость диска, объем ОЗУ, объем диска, время поиска жесткого диска и т. д.). Эти 512M — не «золотое правило», это «магическое число», которое бессмысленно, если мы используем его в общем случае.
решение2
Использование HDD для подкачки в системе SSD — плохая идея. Он не только медленнее по скорости, у него гораздо больше времени доступа, он гораздо более энергоемкий и, возможно, менее надежный, чем современный SSD. В настоящее время SSD имеют 5-летнюю гарантию и могут легко прослужить 8-10 лет, даже если вы записываете на него сотни ГБ каждый день
Но было бы еще лучшеиспользоватьzram
, возможно, вместе с небольшим резервным разделом подкачки на SSD. Различные дистрибутивы Linux, а также ChromeOS и Android уже много лет включают zram по умолчанию. На Android даже нет обычного swap по умолчанию. ДажеОкнаиmacOSв настоящее время используется сжатая оперативная память, прежде чем прибегать к подкачке
Поскольку ЦП может распаковывать данные гораздо быстрее, чем HDD, вы можете ясно почувствовать отзывчивость системы, как только система начинает подкачку. Разница не так уж и свойственна SSD, но согласнорезультаты тестов здесьzram с алгоритмом lzo по умолчанию все еще кажется быстрее. Вы можете легко изменить наалгоритм lz4которыйпочти в 5 раз быстрее, чем lzoс немного меньшей степенью сжатия
Есть такжеzswap
который использует другой механизм, но по-прежнему хранит сжатые данные в оперативной памяти
дальнейшее чтение
- https://wiki.debian.org/ZRam
- https://wiki.archlinux.org/index.php/повышение_производительности#ОЗУ_и_подкачка
- zram против zswap против zcache Полное руководство: когда какой использовать
- Linux, SSD и подкачка
- Разница между ZRAM и ZSWAP
- https://www.kernel.org/doc/Documentation/blockdev/zram.txt
- https://wiki.gentoo.org/wiki/Zram
решение3
Учитывая ответ @peterh, вероятно, хорошим решением будет вставить любой старый HDD в машину и использовать его как рабочее пространство, включая подкачку. Таким образом, вся оперативная память может быть доступна для системы, даже последние 0,5G. HDD для ноутбука, вероятно, будет более энергоэффективным, чем 3,5-дюймовый диск.