Como o ubuntu determina a inatividade antes de suspender?

14

Eu configurei para "suspender quando inativo" após 30 minutos.

Como ele determina se está inativo? É apenas a entrada do usuário via teclado / mouse?

Se eu deixar um programa em execução - digamos, processar um vídeo, que leva muito tempo, ele será suspenso após 30 minutos e o programa será interrompido? Mesma pergunta para downloads longos, ela será suspensa na metade.

Jazz
fonte
Tenha uma pesquisa para wake up calls.
Rinzwind
No Askubuntu? Eu apenas tentei e todas as respostas parecem pertencer a acordar o sistema da suspensão ou similar.
Jazz

Respostas:

19

Boa pergunta. Vamos descobrir!

  1. Começando investigando a opção "Suspender quando inativo por",

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

    podemos aprender que ele define uma chave GSettings chamada 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");

    A documentação para esta chave fornece uma breve descrição:

    A quantidade de tempo em segundos que o computador com energia CA precisa estar inativo antes de entrar em suspensão. Um valor 0 significa nunca.

    mas ainda não explica o que significa "inativo".

  2. Pesquisando para sleep-inactive-ac-timeoutleva-nos a GNOME Configurações Daemon ,

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

    que verifica periodicamente uma propriedade da Sessão GNOME chamada Presence.status:

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

    Se achar que o status está inativo , ele colocará o sistema em suspensão :

    idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);

    Portanto, precisamos aprender como a Sessão do GNOME decide se o sistema está "inativo".

  3. Depois de onde a Sessão GNOME atualiza o valor de Presence.status,

    gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);

    podemos ver que ele usa o IDLETIMEcontador do Xorg:

    if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
        ...->counter = counters[i].counter;
  4. O IDLETIMEcomportamento do contador é resumido em uma postagem no blog pelo autor do GNOME Power Manager:

    O gnome-power-manager usa um contador dentro do Xorg chamado IDLETIME. Esse contador é incrementado apenas quando o usuário não move o mouse ou clica em algumas teclas. Quando o usuário clica em algo, o IDLECOUNTER é redefinido.

Isso nos diz que o Ubuntu determina a inatividade medindo a quantidade de tempo que passou desde o último pressionamento de tecla ou movimento do mouse. O uso da CPU e a atividade da rede não são considerados.

ændrük
fonte
como você disse na última linha, por que o uso da CPU não é considerável? Minha dúvida é que eu vim de askubuntu.com/questions/215870/… . porque se eu colocar o download de um arquivo de 1GB, pode demorar muito tempo. mesmo estou afk Meu PC ainda está fazendo o download desse arquivo corretamente. Isso significa que meu PC está ativo, certo? : D
rɑːdʒɑ 22/11/12
+1 para excelente investigação e avaria. E @AgentCool, não. A atividade é determinada pela pressão do teclado ou do mouse. Seu download não pressiona nenhuma tecla e mantém o PC acordado.
Oxwivi 12/09
@Oxwivi isso é comentar quase um ano atrás. não após a edição. :)
r 13dʒɑ 13/09/14
@AgentCool Meu mal, eu não percebi. A postagem foi ampliada recentemente, provavelmente devido à edição de ontem. Era uma pergunta que me interessava, então verifiquei.
precisa saber é o seguinte