Macbook 需要 20 秒才能喚醒

Macbook 需要 20 秒才能喚醒

Macbook Air 上的 Kubuntu 20.04 暫停正常,但每次喚醒時間太長,約 20 秒。

systemctl suspend鑑於觸發相同的行為,這似乎是正常掛起/睡眠而不是休眠的情況。

運行它,醒來然後運行

journalctl -b --since "1min ago"

我明白了(關於巴斯德賓)。那裡沒有提到冬眠。

至於記憶體和交換區,我認為RAM夠了:

~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           3,8Gi       703Mi       1,7Gi       162Mi       1,4Gi       2,7Gi
Swap:          2,0Gi       440Mi       1,6Gi

答案1

簡短回答:

22.04 中:

echo deep | sudo tee -a /sys/power/mem_sleep

如果上述方法在 22.04 中不起作用或在 22.10、23.04 或更高版本中發生這種情況:

echo s2idle | sudo tee -a /sys/power/mem_sleep

該解決方案可能會在內核更新後停止工作,甚至在重新啟動後也可能停止工作,因此帶有所需命令的腳本可以在重新啟動時運行

第一部分有點矛盾,因為deep應該總是觸發長喚醒和s2idle短喚醒,如上所述這裡。我的 22.04 可能存在一些問題,至少有時情況顯然相反。


長答案:

發布這個問題後不久,我偶然發現了一個似乎有效的解決方案:在 ubuntuforums 上這裡,並提供更多建議來回复,這裡

我不太明白這是如何工作的,可能涉及一個錯誤。那篇文章說解決方案是/sys/power/mem_sleep從切換s2idledeep.我不清楚這一點,因為查找該文件時它包含這一行:

s2idle [deep]

意思就是deep 已被選中(!!) - 更不用說,如上所述,相反的行為是可以預料的。 —

在詢問之後我明白了該命令的作用這裡

按照最初的 ubuntuforums 評論中的指示,我沒有嘗試更改該文件,但我使用了該命令(也基於第二條評論):

echo deep | sudo tee -a /sys/power/mem_sleep

再次查看該文件,它似乎沒有變化。即使重新啟動後它仍然存在s2idle [deep],但此時從掛起狀態喚醒是瞬時的! (據我所知,正如前面所說,這與預期相反:deep應該意味著長時間的醒來!)

該命令似乎沒有更改該文件,但是某物已更改 - 是否與該文件相關。

[s2idle] deep使用相應的命令將其更改為echo s2idle | sudo tee -a /sys/power/mem_sleep(為了對此進行一些調查,如與連結問題相關的評論中所討論的)20秒長時間喚醒問題確實不是再現。

也許是一些我無法追蹤的錯誤在起作用。

一些核心更新後,最初的問題再次出現並以相同的方式修復。 (事實上,該文件/sys/power/mem_sleep已經採用了該命令應該觸發的形式,但仍然需要後者。)


更新(2022 年 10 月 24 日):

新的更新後,上述解決方案不再起作用 - 但相反的解決方案卻起作用了:echo s2idle | sudo tee -a /sys/power/mem_sleep,這相當於執行相反我的消息來源促使我做什麼。

當時這對我來說似乎很奇怪,但現在我明白了,事實上這一直是預期的行為:之前發生的事情很奇怪而且有問題,而新的更新已經解決了這個問題;s2idle應該證明快速喚醒。

更新到“正常”22.10 版本後,問題似乎修復了一段時間,而文件/sys/power/mem_sleep看起來重置為deep.但 20 秒喚醒延遲問題再次出現,並按照上面的更新 2 中的說明進行了修復。 ,第一個命令沒有幫助,第二個命令有幫助(2023 年2 月)。


因為這個問題仍然存在(例如在 23.04 中 - 並且在更新之間相當頻繁地重新出現),我設置了一個更快速的過程來從應用程式啟動器運行該命令,創建以下fix_suspend形式的腳本文件:

#!/bin/sh
echo s2idle | sudo tee -a /sys/power/mem_sleep

和一個包含以下行的文件~/.local/share/applications/Fix suspend.desktop(適用於 Plasma):

Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true /path/to/fix_suspend

一段時間後,解決方案在重新啟動後停止工作,因此我必須使腳本在重新啟動時運行,如開頭的簡短答案所示。

相關內容