Swap с гибернацией или без что лучше
Перейти к содержимому

Swap с гибернацией или без что лучше

  • автор:

swap с гибернацией или без что лучше

У меня достаточно оперативной памяти (8гб, забито обычно не больше 2гб, максимум 4 было), после того как сдох SSD, вернувшись временно на хард, решил сделать своп раздел, для гибернации, и при том, что памяти до хрена, убунта 12.04 кладет какашки в своп раздел. Как сделать так что бы своп использовался только для гибернации, и при этом программами нет? Спасибо пожалуйста

swap с гибернацией или без что лучше

убунта 12.04 кладет какашки в своп

Очень странное поведение при наличии свободной памяти. Предлагаю просто сделать своп побольше.

swap с гибернацией или без что лучше

Понизьте sysctl vm.swappiness

Поставил 1, спасибо. Гибернация работать будет?

swap с гибернацией или без что лучше

Кстати, никто не может его сейчас выложить, я его случайно удалил %)

swap с гибернацией или без что лучше

Лучше 0, да будет. При 0 будет скидывать в своп только когда вся память заполена.

А как своп больше поможет? я просто не хочу что бы программы складывали информацию с которой они работают т.к. оперативки больше чем предостаточно и после ссд и так ощущение что все стало гораздо медленнее (еще бы, с сата3 SSD на sata2 hdd 5400rpm)! Хочу своп использовать исключительно для гибернации.

swap с гибернацией или без что лучше

Сейчас случайно удалил этот файл в ходе экспериментов, мог бы куда-нибудь залить? :3

да он пуст, всмысле одни комменты, раскоменченное только что я добавил. http://dl.dropbox.com/u/43980721/sysctl.conf

swap с гибернацией или без что лучше

после загрузки сделать swapoff
перед гибернацией swapon
после выхода из гибернации снова swapoff

Как сделать так что бы своп использовался только для гибернации, и при этом программами нет?

swap с гибернацией или без что лучше

Смотрите в сторону TuxOnIce.

не люблю христианство! но вообще посмотрю

swap с гибернацией или без что лучше

Запили в скрипты гибернации автоматическое подключение своп-файла и автоматическое выключение.

Зато задержек при сиюминутной работе нет, когда в памяти висит то, что не нужно 99% времени. Неужели так трудно понять, что отключение свопа сделает только *хуже* при любом раскладе?

мне кажется, конечно я никаких таких тестов не проводил, почти полностью забитая оперативная ddr3 память работает быстрее чем sata2 5400rpm своп диск в любом случае, при том, что нужды в свопе никогда не было в принципе, только для гибернации

Нехватка оперативной памяти в Linux на рабочем ПК: оптимизация и действия при зависании

На любой операционной системе часто не хватает оперативной памяти. Рассмотрим, как и сэкономить на увеличении аппаратных ресурсов машины с Linux, и продолжить более-менее комфортно пользоваться компьютером с Linux в условиях нехватки памяти.

Типична такая ситуация: есть своп (swap, раздел подкачки), который начинает использоваться при нехватке оперативной памяти, и размещен он на HDD, то есть жестком диске с низкой скоростью чтения информации. В таких ситуациях операционная система начинает тормозить, подвисает курсор мыши, сложно переключиться в соседнюю tty и т.д. Почему? Потому что планировщик ядра Linux не может выполнить запрос на какое-то действие в запущенной программе, пока не получит доступ к ее оперативной памяти, выполнить следующее действие тоже не может, образовывается очередь из запросов на чтение с диска, и система «подвисает» именно потому, что обработка очереди происходит гораздо медленнее, чем этого хочет пользователь.

Ответ будет 60 почти наверняка. Это значит, что ядро Linux начинает свопить редко используемые страницы оперативной памяти, когда использование свободной оперативной памяти достигает 100%-60%=40%. Часто встречаются рекомендации поставить, например, vm.swappiness=10, чтобы своп не начинал использоваться, пока загрузка ОЗу не достигнет 90%. На самом деле не нужно трогать vm.swappiness, вы не умнее разработчиков ядра Linux, которые не просто так поставили 60 по умолчанию. Почему?

Представьте, что у вас всего 4 ГБ оперативной памяти, из них прямо сейчас занято 3 ГБ, vm.swappiness=10, своп на жестком диске (HDD) занят на 0%, и вы открываете тяжелый сайт в браузере, для чего требуется больше, чем имеющийся свободный 1 ГБ, например, 2 ГБ. Операционная система начинает в экстренном порядке отправлять в своп как минимум 0.5 ГБ (а по факту больше), чтобы можно было выделить браузеру необходимое количество оперативной памяти. Эта процедура становится самой приоритетной задачей, и придется пожертвовать даже движениями курсора мыши, чтобы ее выполнить как можно быстрее. Вы ждете. Проходит 5 минут, и система развисает, потому что окончила процедуру 100% загрузки очереди доступа к медленному жесткому диску, на котором размещена оперативная память (своп). При дефолтном vm.swappiness=60 редко используемые страницы памяти сбрасываются в своп заблаговременно, и резкого зависания на 5-10 минут не происходит.
UPD. В комментарии подсказывают, что это не точное описание работы vm.swappiness.

zram и приоритеты свопов

Рекомендую включить zram — прозрачное сжатие содержимого оперативной памяти. В Ubuntu это автоматизировано, достаточно установить пакет:

sudo apt install zram-config

Здесь и далее для дистрибутивов Rosa, Fedora все то же самое, но вместо zram-config —

Сервис systemd zram-config на Ubuntu будет автоматически добавлен в автозагрузку при установке пакета и запущен при перезагрузке системы. Для запуска вручную:

sudo systemctl start zram-config

sudo systemctl stop zram-config

Удаления из автозапуска:

sudo systemctl disable zram-config

Добавление в автозапуск:

sudo systemctl enable zram-config

При запуске zram-config берет число, равное 50% всего объема оперативной памяти, далее делает по одному виртуальному устройству /dev/zramN, где N начинается с 0, для каждого ядра процессора, а объем каждого /dev/zramN равен 50% всей оперативной памяти, деленному на количество ядер процессора. Так делалается для распараллеливания сжатия содержимого оперативной памяти по ядрам процессора; насколько я знаю, на современных ядрах Linux достаточно одного устройства /dev/zramN, а распараллелится оно само, но меня полностью устраивает искоробочная работа zram-config, и предпочитаю не лезть в нее руками.

Кстати, zram часто применяется на смартфонах, какую-либо на глаз заметную нагрузку на процессор при дефолтном методе сжатия lz4 он не создает.

Опцией монтирования pri=X заданы приоритеты свопов. Если еще включить zram, то картинка будет такой:

В первую очередь будет свопиться в zram, то есть сжиматься внутри оперативной памяти без использования внешнего устройства для свопа, во вторую — использовать небольшой своп на SSD. Почти никогда не будет использоваться 6 ГБ свопа на HDD, однако они понадобятся, если я захочу отправить компьютер в спящий режим в условиях большой загрузки оперативной памяти. (На самом деле у меня отключен zram).

Быстро вырубить программу, перегружающую ОЗУ. Запас ОЗУ для SSH

Бывает такое, что даже при vm.swappiness=60 какому-то черту, как правило, браузеру, требуется очень много оперативной памяти, и система подвисает. Решается очень просто: сочетание клавиш Alt+SysRq(PrintScreen)+F заставляет oom_killer принудительно включиться и вырубить процесс, который на момент вызова занимает больше всего памяти. Строго 1 процесс на 1 вызов, и строго обязательно что-то будет убито. Если много раз подряд нажмете, то, скорее всего, перезапустится графическая сессия. Событие убиения процесса отражается в dmesg красным цветом.

Для работы Alt+SysRq+F нужно kernel.sysrq=1. Для этого отредатируем параметры ядра, расположенные в файлах /etc/sysctl.conf (обычно симлинк на /etc/sysctl.d/99-sysctl.conf) и /etc/sysctl.d/*.conf. Лучше всего создать отдельный файл:

sudo nano /etc/sysctl.d/99-dumalogiya.conf

Нажмем Ctrl+O, Enter для сохранения.

В случае с браузером Chromium Alt+SysRq(PrintScreen)+F будет вырубать по одной вкладке, не закрывая сам браузер, что очень удобно.

Сочетания клавиш Magic SysRq перехватываются напрямую ядром Linux, поэтому работают даже когда из-за очереди процессора подвисает X-сервер.

Интересный вопрос возник. А нужен ли swap в 2020 году? Оперативки в современных компах уже так много, что в потолок еще никогда не упирался. Нагуглил тут для чего он вообще нужен, поправьте если есть еще варианты.

Ждущий/спящий режим, все время их путаю, в одном из них нужен swap раздел или файл подкачки. Но это вроде только для ноутбуков, для тех кто не любит выключать их. Сомнительная нужность сегодня, когда многие DE в Linux умеют сохранять сеанс.

Когда оперативная память кончается, чтобы не возникла ошибка, нужен swap. Новые компы сегодня имеют по 16-32 гига, мало кто может заполнить их целиком. Возможно спецы в фото/видео или программисты, компиляция там, не знаю. Обычный пользователь никогда не заполнит столько. У меня редко выходит за пределы 3 гигов.

Может есть еще применение?

Из очевидных проблем:

В Linux традиционно при установке дистрибутивы советуют ставить размер swap равный размеру оперативки. Значит на новых компах надо будет отдавать уже 32 или 64 гига, которые никогда не будут использоваться. Не мало! А если это дорогущий SSD?

Кстати, про swap на SSD:

Warning: Although swap is generally recommended for systems utilizing traditional spinning hard drives, using swap with SSDs can cause issues with hardware degradation over time. Due to this consideration, we do not recommend enabling swap on DigitalOcean or any other provider that utilizes SSD storage.

Вообще не советуют включать swap на SSD, т.к. быстро угробит диск.

Получается, эпоха swap подходит в концу? А как же спящий режим и все такое?

Swap manjaro gnome

Устанавливаю manjaro gnome на ноутбук. При установке предлагает создать swap раздел на диске. Оперативки имеется 20gb. Вопрос нужно ли делать этот swap раздел? Нужен ли он вообще? И если делать то с гибернацией или без? До этого после установки была проблема что зависал ноутбук при выходе из ждущего режима, хотя создавал раздел swap с гибернацией

swap с гибернацией или без что лучше

Нужна гибернация — swap размером не менее оперативной памяти. Не нужна — swap размером в несколько гигабайт, например 4, можно файлом, а не разделом. Но swap нужен: https://unix.stackexchange.com/questions/190398/do-i-need-swap-space-if-i-hav.

swap с гибернацией или без что лучше

А можно swap в zram.

Вопрос нужно ставить так: как обрабатывать нехватку памяти?

Suspend to RAM, swap 256M

UPD: zswap, vm.swappiness=10

swap с гибернацией или без что лучше

Нужна гибернация — swap размером не менее оперативной памяти.

Необязательно. Записывается только используемая память и сжимается.

swap с гибернацией или без что лучше

Согласен. Вообще без свопа не хорошо, при нехватке будет раком вставать, а так полагает сначала, намекнёт тонко что память не резиновая.

swap с гибернацией или без что лучше

swap с гибернацией или без что лучше

А вот его бы я слушать стал только в случае, если нужен жёсткий узкоспециальный тюнинг, для общих случаев это весьма сомнительно.

Всегда можно потом сделать своп в файле, если что. На 2гиг озу без свапа жопа, а вот на 16гиг ещё ни разу мне не потребовался.

без свопа не хорошо, при нехватке будет раком вставать

с юзерспейсными киллерами не будет, при этом еще и не будет мучительного своппинга

для общих случаев отлично работает.

swap с гибернацией или без что лучше

Зато будет крашить нужный пользователю процесс

это дефолтный киллер нужные убивает, а юзерспейсные позволяют более тонко настраивать выбор жертвы, плюс сначала попытка корректного завершения через sigterm, плюс опция гуи уведомлений при нехватке памяти, чтоб юзер имел шанс самостоятельно отреагировать заранее, закрыв ненужные приложения.

Когда юзерспейного киллера нет, есть вероятность полного фриза, когда у юзера один выбор: hard reset с потерей данных.

Когда юзерспейного киллера нет, есть вероятность полного фриза

Открой для себя cgroups.

один выбор: hard reset с потерей данных

Открой для себя alt+sysrq+f.

Может вообще не срабатывать:

Ещё одно доказательство, что встройки для любителей страданий.

Глянь в Wiki.Arch или в другой документации. Там пишут, что Systemd может создавать в виде файла. По умолчанию размер 20℅, вроде. Но упоминают про проблемы с гибернацией от такого способа. И в ядре есть механизм работы практически напрямую с блоками swap-файла, но нужна поддержка в ФС, а в btrfs и f2fs добавили относительно недавно, а в большинстве же давно есть. А может и создавать zram, управлять zswap.

Для гибернации нужно только столько, чтобы влезла вся память. Стандартный минимум образа 40%, вроде, но можно подкрутить. Делай замеры и смотри значения без кэша, если место жалко. Еще swap хоть и даст место для хранения растекающейся памяти, но при больших потоках толку немного. Старый способ делать под 100%-200% и раньше не очень работал.

Тут zram предлагают, но этот вариант архитектурно немного кривоват и стоит его использовать если нужно обойтись без записи на диск, разве что. Лучше использовать zswap, который тоже сжимает страницы в память, но потом сжатыми же сбрасывает на диск.

В zram уже добавили witeback на физический диск, так что теперь разница между ним и zswap не очень ясна. Правда это нужно настраивать.

zram уже добавили witeback на физический диск

Оно нихрена не работает.

Бегло глянул. Ему нужен отдельное блочное устройство под backing storage, или он в swap может сбросить? Написано, что в файлы сбрасывать не может.

сжатыми же сбрасывает на диск.

SWAP для Linux

SWAP один из важных параметров для стабильной работы операционной системы Linux. Споров о том как правильно использовать в интернете существует масса. Для правильной настройки надо иметь понимание для чего используется ваша система.

Введение

Постараюсь коротко рассказать основные моменты которые надо учитывать и дать практические советы проверенные на личном опыте.

Нужен SWAP или нет?

Однозначно нужен! Можно обойтись и без него, но тогда имейте в виду, что:

Если в первом случае вы можете отказаться от использования режима сна, то во втором никто и никогда не даст вам гарантии что какая-то используемая вами программа не даст сбой и заполнив всю память не повесит систему.

Размер SWAP

Советов по размеру множество, но мы остановимся на советах разработчиков Red Hat (CentOS):

При современных объемах жестких дисков я бы не стал жалеть места на размер SWAP и уверяю вас что экономия места в данном случае может привести к гораздо большим проблемам.

Варианты размещения SWAP

Исторически в Linux SWAP размещался на разделе, но в современных дистрибутивах производительность SWAP-файла не уступает SWAP-разделу и это весьма радует.

SWAP-раздел

Когда вы точно знаете, что размер оперативной памяти меняться не будет и вы точно уверены в размере SWAP разумно выделить раздел при установке системы.

SWAP-файл

Использование файла очень удобно особенно когда нет точного понимания какие будут окончательные аппаратные параметры системы. Файл можно создать в любом удобном месте и необходимым вам размером. Ниже я расскажу как это сделать.

ZRAM и ZSWAP

Вариант с использованием этих вариантов требует наличие хорошего опыт в использовании Linux систем. На мой взгляд данный способ имеет смысл использовать с хорошим знанием системы на которой это будет работать.

ZRAM — это модуль ядра Linux, позволяющий сжимать содержимое оперативной памяти, и таким образом увеличивать ее объем в несколько раз. ZRAM создает сжатое блочное устройство в ОЗУ которое чаще всего используется как swap. При этом степень сжатия данных получается в среднем 3:1. Это означает что на 1 гигабайт подкачки будет использовано в 333 мегабайт физической памяти.

ZSWAP — отличается от ZRAM тем, что использует существующий swap-раздел на диске, а в ОЗУ создаётся пул со сжатыми данными (кэшем). После того как пул до отказа забьётся сжатыми данными, он сбросит их в раздел подкачки и снова начнёт принимать и сжимать данные. По утверждению разработчиков, в их конфигурации при компиляции ядра в ситуации когда происходит свопинг, выигрыш по объему ввода/вывода составил 76%, а время выполнения операции сократилось на 53%. При использовании ZSWAP, используется раздел swap на диске, в ОЗУ хранится только сжатый кэш.

Что такое Linux SWAP-раздел и что он делает?

Что такое Linux SWAP-раздел и что он делает?

В большинстве установок Linux рекомендуется включать раздел SWAP. Это может показаться странным для пользователей Windows, которые привыкли иметь всю свою операционную систему в одном разделе.

Так что же делает SWAP-раздел, нужен ли он вам, и какой он должен быть? Все это важные вопросы, которые при правильных ответах могут серьезно повысить производительность вашей системы.

Переполнение из памяти

linux_swap_ram

В простейшем смысле раздел SWAP действует как переполнение вашей (RAM) памяти. Если ваша память заполнена полностью, любые дополнительные приложения будут запускаться из раздела SWAP, а не из памяти.

Это звучит как простой способ увеличить объем используемой памяти без фактического увеличения объема ОЗУ, но это не так. ОЗУ — это идеальное аппаратное обеспечение для памяти, потому что оно чрезвычайно быстрое, в отличие от жестких дисков, которые, говоря условно, очень медленные. Благодаря появлению твердотельных накопителей производительность значительно снизилась благодаря их значительно улучшенным скоростям. , но даже они не могут соответствовать ОЗУ — плюс, вы не захотите вызвать дополнительный износ вашего твердотельного накопителя.

Самой близкой аналогией раздела SWAP будет файл подкачки Windows, хотя между ними есть много технических отличий.

Приоритезация

Раздел SWAP также может помочь перенести некоторые элементы из вашей памяти на жесткий диск, чтобы оставить больше места в памяти для более важных элементов. Это означает, что элементы, к которым редко когда-либо прикасаются, будут перемещены в раздел SWAP.

Порог того, что считается «редким», зависит от «перестановки» (да, это фактический используемый термин), который настраивается. Более высокая перестановка означает, что элементы с большей вероятностью будут перемещены в раздел SWAP; более низкая перестановка означает, что с меньшей вероятностью элементы будут перемещены в раздел SWAP.

Включает спящий режим

Наконец, раздел SWAP используется в качестве места назначения содержимого вашей памяти всякий раз, когда вы сообщаете своей системе о спящем режиме. Это означает, что без раздела SWAP гибернация в Linux невозможна.

Конечно, на самом деле пользователи редко используют функцию гибернации, поэтому для вас это может не иметь значения.

Вам нужен раздел SWAP?

линукс-своп-GParted

Значит ли это, что необходим раздел SWAP? Точно нет! Система Linux может работать отлично без раздела SWAP. Тем не менее, есть несколько преимуществ и недостатков его наличия.

  • Обеспечивает переполнение пространства, когда ваша память полностью заполняется
  • Может перемещать редко необходимые предметы из вашей высокоскоростной памяти
  • Позволяет вам впасть в спячку
  • Занимает место на жестком диске, поскольку разделы SWAP не изменяют размер динамически
  • Может увеличить износ вашего жесткого диска
  • Не обязательно улучшает производительность (см. Ниже)

Когда разделы SWAP не помогают

Какая? SWAP-разделы не всегда помогают улучшить производительность? Позвольте мне объяснить сценарий, в котором наличие раздела SWAP было на самом деле хуже, чем его отсутствие.

Я установил Linux на нетбук, который имел только 1 ГБ памяти и 5400 оборотов в минуту. Имея всего 1 ГБ памяти, вы можете себе представить, что она может быстро заполниться несколькими открытыми вкладками браузера. Раздел SWAP позволил мне сохранить их все открытыми, так как переполнение памяти просто пошло к нему.

Но затем возникло узкое место из-за скорости 5400 об / мин жесткого диска. Поскольку жесткий диск был очень медленным, и система постоянно хотела получить доступ к разделу SWAP, нетбук стал чрезвычайно, крайне вялым до такой степени, что стал практически непригодным для использования, если я не закрыл все, чтобы освободить часть памяти.

Установленная перестановка не гарантировала, что, несмотря на наличие свободного места в памяти, все в разделе SWAP будет перенесено обратно. Вместо этого большая часть этого осталась бы в разделе SWAP, из-за чего нетбук продолжал работать вяло. Это было исправлено только перезагрузкой, которая в любом случае заняла некоторое время, потому что система должна была удалить все из раздела SWAP перед выключением.

рекомендации

Итак, вот что я бы порекомендовал:

  • Если вы хотите иметь возможность переводить компьютер в спящий режим, у вас должен быть раздел SWAP. Размер этого раздела должен соответствовать размеру установленной памяти, плюс дополнительные 10-25%, чтобы оставить место для любых элементов, которые уже были перенесены в раздел SWAP.
  • Если вам просто нужно небольшое повышение производительности (и у вас есть как минимум 7200 об / мин жесткого диска), тогда вы можете добавить раздел SWAP, если хотите, но он не нужен, если у вас не менее 4 ГБ установленной памяти. Размер этого может быть любым, но вы бы не стали больше, чем вы, если бы создавали раздел SWAP для включения гибернации.
  • Если у вас жесткий диск 5400 об / мин, вам не следует создавать раздел SWAP просто потому, что узкое место ухудшит работу вашего компьютера. Однако, если вы абсолютно хотите иметь SWAP, вы все равно можете создать раздел, используя те же рекомендации по размеру, как описано выше, — но измените значение подкачки на что-то намного меньшее.

Изменение Swappiness

linux_swap_swappiness

Чтобы изменить swappiness, вам нужно запустить команду gksu gedit /etc/sysctl.conf которая запустит текстовый редактор с именем Gedit, фантастический gksu gedit /etc/sysctl.conf текстовый редактор gksu gedit /etc/sysctl.conf , для файла конфигурации нам нужно изменить. Затем найдите «vm.swappiness» и измените его на другое значение (предпочтительно 10). Если вы не видите этот параметр, добавьте эту строку в конец файла: vm.swappiness = 10

Введенное вами значение указывает, когда вы хотите, чтобы Linux начал активно перемещать процессы из памяти в раздел SWAP. Так, например, значение 10 указывает, что процессы будут перемещены, когда использование памяти достигнет 90%; значение перестановки по умолчанию в Ubuntu, равное 60, указывает, что процессы будут перемещены, когда использование памяти достигнет 40%.

Есть много других деталей, которые входят в это, но они только запутали бы вещи.

Вывод

Разделы SWAP могут существенно повлиять на производительность вашей системы — иногда в лучшую сторону, а иногда и в худшую. Теперь, когда вы хорошо образованы, вы сможете принимать правильные решения.

Ищете другие способы ускорить вашу систему Linux? Ознакомьтесь с этими четырьмя другими быстрыми и простыми советами.

Что вы слышали о разделах SWAP? Как вы думаете, они стоит использовать? Дайте нам знать об этом в комментариях!

Swap manjaro gnome

Устанавливаю manjaro gnome на ноутбук. При установке предлагает создать swap раздел на диске. Оперативки имеется 20gb. Вопрос нужно ли делать этот swap раздел? Нужен ли он вообще? И если делать то с гибернацией или без? До этого после установки была проблема что зависал ноутбук при выходе из ждущего режима, хотя создавал раздел swap с гибернацией

Нужна гибернация — swap размером не менее оперативной памяти. Не нужна — swap размером в несколько гигабайт, например 4, можно файлом, а не разделом. Но swap нужен: https://unix.stackexchange.com/questions/190398/do-i-need-swap-space-if-i-hav.

А можно swap в zram.

Вопрос нужно ставить так: как обрабатывать нехватку памяти?

Если нужна гибернация, то, конечно, нужен большой своп раздел. В остальных случаях своп на zram — хороший выбор.

Suspend to RAM, swap 256M

UPD: zswap, vm.swappiness=10

Нужна гибернация — swap размером не менее оперативной памяти.

Необязательно. Записывается только используемая память и сжимается.

Согласен. Вообще без свопа не хорошо, при нехватке будет раком вставать, а так полагает сначала, намекнёт тонко что память не резиновая.

Нужно zram, но без фанатизма. И на диске тоже немного свопа, и ещё есть приоритеты — кого использовать в первую очередь. zram должен идти вперёд диска разумеется.

А вот его бы я слушать стал только в случае, если нужен жёсткий узкоспециальный тюнинг, для общих случаев это весьма сомнительно.

Всегда можно потом сделать своп в файле, если что. На 2гиг озу без свапа жопа, а вот на 16гиг ещё ни разу мне не потребовался.

без свопа не хорошо, при нехватке будет раком вставать

с юзерспейсными киллерами не будет, при этом еще и не будет мучительного своппинга

для общих случаев отлично работает.

Зато будет крашить нужный пользователю процесс. Этот анальный костыль вообще то для энтерпрайз-серверов был придуман, где внезапная нехватка памяти это повод к скорейшему перезапуску.

Зато будет крашить нужный пользователю процесс

это дефолтный киллер нужные убивает, а юзерспейсные позволяют более тонко настраивать выбор жертвы, плюс сначала попытка корректного завершения через sigterm, плюс опция гуи уведомлений при нехватке памяти, чтоб юзер имел шанс самостоятельно отреагировать заранее, закрыв ненужные приложения.

Когда юзерспейного киллера нет, есть вероятность полного фриза, когда у юзера один выбор: hard reset с потерей данных.

Этот анальный костыль вообще то для энтерпрайз-серверов был придуман, где внезапная нехватка памяти это повод к скорейшему перезапуску.

oomd для серверов, earlyoom и nohang для десктопа — последние аккуратно завершают отдельные процессы, а не убивают целые сигруппы, как оомд

Когда юзерспейного киллера нет, есть вероятность полного фриза

Открой для себя cgroups.

один выбор: hard reset с потерей данных

Открой для себя alt+sysrq+f.

контрольные группы — не замена киллера. У киллера доп плюшки. Киллер удобнее, в конце концов.

Может вообще не срабатывать:

Ещё одно доказательство, что встройки для любителей страданий.

Глянь в Wiki.Arch или в другой документации. Там пишут, что Systemd может создавать в виде файла. По умолчанию размер 20℅, вроде. Но упоминают про проблемы с гибернацией от такого способа. И в ядре есть механизм работы практически напрямую с блоками swap-файла, но нужна поддержка в ФС, а в btrfs и f2fs добавили относительно недавно, а в большинстве же давно есть. А может и создавать zram, управлять zswap.

Для гибернации нужно только столько, чтобы влезла вся память. Стандартный минимум образа 40%, вроде, но можно подкрутить. Делай замеры и смотри значения без кэша, если место жалко. Еще swap хоть и даст место для хранения растекающейся памяти, но при больших потоках толку немного. Старый способ делать под 100%-200% и раньше не очень работал.

Тут zram предлагают, но этот вариант архитектурно немного кривоват и стоит его использовать если нужно обойтись без записи на диск, разве что. Лучше использовать zswap, который тоже сжимает страницы в память, но потом сжатыми же сбрасывает на диск.

Гибернация для ноутбуков не очень нужна, если ждущий режим нормальный — не садит почти батарею и не просыпается сам.

В zram уже добавили witeback на физический диск, так что теперь разница между ним и zswap не очень ясна. Правда это нужно настраивать.

zram уже добавили witeback на физический диск

Оно нихрена не работает.

Бегло глянул. Ему нужен отдельное блочное устройство под backing storage, или он в swap может сбросить? Написано, что в файлы сбрасывать не может.

сжатыми же сбрасывает на диск.

может сбрасывать и на своп раздел, и на отдельное. Есть риск повреждения раздела, если это не своп-раздел.

Гибернация для ноутбуков не очень нужна

как раз для них и нужна, ибо стационарные всегда подключены к сети, а аккумуляторы разряжаются при ждущем режиме

это дефолтный киллер нужные убивает, а юзерспейсные позволяют более тонко настраивать выбор жертвы

Суть в том, что они с вероятностью 99% все нужные и никого убивать не надо. И это не жёсткий энтерпрайз и реалтайм, опять же с вероятностью 99% достаточно просто подождать 10 секунд или 5 минут, и дополнительные гигабайты свопа позволят сделать невозможное и поехать дальше.

Когда юзерспейного киллера нет, есть вероятность полного фриза, когда у юзера один выбор: hard reset с потерей данных.

Да, вероятно такая вероятность действительно есть. Но на 1000 обычных тормозов приходится сколько хард ресетов? Если не отказываться от обыкновенного свопа на диске, то явно меньше 1. Если отказаться, вот тогда да, можно и такое словить.

Насчёт zswap: я пока ещё не видел нормальных боевых сравнений их эффективности. Теоретически идея zswap более правильная, но никаких серьёзных изменений при переходе на него не чувствуется. Как будто дисковый свопинг даже активней.

c вероятностью 90% можно безболезненно прибить большую часть вкладок браузера и висящее в фоне незакрытое приложение, завершение которого не приведет к необратимым изменениям

с вероятностью 99% достаточно просто подождать 10 секунд или 5 минут, и дополнительные гигабайты свопа позволят сделать невозможное и поехать дальше

earlyoom стреляет при нехватке в том числе свопа. nohang может реагировать на давление памяти при своппинге, можно задать любую продолжительность высокого давления, после которого будет коррекция, дефолт 30 сек заморозки (или почти заморозки). — Думаю это разумное значение для большинства. При больших значениях юзеры нервничают и тянут руку к reset.

Это кем вообще надо считать пользователя, чтобы признавать открытые им вкладки и приложения ненужными? Кстати, в файерфоксе например нельзя убить одну вкладку, упадёт хз что и много.

Я могу ещё понять рассылку сигналов заморозки, но не килл.

Это кем вообще надо считать ящерицу, чтобы признавать ее хвост ненужным?

Кстати говоря, сами разрабы хрома выставляют процессам вкладок oom_score_adj=300, чтоб вкладки падали первыми.

Кстати, в файерфоксе например нельзя убить одну вкладку,

можно, если открыта одна вкладка. Так-то один Web Content обычно несколькими вкладками управляет.

Я могу ещё понять рассылку сигналов заморозки, но не килл.

Может и ядерный киллер запретить?

Я могу ещё понять рассылку сигналов заморозки, но не килл.

А можете ли понять заморозку на неограниченное время? такое тоже бывает. Так говорите, будто без килл система сама восстановится, никого не убив.

Вам что, кнопку «сделать мне хорошо», или возможность разрулить кризис без потерь? Если разрулить без потерь, то точно не надо мочить процессы направо и налево. Если сделать хорошо одной кнопкой. то для начала надо купить мак про в максимальной комплектации.

Без потерь не всегда возможно. Но нужно стараться минимизировать потери. Во многих случаях завершение 1 процесса — это и есть минимальная потеря, достаточная для восстановления управляемости системы.

Swap с гибернацией или без что лучше

SWAP – один из механизмов виртуальной памяти, при котором отдельные фрагменты памяти (обычно неактивные) перемещаются из ОЗУ во вторичное хранилище (отдельный раздел или файл), освобождая ОЗУ для загрузки других активных фрагментов памяти.

Более подробно о механизме своппинга можно прочитать в Википедии.

Дополнительно SWAP используется при организации режима сна (hibernation или suspend to disk). При этом в SWAP сохраняется образ оперативной памяти.

Размещение

SWAP может быть размещен на разделе диска, в файле или в RAM. Исторически в Linux SWAP размещался на разделе, но в современных дистрибутивах производительность SWAP-файла не уступает SWAP-разделу. Однако стандартный установщик Ubuntu (до версии 17.04) не умеет создавать SWAP-файл при установке и выдает предупреждение, если SWAP-раздел не определен при разметке диска. Начиная с версии 17.04, Ubuntu предлагает по умолчанию создавать SWAP в файле (объем определяется как 5% от свободного на диске места, но не более 2 Гб). Использование SWAP-файла имеет некоторые преимущества: он не занимает отдельный раздел, его легко создать, изменить его размер или удалить.

Дополнительно при выборе размещения SWAP нужно учитывать, что не все файловые системы позволяют использовать прямую адресацию блоков SWAP-файла. Так, к примеру, нельзя использовать SWAP в файле на разделе с файловой системой btrfs(по состоянию на середину 2017).

Безопасность

При работе с секретными/зашифрованными данными часть этих данных в процессе работы либо при гибернации может оказаться в SWAP в расшифрованном виде. В таких случаях рекомендуется шифровать не только данные, но и сам SWAP. Однако нужно учитывать, что у режима сна при шифровании SWAP могут возникнуть сложности.

Размер

В Интернете можно найти множество рекомендаций по определению размера SWAP, однако универсального ответа не существует.

При определении размера SWAP следует учесть следующие аспекты:

В зависимости от ответов на эти вопросы рекомендации по размеру SWAP будут значительно различаться.

Для машин с незначительным объемом памяти (меньше 2 Гб) рекомендуется создавать SWAP размером от 1,5 до 2-х размеров оперативной памяти. И стоит попробовать изменять vm.swappiness, но лучше поискать возможность увеличить объем оперативной памяти.
Для машин с объемом памяти 3-4 Гб нужно решить, будет ли использоваться suspend to disk. Если да, то нужно создавать SWAP размером на 10-15% больше размера оперативной памяти. Если же suspend to disk использоваться не будет, то можно создать SWAP небольшого размера (размером от половины до 1 объема оперативной памяти). Можно не создавать SWAP при установке системы, а при необходимости добавить его позже как файл.
На компьютерах с объемами оперативной памяти более 6Gb имеет смысл создать SWAP размером в половину от объема оперативной памяти. При этом, если вы хотите использовать гибернацию, следует оценить загрузку оперативной памяти в процессе работы и задать величину SWAP, исходя из этого. К примеру, если объем оперативной памяти составляет 16 ГБ, а рабочая загрузка не превышает в среднем 5-6 ГБ, величины SWAP-раздела в 8 ГБ вам хватит для гибернации. При таком подходе следует помнить, что при использовании ресурсоёмких программ (рендеринг изображения, компиляция огромных проектов и т.п.) оперативная память может заполняться полностью, а SWAP — использоваться в качестве подкачки. В таких ситуациях размер SWAP нужно выбирать индивидуально.

При работе с секретными (зашифрованными) данными стоит либо шифровать SWAP, либо рассмотреть вариант с отказом от SWAP вовсе (зависит от размера оперативной памяти). Стоит также рассмотреть вариант с шифрованием всего диска.

Создание SWAP на разделе диска

Разобравшись с требованиями к SWAP, можно приступить к его созданию или изменению.
Ядро Linux может работать с несколькими частями SWAP. Поэтому если вы решили, что созданного при установке системы SWAP-раздела недостаточно, то стоит создать дополнительный SWAP (выделить место под раздел или файл). Однако нужно учитывать, что для гибернации нужен непрерывный блок SWAP, который должен иметь размер больший, чем оперативная память.
К примеру, у нас есть раздел /dev/sdc2 (ваше имя раздела может отличаться). Создадим на нем необходимую структуру данных для работы SWAP:

Подключим раздел как SWAP:

Проверить результат можно, посмотрев на вывод команды

Сделаем автомонтирование SWAP-раздела при запуске системы. Узнаем UUID раздела:

Теперь пропишем строку в /etc/fstab

SWAP с динамически изменяемым размером

Если вы не хотите думать об объеме SWAP, имеет смысл воспользоваться утилитой swapspace (динамический менеджер подкачки). Эта утилита работает в фоновом режиме и динамически управляет подкачкой. При необходимости swapspace автоматически создаёт дополнительные файлы подкачки требуемого размера. Неиспользуемые файлы подкачки удаляются и не занимают место.
Однако, если вы работаете с секретными документами, не забудьте указать swapspace создавать SWAP-файлы на зашифрованном диске или внутри шифрованного контейнера 1) .

Hibernate (suspend to disk, гибернация)

О настройке режима гибернации можно прочитать здесь.

Параметр vm.swappiness

Основной параметр, влияющий на работу системы со swap, — это vm.swappiness. Очень приблизительно этот параметр можно определить так: он задает процент свободной оперативной памяти, при котором начинается использование подкачки. Более точное определение смысла этой переменной можно уяснить из описания которое было дано в рассылке kernel.org — статья на английском.
Без особой необходимости трогать его не рекомендуется.

Скорректировать значение, применяемое при загрузке системы, можно, указав в файле /etc/sysctl.conf значение vm.swappiness. Пример:

Мгновенно применить эту настройку можно с помощью следующей команды:

Актуальное значение, используемое ядром в настоящее время, можно просмотреть или изменить в /proc/sys/vm/swappiness.

Изменения в /proc/sys/vm/swappiness будут сброшены при следующей перезагрузке.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *