Desempenho insatisfatório do Agendador de Tarefas no Windows 8 e no Windows Server 2012

3

Estou usando o Agendador de Tarefas do Windows para iniciar um programa de administrador elevado quando um usuário faz logon. A técnica é baseada neste artigo:

link

Observação: o programa de administrador elevado é um programa de teste automatizado, que precisa ser executado como administrador para instalar programas e executar vários testes. Alguns dos testes exigem direitos de administrador e acesso à área de trabalho.

A tarefa é configurada para ser executada na prioridade normal acima, conforme descrito neste artigo:

link

Tudo funciona bem no Windows Vista, no Windows 7 e no Windows Server 2008.

No Windows 8 e no Windows Server 2012, o desempenho do programa de teste é péssimo, normalmente levando de 5 a 10 vezes mais tempo para ser executado. Uso da CPU e E / S de disco são muito altos. O Process Hacker ( link ) mostra a Prioridade de E / S como Normal e a Prioridade de Página como Normal.

O baixo desempenho só acontece se o programa de teste for executado pelo agendador de tarefas durante o logon. Se eu parar o programa de teste e reiniciá-lo executando a tarefa do agendador de tarefas manualmente, o desempenho normal será restaurado.

Aqui estão alguns números de uma versão reduzida do programa de teste:

  • Do programa de teste executado a partir do login do usuário: Tempo 37,6 segundos, Falhas de página 4530, WS de pico 17,8 M
  • O mesmo programa de teste após a reinicialização manual: Tempo 1,1 segundos, Falhas de página 4383, pico de WS 17.7M

Qualquer ajuda seria apreciada.

    
por bradfordrg 22.03.2014 / 16:29

1 resposta

1

Eu acho que tenho uma solução para o problema. Parece que o comportamento de uma tarefa agendada no Windows 8 e no Windows Server 2012 depende de quando a tarefa é iniciada em relação à sequência de logon.

Minha tarefa de teste tinha um atraso embutido. A tarefa foi iniciada no início da sequência de logon, pausada por 60 segundos e iniciada a execução do teste. Vários atrasos foram tentados, mas em todos os casos o desempenho no Windows 8 e no Windows 2012 foi péssimo. Nota: A tarefa de teste foi executada em uma instalação quase limpa do Windows, portanto, 60 segundos foram mais do que suficientes para passar da sequência de logon.

Alterei a Tarefa de Teste para remover o atraso interno e, em vez disso, usei o recurso de atraso na inicialização do Agendador de Tarefas. No Windows 8 e no Windows Server 2012, a tarefa de teste está configurada para iniciar 60 segundos após o logon. Após essa alteração, a tarefa de teste se comporta normalmente.

Eu pesquisei MSFT docs para uma explicação para esse comportamento, mas até agora desenhei um espaço em branco.

Eu agradeço muito a @ charleswj81, @MDMarra e @Daniel Goldberg. Seus comentários me ajudaram a analisar o problema de diferentes ângulos e, eventualmente, descobrir uma solução.

    
por 30.03.2014 / 15:21