Quem suspende meus programas quando eu alterno para outra sessão X?

1

Eu sempre achei que no Linux todos os usuários não-root recebem o mesmo tratamento e sempre rodam em paralelo, o kernel não se importa com a sessão X atualmente ativa. Mas agora parece haver algum tipo de novo "recurso" no kernel Linux, Ubuntu ou KDE que suspende programas, se eles não estiverem na sessão ativa do X.

Exemplos

Login

  1. Estou logado como Alice e decido mudar para o usuário Bob e iniciar uma nova sessão do KDE usando este menu

  • A tela inicial de Bob aparece e eu imediatamente mudo de volta para Alice usando Ctrl + Alt + F7 .
  • I fazer algum trabalho e depois de alguns minutos eu voltar para nova sessão de Bob com Ctrl + Alt + F8 .
  • Acho que a tela inicial não continuou e a sessão não foi carregada. Só agora continua a carregar e termina em ~ 10 s.
  • Logout

    Quase o mesmo que acima: Eu inicio um logout e imediatamente mudo para outra conta e quando volto após alguns minutos, o logout não foi concluído.

    Música

    Eu começo a tocar música com o mpv como Alice. Eu mudo para a conta de Bob. Música toca bem no começo, mas depois dos ~ 40s ele pára. Eu volto por um segundo para Alice, a música continua tocando e quando eu mudo para Bob eu tenho novamente ~ 40s. Youtube parece parar mais cedo, depois de 15 anos.

    Perguntas

    Isso tudo me leva a acreditar que algo está acontecendo que suspende processos que não estão na sessão X ativa.

    1. Quem é responsável por isso?
    2. Como posso desativar isso?
    3. Posso listar programas em branco que nunca devem ser suspensos?

    Estou usando o KDE Neon 5 com base no Ubuntu 16.04 LTS (Xenial Xerus) com o KDE 5.36.0.

        
    por problemofficer 31.07.2017 / 22:29

    1 resposta

    3

    Who is responsible for this?

    Não é Linux. Não Ubuntu. Não X.Org. Os programas não estão suspensos.

    Os próprios programas são os culpados. Desde tempos imemoriais, os programas puderam saber se estavam exibindo alguma coisa, porque sabem quando o sistema de janelas solicita que eles redesenhem a janela. Se a sessão X não estiver ativa, nenhum redesenho é necessário.

    Com o passar do tempo, os programas (ou bibliotecas GUI, como as bibliotecas do KDE) tornaram-se cada vez mais inteligentes em detectar quando a saída não é necessária, para economizar ciclos de CPU (que, em dispositivos alimentados por bateria, significam vida útil da bateria).

    Às vezes, o programa não pode continuar, porque está usando a placa gráfica como um processador para fazer uma renderização complexa. Se a placa gráfica estiver ocupada exibindo outra sessão, o programa não poderá usá-la. Você notará isso porque esses programas também não funcionarão se a janela de outro programa estiver ativa.

    How can I turn this off?
    Can I white list programs that should never be suspended?

    Infelizmente, não sei.

        
    por 03.08.2017 / 03:31