In che modo ubuntu determina l'inattività prima di sospenderla?


14

L'ho impostato su "Sospendi quando inattivo" dopo 30 minuti.

Come determina se è inattivo? È solo l'input dell'utente tramite tastiera / mouse?

Se lascio perdere un programma, ad esempio l'elaborazione di un video, che richiede molto tempo, si sospenderà dopo 30 minuti e interromperà il programma? Stessa domanda per download lunghi, verrà sospesa a metà.


Cerca wake up calls.
Rinzwind,

In Askubuntu? L'ho appena provato e tutte le risposte sembrano riguardare la sospensione del sistema dalla sospensione o simili.
Jazz,

Risposte:


19

Buona domanda. Scopriamolo!

  1. A partire investigando l'opzione "Sospendi quando inattivo per",

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

    possiamo imparare che imposta una chiave GSettings chiamata 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 documentazione per questa chiave fornisce una breve descrizione:

    Il periodo di tempo in secondi in cui il computer alimentato a corrente alternata deve essere inattivo prima di andare in sospensione. Un valore di 0 significa mai.

    ma non spiega ancora cosa significhi "inattivo".

  2. Ricerca per sleep-inactive-ac-timeoutci porta a GNOME Settings Daemon ,

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

    che controlla periodicamente una proprietà della sessione GNOME chiamata Presence.status:

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

    Se rileva che lo stato è inattivo , mette il sistema in sospensione :

    idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);

    Quindi dobbiamo imparare come GNOME Session decide se il sistema è "inattivo".

  3. Seguendo all'indietro da dove GNOME Session aggiorna il valore di Presence.status,

    gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);

    possiamo vedere che utilizza il IDLETIMEcontatore di Xorg:

    if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
        ...->counter = counters[i].counter;
  4. Il IDLETIMEcomportamento del contatore è riassunto in un post sul blog dall'autore di GNOME Power Manager:

    gnome-power-manager usa un contatore all'interno di Xorg chiamato IDLETIME. Questo contatore viene incrementato solo quando l'utente non sposta il mouse o fa clic su alcuni tasti. Quando l'utente fa clic su qualcosa, IDLECOUNTER viene ripristinato.

Questo ci dice che Ubuntu determina l'inattività misurando la quantità di tempo trascorsa dall'ultima battitura o dal movimento del mouse. L'utilizzo della CPU e l'attività di rete non tengono conto.


come hai detto nell'ultima riga perché l'utilizzo della CPU non è considerevole? Il mio dubbio è che vengo da askubuntu.com/questions/215870/… . perché se metto il download di file da 1 GB, può richiedere molto tempo. anche io sono afk Il mio PC sta ancora facendo il download di quel file giusto. Ciò significa che il mio PC è attivo, giusto? : D
rɑːdʒɑ

+1 per un'indagine e un'analisi eccellenti. E @AgentCool, no. L'attività è determinata dalla pressione della tastiera o del mouse. Il download non premerà alcun tasto e manterrà il PC sveglio.
Oxwivi,

@Oxwivi questo è un commento quasi un anno fa. non dopo la modifica. :)
rɑːdʒɑ

@AgentCool Mio male, non me ne sono accorto. Il post è stato recentemente bloccato, probabilmente a causa della modifica di ieri. Era una domanda a cui ero interessato, quindi ho controllato.
Oxwivi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.