quarta-feira, 2 de maio de 2012

Como alterar a prioridade de uma tarefa agendada no Windows

Gostaria de inaugurar este blog com a publicação de um problema do Agendador de Tarefas (se é que podemos chamá-lo de problema), já que pouco se encontra na internet falando a respeito. Vamos ao que interessa...

Quando você cria uma tarefa agendada para executar um arquivo .bat ou (acredito eu) algum outro tipo de executável, talvez você tenha percebido que esse arquivo é executado com uma velocidade inferior à execução manual (quando você da um duplo clique sobre ele).

Depois de alguns testes realizados, descobri que o motivo de uma execução mais lenta trata-se da prioridade com que o Windows trata este processo.

Vejamos: O Windows possui 11 níveis de prioridade para execução de processos, de 0 a 10, sendo que 0 representa a prioridade mais alta, e 10 a mais baixa.

Lista completa das prioridades para execução de tarefas no Windows¹:

0: Prioridade em tempo real
1: Prioridade alta
2: Prioridade acima do normal
3: Prioridade acima do normal
4: Prioridade normal
5: Prioridade normal
6: Prioridade normal
7: Prioridade abaixo do normal
8: Prioridade abaixo do normal
9: Prioridade ociosa
10: Prioridade ociosa

Uma tarefa como esta, por padrão do Windows, é executada com prioridade 7. Como a interface do Agendador de Tarefas não permite que você defina qual a prioridade você quer usar, faremos isso manualmente:

1: Após criar sua tarefa, clique com o botão direito em cima dela, e então, clique em Exportar.
2: Clique em Salvar. Por padrão, a tarefa será exportada em um arquivo com formato XML.
3: Abra o arquivo exportado no Bloco de Notas.
4: Localize a linha <Priority>7</Priority>.
5: Altere o valor 7 para o valor desejado, e depois salve o arquivo. (Eu utilizei o valor 1 pois minha tarefa era crítica. Apenas para referência, um arquivo que você executa manualmente possui prioridade de 4 a 6).
6: No Agendador de Tarefas, clique no menu Ação, e então, clique em Importar Tarefa....
7: Selecione o arquivo XML.

Pronto! A prioridade da sua tarefa foi alterada!
Você pode testar diferentes níveis de prioridades, lembrando que cada nível fornecerá um desempenho conforme a quantidade de processos atualmente ativos no sistema.

Eng. Thiago


Agradeço a todos pela visita, e informo-lhes que publicarei neste blog informações, tutoriais e dicas sobre tecnologia e situações de TI que vivemos no dia a dia.


Sistemas testados: Windows 7 e Windows Server 2008.
Fontes: 1-Lista disponível no artigo
TaskSettings.Priority property.