Пример: на компьютере установлено физически 2 ГБ оперативной памяти. До сих пор компьютер использовался в таком режиме, что не потреблял больше 500 мегабайт, поэтому раздела подкачки на нём не было запланировано, и он не существует. Но вдруг возникла необходимость запустить процесс, которому нужно 3 гига оперативы. Единовременно. В смысле — процесс должен отработать и всё. Больше такое количество оперативной памяти никогда не понадобится, компьютер продолжит работать в своём штатном режиме.
Как быть? Перезагружаться, двигать разделы с данными, создавать раздел подкачки, который не был нужен раньше и не будет нужен потом — тупо и не всегда возможно. Подключать флешку, форматированную в своп — опять же тупо, и опять же не всегда возможно.
Поможет создание области для подкачки в виде файла. Файла подкачки.
Да-да-да, как в виндах. Только наживую, без перезагрузок и не навсегда.
1. Создаём файл, который будет свопом. Например, будущий двухгиговый своп в корне ФС можно сделать такой командой:
dd if=/dev/zero of=/podka4ka bs=1M count=1 seek=2047
Файл появится мгновенно, будет весить нужные 2 ГБ, но есть нюанс. Если файловая система поддерживает дыры, то наша "podka4ka" будет представлять собой большую дыру размером 2047 мегабайт с одним мегабайтом нулей в конце. А дыры в файле для подкачки — недопустимы (иначе на следующем шаге будет "skipping - it appears to have holes").
Поэтому используем другую команду. Она отрабатывает помедленнее, но делает наверняка:
dd if=/dev/zero of=/podka4ka bs=1M count=2048
2. Подготавливаем файл форматированием:
mkswap /podka4ka
3. И добавляем его к оперативе:
swapon /podka4ka
Теперь у нас не 2, а 4 ГБ доступной памяти.
Проверяем, всё ли в порядке:
swapon -s
Вывод должен быть примерно таким:
Filename Type Size Used Priority /podka4ka file 2097148 0 -1
Всё, можно запускать ресурсоёмкий процесс.
После того, как он отработает — наведём порядок. Вернём взад состояние системы:
swapoff /podka4ka
rm /podka4ka
Комментарии
imen
#cid72088
Ответить
Попрошу не халявить!
Традиционно ☹ наиболее сложные вопросы (как определить, что ошибка возникла вследствие недостатка памяти и сполько именно памяти недостаёт процессу) не были даже упомянуты.