Проблемы с гибернацией на ноутбуке / ПК во время использования высокой ОЗУ

В течение нескольких дней / месяцев я пытался найти решение для спячки во время использования высокой ОЗУ на моем ноутбуке – Toshiba Satellite L50-B-1K6. Я столкнулся с аналогичными проблемами на своем настольном ПК.

Моя конфигурация оборудования:

$ inxi -Fx Machine: System: TOSHIBA (portable) product: SATELLITE L50-B v: PSKTCE-02G009Y4 Mobo: Type2 - Board Vendor Name1 model: Type2 - Board Product Name1 v: Type2 - Board Version Bios: INSYDE v: 1.70 date: 08/14/2014 Battery BAT1: charge: 7.2 Wh 29.5% condition: 24.2/30.0 Wh (81%) model: LGC PA5186U-1B status: Discharging CPU: Dual core Intel Core i5-4210U (-HT-MCP-) cache: 3072 KB flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx) bmips: 9580 clock speeds: max: 2700 MHz 1: 1697 MHz 2: 1615 MHz 3: 1279 MHz 4: 1700 MHz Graphics: Card-1: Intel Haswell-ULT Integrated Graphics Controller bus-ID: 00:02.0 Card-2: Advanced Micro Devices [AMD/ATI] Jet PRO [Radeon R5 M230] bus-ID: 09:00.0 Display Server: X.Org 1.17.4 driver: intel Resolution: 1366x768@60.01hz GLX Renderer: Mesa DRI Intel Haswell Mobile GLX Version: 3.0 Mesa 12.0.1 Direct Rendering: Yes Audio: Card-1 Intel 8 Series HD Audio Controller driver: snd_hda_intel bus-ID: 00:1b.0 Card-2 Intel Haswell-ULT HD Audio Controller driver: snd_hda_intel bus-ID: 00:03.0 Sound: Advanced Linux Sound Architecture v: k4.7.2-1-MANJARO Network: Card-1: Intel Wireless 3160 driver: iwlwifi bus-ID: 07:00.0 IF: wlp7s0 state: up mac: 30:3a:64:ef:d2:29 Card-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller port: 4000 bus-ID: 08:00.0 IF: N/A state: N/A speed: N/A duplex: N/A mac: N/A Drives: HDD Total Size: 1000.2GB (3.8% used) ID-1: /dev/sda model: HGST_HTS541010A9 size: 1000.2GB Partition: ID-1: / size: 19G used: 13G (69%) fs: ext4 dev: /dev/sda11 ID-2: /home size: 29G used: 15G (54%) fs: ext4 dev: /dev/sda12 ID-3: swap-1 size: 9.01GB used: 0.00GB (0%) fs: swap dev: /dev/sda1 Sensors: System Temperatures: cpu: 46.0C mobo: N/A gpu: N/A Fan Speeds (in rpm): cpu: N/A 

Доступная оперативная память – 4 ГБ. Раздел SWAP составляет 9 ГБ.

Спящий режим в основном зависит от вашей конфигурации HW (моя ошибка, конечно, была покупка Toshiba) и версия ядра.

Моя текущая версия ядра:

 4.7.2.1 

У меня были аналогичные проблемы со старыми версиями ядра (4.1, 4.4, 4.6, …).

Пробовал различные методы гибернации без везения:

 $ systemctl hibernate $ sudo sh -c "echo disk > /sys/power/state" $ pm-hibernate $ s2disk - TuxOnIce kernel 

Проблема всегда схожа – спящий режим является достаточным, когда мой объем использования ОЗУ низкий, например 500 МБ (12,5%).

Но когда я запускаю firefox (или какую-то другую программу с высокой оперативной памятью – 50% оперативной памяти) и хочу спящий режим, я столкнулся с следующей проблемой.

Во время возобновления (оттаивания) пространство подкачки накапливается, а гибернация в конечном итоге терпит неудачу – после 3-7 спящих режимов.

Система будет спячки успешно, но когда я пытаюсь включить ноутбук, он перезапускается вместо возобновления (оттаивания).

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

Этот вопрос также можно найти по адресу:
https://ubuntuforums.org/showthread.php?t=1796851
https://www.kubuntuforums.net/showthread.php?59209-swap-gradually-filling-after-hibernate-resume

Я напишу об этом решении, и надеюсь, что вы опубликуете свои трюки – как вам удалось это исправить.

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

    Таким образом, решение состоит в том, чтобы вручную удалить swap partiton после возврата из спящего режима ( https://ubuntuforums.org/showthread.php?t=1796851&p=11011907#post11011907 ).

    Я добавил функцию в свой ~/.bashrc чтобы справиться с этим:

     function nk-hibernate() { sudo sh -c "echo disk > /sys/power/state" # setsid i3lock -c 117864 # lock screen with tool of your choice sudo swapoff -a sudo swapon -a } 

    Предупреждение – swapoff может быть очень медленным! Как может быть медленным?

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

     $ nk-hibernate 

    После возобновления спящего режима swap очищается (swapoff), а затем снова активируется (swapon), чтобы снова спящий режим.

    Если кто-нибудь знает лучшее решение, пожалуйста, поделитесь.

    EDIT : Как упоминал @sourcejedi, это не решает проблему полностью. У меня была ситуация, когда ноутбук перезагружается через некоторый период (10 + спящий режим). Это просто ускоряет работу машины после возобновления спящего режима