Cómo depurar la hibernación lenta

Cómo depurar la hibernación lenta

Tengo varias PC/portátiles que ejecutan Ubuntu 20.04 actualizado con actualmente un kernel de 64 bits 5.4.0-74-generic como lo proporcionan los repositorios predeterminados de Ubuntu. Uno de ellos, una PC bastante común con una CPU Intel i3, tarda un poco más de 2 minutos en hibernar desde que actualicé de 18.04 a 20.04.

Varios recursos que encontré sobre la depuración de la hibernación cubren principalmente el despertar o la falla total al suspender, pero no una suspensión en disco que lleva mucho tiempo. El despertador funciona bien y sólo tarda unos segundos. ¿Cómo puedo saber por qué tarda tanto en hibernar? ¿Existe algo así como systemd-analyze blamepara la hibernación?

Hasta ahora agregué initcall_debug no_console_suspendy GRUB_CMDLINE_LINUX_DEFAULTmuestra /etc/default/grubla consola, sin embargo, no se muestra nada que explique tanto tiempo. Muestra "Unidad de hardware detectada bloqueada" para la interfaz de red. Pero esto aparece justo al comienzo de la hibernación y supongo que es el comportamiento esperado.

Yo uso systemctl hibernatepara iniciarlo. Se necesitan 2 minutos hasta que se apaga, incluso cuando se ejecuta como root en la consola sin ningún otro usuario o proceso de usuario registrado.

Respuesta1

Mi consejo:

  1. DecidirHaz una pregunta @ Askubuntu.comy tómelo en serio. ;)Recopile datos, reproduzca problemas con configuraciones mínimas y sea específico.

  2. Asegúrese de que haya suficiente espacio de intercambio.El comando freeproporciona la cantidad de RAM ("Mem") y Swap. El total del intercambio debe ser mayor que la RAM total. Me di cuenta de que había agregado RAM en algún momento pero no aumenté el tamaño de mi partición de intercambio.Editar (2021-06-07):La diferencia de tamaño fue de ~1 GB. Después de aumentar el tamaño, la hibernación fue repetidamente más rápida, pero sigo pensando que esto fue un artefacto causado por un cambio en la velocidad de escritura del SSD que contiene la partición de intercambio. (Ver también el siguiente punto).

  3. ¿Qué tan rápida debe ser la hibernación?Básicamente, durante la suspensión en disco, toda la RAM se escribe en el disco. La cantidad de RAM y la velocidad de escritura del disco determinan el tiempo necesario. Busqué mi partición de intercambio y verifiqué cuánto tiempo lleva ponerla a cero usando dd if=/dev/zero. ddinformó una velocidad de 108 MB/s. Escribir 7 GB tomó ~65 segundos. Mi PC tiene 8 GB. Por lo tanto, debería esperar que la hibernación demore al menos un minuto.

  4. Intentardepurar quitando piezasdel sistema: desconecte el hardware que no sea necesario. Hiberne inmediatamente después de un nuevo inicio, con o sin iniciar sesión primero.

  5. Agregarinitcall_debug no_console_suspenda la línea de comando del kernel como se describe en la pregunta.

Por ahora, supongo que las razones por las que experimento una hibernación lenta son: agregué RAM (por lo que la hibernación lleva más tiempo), olvidé aumentar el espacio de intercambio para que coincida con la RAM agregada (tenía 7G de intercambio pero 8G de RAM) y la velocidad de escritura de el SSD se degradó con el tiempo (al menos en un factor de 2).

Lectura adicional y recomendada:

información relacionada