如何調試緩慢的休眠狀態

如何調試緩慢的休眠狀態

我有幾台 PC/筆記型電腦運行最新的 Ubuntu 20.04,目前使用預設 Ubuntu 儲存庫提供的 64 位元核心 5.4.0-74-generic。其中一台是一台相當普通的配備 Intel i3 CPU 的 PC,自從我從 18.04 升級到 20.04 以來,它需要 2 分鐘多一點的時間才能休眠。

我發現的各種有關調試休眠的資源主要涵蓋喚醒或完全掛起失敗,但不包括需要很長時間的掛起到磁碟。喚醒效果很好,只需幾秒鐘。我怎麼知道是什麼需要這麼久的冬眠?有沒有類似systemd-analyze blame冬眠的東西?

到目前為止,我添加了initcall_debug no_console_suspendinGRUB_CMDLINE_LINUX_DEFAULT並且/etc/default/grub它確實顯示了控制台,但是,沒有顯示任何內容來解釋這麼長時間。它顯示網路介面的「偵測到硬體單元掛起」。但這是在冬眠開始時出現的,我想這是預期的行為。

我用來systemctl hibernate啟動它。即使在控制台上以 root 身份運行且沒有其他登入使用者或使用者進程,也需要 2 分鐘才能關閉電源。

答案1

我的建議:

  1. 決定要問@askubuntu.com並認真對待它;)收集數據,用最少的設定重現問題,並且要具體。

  2. 確保有足夠的交換空間。此指令free給出 RAM (“Mem”) 和 Swap 的數量。交換空間總量應大於 RAM 總量。我意識到我在某個時候添加了 RAM,但我沒有增加交換分區的大小。編輯(2021-06-07):大小差異約 1GB。增加大小後,休眠速度反覆加快,但我仍然認為這是由於保存交換分區的 SSD 的寫入速度發生變化而導致的。 (另請參閱下一點。)

  3. 冬眠應該要多快?本質上,在掛起到磁碟期間,所有 RAM 都會寫入磁碟。 RAM 的大小和磁碟的寫入速度決定了所需的時間。我查找了我的交換分區,並檢查了使用 來將其歸零需要多長時間dd if=/dev/zerodd據報道,速度為 108 MB/s。寫入 7 GB 大約需要 65 秒。我的電腦有 8 GB。因此,我預計休眠至少需要一分鐘。

  4. 嘗試透過刪除部件進行調試系統的:分離不需要的硬體。全新啟動後立即休眠,無論是否先登入。

  5. 添加initcall_debug no_console_suspend到問題中描述的內核命令行。

現在,我猜我經歷緩慢休眠的原因是:我添加了RAM(因此休眠需要更長的時間),我忘記增加交換空間以匹配添加的RAM(我有7G 交換空間,但8G RAM),以及寫入速度SSD 會隨著時間的推移而退化(至少降低 2 倍)。

進一步推薦閱讀:

相關內容