LINUX.ORG.RU

Подключение свопа только для гибернации

 , ,


0

2

Привет, ЛОР

Захотелось мне волшебства, чтобы своп-файл подключался автоматически перед гибернацией, а при выходе из неё отключался. Использую uswsusp и systemd-hibernation, полагаю, что нужно добавить swapon /swapfile и swapoff -a в сей юнит

cat /etc/systemd/system/systemd-hibernate.service.d/override.conf 
[Service]
ExecStart=
ExecStartPre=-/usr/bin/run-parts -v -a pre /usr/lib/systemd/system-sleep
ExecStart=/usr/bin/s2disk
ExecStartPost=-/usr/bin/run-parts -v --reverse -a post /usr/lib/systemd/system-sleep

А вопрос к спецам системд такой, как сделать правильно?


Ответ на: комментарий от Samamy

Вы хотите чтобы swap использовал только hibernate

Да, но после гибернации в свопе остаются страницы и они используются

free -m
              total        used        free      shared  buff/cache   available
Mem:           7836        1137        5176         171        1522        6218
Swap:          8191        1336        6855

Я хочу, чтобы ВСЁ содержимое свопа после гибернации возвращалось в озу

Почему меня это волнует — система стоит на SSD

Fake ()
Ответ на: комментарий от Fake

Почему меня это волнует — система стоит на SSD

Да сколько блин можно? Просто пользуйтесь SSD, они, черт возьми, уже (ДАВНО) надежные!

abs ★★★ ()
Ответ на: комментарий от Fake

Я хочу, чтобы ВСЁ содержимое свопа после гибернации возвращалось в озу

может не пользоваться гибернацией, а использовать суспенд, не?

bass ★★★★★ ()
Последнее исправление: bass (всего исправлений: 1)
Ответ на: комментарий от Fake
Ответ на: комментарий от bass

А, suspend2ram, он же просто suspend использую,когда ненадолго отхожу от ноутбука, соответственно, suspend2disk на ночь/сутки/время отсутствия неизвестно

Fake ()
Ответ на: комментарий от Fake

Когда же вы уже кончитесь, сберегатели ресурса ссд.

Deleted ()
Ответ на: комментарий от Samamy

Так вы пробовали с sysctl vm.swappiness=0 ?

Да. Срабатывает до ребута. Внести vm.swappiness=0 в /etc/sysctl.d/99-sysctl.conf устанавливает значение. Но всё равно

free -m #сразу после выхода из гибернации
              total        used        free      shared  buff/cache   available
Mem:           7836         412        7031          80         392        7088
Swap:          8191         608        7583


free -m # спустя 15~20 минут
              total        used        free      shared  buff/cache   available
Mem:           7836        1173        6086         110         576        6299
Swap:          8191         565        7626

Да и вообще почитайте за что отвечает параметр swapness

Я в курсе, за что он отвечает. Вопрос то был «Куда внести swapon и swapoff в systemd-юните ответственном за гибернацию?»

Fake ()
Ответ на: комментарий от Fake

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

papin-aziat ★★★★ ()
Ответ на: комментарий от Fake

Я в курсе, за что он отвечает. Вопрос то был «Куда внести swapon и swapoff в systemd-юните ответственном за гибернацию?»

Видимо здесь нет людей разбирающих в systemd, придется разбираться самому https://www.freedesktop.org/software/systemd/man/systemd.service.html
Хотя странно что с vm.swappiness=0 swap полностью не очищается, у меня на devuan работает

Samamy ★★ ()
Последнее исправление: Samamy (всего исправлений: 1)

Не понял в чем проблема. После вейкапа страницы в свапе сами переползают в озу по мере необходимости. Свапинес в 0 и все. Свап не используется как озу, страницы в свапе обновляться не будут. Если страница потребуется - она переползет в озу

vova7890 ★★★ ()
Ответ на: комментарий от vova7890

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

Legioner ★★★★★ ()
Ответ на: комментарий от Legioner

Если свап на ссд, то подтормаживаний не заметно особо. С хдд - да, проще было заставить его вылезти со свапа полностью. На сколько я помню, tux on ice(хз на сколько оно живо) - просыпался с пустым свапом, тобишь все сразу уходило в озу

vova7890 ★★★ ()

Извините за нескромный вопрос. А на фуя? 2 гб на ссд жалко?

yvv ★★☆ ()
Ответ на: комментарий от bass

То, что нужно. Только где я накосячил?

cat /etc/systemd/system/before-hibernate.service 
[Unit]
Description=Before Hibernate
Before=hibernate.target

[Service]
Type=oneshot
ExecStart=/usr/bin/swapon /swapfile

[Install]
WantedBy=hibernate.target% 
не отрабатывает
journalctl -f
мар 26 01:09:46 fake systemd-logind[625]: Power key pressed.
мар 26 01:10:08 fake polkitd[633]: Registered Authentication Agent for unix-process:2465:119135 (system bus name :1.279 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale ru_RU.utf8)
мар 26 01:10:08 fake polkitd[633]: Unregistered Authentication Agent for unix-process:2465:119135 (system bus name :1.279, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale ru_RU.utf8) (disconnected from bus)
мар 26 01:10:13 fake dbus-daemon[620]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.5' (uid=0 pid=624 comm="/usr/bin/NetworkManager --no-daemon ")
мар 26 01:10:13 fake dbus-daemon[620]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.resolve1.service': Unit dbus-org.freedesktop.resolve1.service not found.

при этом

cat /etc/systemd/system/after-hibernate.service 
[Unit]
Description=On Resume
After=hibernate.target

[Service]
Type=oneshot
ExecStart=/usr/bin/swapoff -a

[Install]
WantedBy=hibernate.target%
работает
journalctl -r
...
мар 26 00:55:27 fake kernel: audit: type=1131 audit(1553550927.710:56): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=after-hibernate comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=su>
мар 26 00:55:27 fake kernel: audit: type=1130 audit(1553550927.710:55): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=after-hibernate comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=su>
мар 26 00:55:27 fake systemd[1]: Started On Resume.
мар 26 00:55:27 fake systemd[1]: after-hibernate.service: Succeeded.
мар 26 00:55:27 fake systemd[1]: swapfile.swap: Succeeded.
мар 26 00:55:27 fake systemd[716]: swapfile.swap: Succeeded.
мар 26 00:55:27 fake audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=after-hibernate comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
мар 26 00:55:27 fake audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=after-hibernate comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
...

Fake ()
Ответ на: комментарий от Fake

соответственно, suspend2disk на ночь/сутки/время отсутствия неизвестно

Зачем? Что мешает сделать suspend to ram на сутки / неделю / месяц?

aquadon ★★★★★ ()

Использовал Swap с vm.swappiness=100, в том числе для гибернации, четыре с небольшим года (с декабря 2014 по февраль 2019). Ресурс SSD (какой-то OEM'ный Samsung) — 99.5%.

Сейчас поменял SSD на больший и использую в таком же режиме, старый утащил в настольный ПК, где использую для кэширования медленного HDD. Если интересно — могу вечером снять SMART-атрибуты и закинуть сюда.

spijet ★★★ ()
Ответ на: комментарий от Fake

Аккумулятор ресурс не выработал? Кто производитель ноутбука (не Asus)? Периодически подключать к сети не получится?

anymouze ★★ ()
Ответ на: комментарий от aquadon

Один из ноутбуков лежит в suspend to ram уже не меньше 2-3 недель. Только что проверил, 80% заряда.

aquadon ★★★★★ ()
Ответ на: комментарий от Fake

Power Management
If the laptop seems to have an high drain when in sleep mode. As a possible workaround, you can set the machine to enter S3 deep sleep mode. Add quiet mem_sleep_default=deep to the Kernel parameters.

According to the manufacturer (see this upstream kernel bug), the machine uses S2 intentionally instead of S3, and they are working towards fixing the power drain on S2.

Note: on older BIOS and/or kernel versions the power button cannot be used to wake the laptop from sleep. In this case the Sleep button (Fn + End, or just End if you have Fn lock enabled) can still wake up the machine. This has been fixed by a BIOS update.

Это с Arch wiki для XPS 9370. Ищи подобную информацию о своей машине.

aquadon ★★★★★ ()
Ответ на: комментарий от anymouze
acpi -i
Battery 0: Discharging, 43%, 02:34:49 remaining
Battery 0: design capacity 2759 mAh, last full capacity 2436 mAh = 88%

Lenovo

Периодически подключать к сети не получится?

А кто ж знает. Ни в чём нельзя быть уверенным:)

Fake ()
Ответ на: комментарий от Fake

А кто ж знает. Ни в чём нельзя быть уверенным:)

да, забыть легко :( Нужно искать по модели из-за чего может может «уходить» заряд и есть ли решение (больше пока идей нет).

anymouze ★★ ()
Ответ на: комментарий от Fake

Немного потерялся с ответом, сорри. Вот так выглядит SMART у старого SSD сейчас (используется под своп и кэш большого HDD на настольном компе с оффтопиком), а вот так выглядит новый SSD в ноуте (использую с января, LUKS, BTRFS + XFS, swap).

spijet ★★★ ()
Ответ на: комментарий от Fake

В общем, никакой беды сейчас с этим нет, тем более на самсунгах. :)

spijet ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.