GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak Ubuntu určuje nečinnost před pozastavením?

Nastavil jsem jej na „pozastavit, když není aktivní“ po 30 minutách.

Jak zjistí, zda je neaktivní? Je to jen uživatelský vstup pomocí klávesnice/myši?

Pokud nechám program pracovat mimo provoz – řekněme zpracování videa, které trvá dlouho, pozastaví se po 30 minutách a zastaví tento program? Stejná otázka pro dlouhé stahování, pozastaví se v polovině.

Přijatá odpověď:

Dobrá otázka. Pojďme to zjistit!

  1. Začněte zkoumáním možnosti „Pozastavit, když je neaktivní pro“,

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

    můžeme se naučit, že nastavuje klíč GSettings s názvem 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");
    

    Dokumentace k tomuto klíči poskytuje stručný popis:

    Doba v sekundách, po kterou musí být počítač napájený ze sítě neaktivní, než přejde do režimu spánku. Hodnota 0 znamená nikdy.

    ale stále nevysvětluje, co znamená „neaktivní“.

  2. Hledání sleep-inactive-ac-timeout nás vede k démonu nastavení GNOME,

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

    který pravidelně kontroluje vlastnost GNOME Session nazvanou Presence.status :

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

    Pokud zjistí, že stav je nečinný, uvede systém do režimu spánku:

    idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);
    

    Potřebujeme se tedy naučit, jak GNOME Session rozhoduje, zda je systém „nečinný“.

  3. Následuje zpětný krok od místa, kde relace GNOME aktualizuje hodnotu Presence.status ,

    gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);
    

    můžeme vidět, že používá IDLETIME čítač z Xorg:

    if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
        ...->counter = counters[i].counter;
    
  4. IDLETIME chování čítače je shrnuto v blogovém příspěvku od autora GNOME Power Manager:

    gnome-power-manager používá počítadlo uvnitř Xorg s názvem IDLETIME. Tento čítač se zvýší pouze tehdy, když uživatel nepohne myší nebo neklepne na některé klávesy. Když uživatel na něco klikne, IDLECOUNTER se resetuje.

To nám říká, že Ubuntu určuje nečinnost měřením doby, která uplynula od posledního stisknutí klávesy nebo pohybu myši. Využití CPU a síťová aktivita nehrají roli.

Související:Mac – Vytvoření virtuálního počítače Ubuntu pomocí VirtualBox?
Ubuntu
  1. Jak upgradovat na Ubuntu 20.04

  2. Jak upgradovat Ubuntu 18.04 na Ubuntu 18.10

  3. Jak povolit Ubuntu (pomocí úplného šifrování disku) zavolat Lukssupend před uspáním / pozastavením Ram?

  1. Jak nainstalovat R na Ubuntu 20.04

  2. Jak upgradovat Ubuntu na 20.10

  3. Jak upgradovat Ubuntu na 21.10

  1. Jak upgradovat Ubuntu na 21.04

  2. Jak upgradovat na Ubuntu 21.10

  3. Jak nainstalovat Go na Ubuntu 18.04