Swap

為什麼從休眠狀態恢復需要 10 分鐘,如何避免這種情況?

  • February 12, 2019

我正在使用核心 4.4.0-116-generic(但早期版本也是如此)和 16 GB RAM 執行 XUbuntu 16.04。我使用的是“傳統”硬碟驅動器(無 SSD),而我的 swappiness 為 0(RAM 很少滿)。

我在休眠時遇到了以下情況:休眠正常需要不到 2 分鐘,但從它恢復需要很多很多時間,直到應用程序響應(今天需要 10 多分鐘才能到達 light-locker 提示)。

我不認為這是可用的(從休眠狀態恢復比啟動到新會話並重新打開程序需要更多時間)。

我怎樣才能提高性能?我是唯一遇到這些問題的人嗎?

誠然,現在的記憶體使用量是 8.8 GB,但讓我煩惱的是休眠和恢復時間之間的差異。我從其他問題中了解到,這可能是因為在休眠期間,核心凍結了所有程序並將 RAM 整塊轉儲到交換,而在恢復時它只是讓程序在交換中請求它們的頁面。

這是一個有效的解釋嗎?如果是這樣,為什麼要這樣做,因為從硬碟驅動器讀取大塊比隨機訪問更快?我可以將休眠配置為不以這種方式進行嗎?問題“在從休眠狀態恢復時恢復記憶體中/交換頁面狀態”似乎相關,但我不知道足夠多的頁面來真正理解它們是否在做什麼(“注意標記哪些頁面在磁碟上和在RAM,然後在恢復時恢復這個確切的狀態”)很有用,我也不知道該怎麼做。

我認為您的經歷對於冬眠也很常見。磁碟掛起,尤其是在使用旋轉磁碟時。

核心文件中,提到了一種解決方法,它似乎與您發布的連結的想法有關。如果我做對了,這只會立即清空交換,而不是逐步恢復。但它仍然必須讀取所有使用的交換,並且可能需要一些時間。

Q: 恢復後,系統頻繁分頁,導致互動性很差。

答:試試跑步

貓 /proc/

$$ 0-9 $$/地圖 | grep / | sed 的:。/:/:’ | 排序-u | 讀取文件時做測試 -f " $ file" && cat " $ 文件” > /dev/null 完成 簡歷後。交換 -a; swapon -a 也可能有用。

您可能想要測試的是suspend-to-ramsuspend-to-both ,這在Arch Wiki中有很好的解釋。基本上:

  • suspend-to-ram不會關閉電腦電源,而是將其置於省電模式。如果電池電量耗盡,則狀態會失去並可能導致問題
  • suspend-to-both類似於suspend-to-ram,但也將狀態保存到swap中,這樣可以在電池耗儘後恢復

根據您的環境,如何啟動掛起/休眠方法,您可以配置它,例如在 XFCE 中使用xfce4-power-manager GUI。

引用自:https://unix.stackexchange.com/questions/429882