¿Cómo determina ubuntu la inactividad antes de suspender?

14

Lo configuré para "suspender cuando está inactivo" después de 30 minutos.

¿Cómo determina si está inactivo? ¿Es solo la entrada del usuario a través del teclado / mouse?

Si dejo un programa funcionando, por ejemplo, procesando un video, que lleva mucho tiempo, ¿se suspenderá después de 30 minutos y detendrá ese programa? La misma pregunta para descargas largas, ¿se suspenderá a la mitad?

Jazz
fuente
Tener una búsqueda de wake up calls.
Rinzwind
En Askubuntu? Acabo de probarlo y todas las respuestas parecen pertenecer a despertar el sistema de la suspensión o similar.
Jazz

Respuestas:

19

Buena pregunta. ¡Vamos a averiguar!

  1. Comenzando por investigar la opción "Suspender cuando está inactivo para",

    <property ...>Suspend when inactive for</property> ...
    <object ... id="combobox_sleep_ac">

    podemos aprender que establece una clave GSettings llamada sleep-inactive-ac-timeout:

    widget = GTK_WIDGET (gtk_builder_get_object (..., "combobox_sleep_ac")); ...
    g_object_set_data (G_OBJECT(widget), "_gsettings_key", "sleep-inactive-ac-timeout");

    La documentación de esta clave proporciona una breve descripción:

    La cantidad de tiempo en segundos que la computadora con alimentación de CA debe estar inactiva antes de irse a dormir. Un valor de 0 significa nunca.

    pero aún no explica qué significa "inactivo".

  2. Buscando para sleep-inactive-ac-timeoutnos lleva a GNOME valores de daemon ,

    timeout_sleep = g_settings_get_int (..., "sleep-inactive-ac-timeout");

    que verifica periódicamente una propiedad de GNOME Session llamada Presence.status:

    result = g_dbus_proxy_get_cached_property (...->session_presence_proxy, "status");

    Si encuentra que el estado está inactivo , pone el sistema en suspensión :

    idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);

    Por lo tanto, debemos aprender cómo la sesión de GNOME decide si el sistema está "inactivo".

  3. Siguiendo hacia atrás desde donde la sesión de GNOME actualiza el valor de Presence.status,

    gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);

    podemos ver que usa el IDLETIMEcontador de Xorg:

    if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
        ...->counter = counters[i].counter;
  4. El IDLETIMEcomportamiento del contador se resume en una publicación de blog del autor de GNOME Power Manager:

    gnome-power-manager usa un contador dentro de Xorg llamado IDLETIME. Este contador se incrementa solo cuando el usuario no mueve el mouse o hace clic en algunas teclas. Cuando el usuario hace clic en algo, el IDLECOUNTER se restablece.

Esto nos dice que Ubuntu determina la inactividad midiendo la cantidad de tiempo que ha pasado desde la última pulsación de tecla o movimiento del mouse. El uso de la CPU y la actividad de la red no tienen en cuenta.

ændrük
fuente
como dijiste en la última línea, ¿por qué el uso de la CPU no es considerable? Mi duda es que vine de askubuntu.com/questions/215870/… . porque si pongo la descarga del archivo de 1 GB, puede llevar mucho tiempo. incluso estoy afk Mi PC todavía está descargando ese archivo correctamente. Eso significa que mi PC está activa ¿verdad? : D
rɑːdʒɑ
+1 por excelente investigación y desglose. Y @AgentCool, no. La actividad se determina presionando el teclado o el mouse. Su descarga no presionará ninguna tecla y mantendrá la PC despierta.
Oxwivi
@Oxwivi es un comentario hace casi un año. No después de la edición. :)
rʒɑdʒɑ
@AgentCool Mi mal, no me di cuenta. La publicación fue rechazada recientemente, probablemente debido a la edición de ayer. Era una pregunta que me interesaba, así que revisé.
Oxwivi