Windows 7: O Agendador de Tarefas / Mecanismo reduz o Conjunto de Trabalho / memória dos aplicativos, existe alguma maneira de parar isso?

2

Estou tentando iniciar automaticamente alguns scripts do Auto-HotKey usando o Agendador de Tarefas, pois ele permite que os scripts sejam executados com privilégios de administrador sem um prompt do UAC.

Normalmente, os scripts falham após várias horas. Quando executado via UAC / explorer.exe / pasta de inicialização, todos esses scripts foram executados por vários dias. (O único que eu vi funcionar de forma confiável via o Agendador de Tarefas é simples e aparece uma caixa de mensagem "Hello World".)

Ao usar o Process Explorer, percebo que os processos filho taskeng.exe sempre tiveram seus Conjuntos de Trabalho reduzidos em tamanho (de ~ 3.000K a 512K ou mais), enquanto os processos filhos do UAC / explorer.exe permaneceram constantes.

Eu tentei usar algum código AHK para ver se ele poderia alterar o tamanho do conjunto de trabalho:

pid := DllCall("GetCurrentProcessId")
handle := DllCall("OpenProcess", "UInt", 0x001F0FFF, "Int", 0, "Int", pid)
DllCall("SetProcessWorkingSetSize", "UInt", handle, "Int", 10000000, "Int", 20000000)
DllCall("CloseHandle", "Int", handle)

Não parecia ser um trabalho de reboque, por isso não tenho a certeza se existe alguma solução para o problema.

A solução foi compilar o executável como 64 bits em vez de 32 bits. Eu não tinha tentado isso anteriormente porque a versão de 32 bits funcionava perfeitamente bem através da pasta Startup nos meses em que a usei.

Acredito que o problema tenha surgido do gancho de teclado sendo carregado na memória e depois descarregado durante a coleta de lixo. Apenas teclas de atalho atribuídas pelo gancho do teclado foram afetadas, não aquelas atribuídas usando RegisterHotkey.

Estou usando os executáveis de 64 bits há mais de uma semana e nenhum deles falhou, embora alguns tenham sido um pouco lentos para responder (pode ter algo a ver com processos em segundo plano ou recursos de consumo do Chrome). A eliminação ou reinicialização dos processos parenteng.exe e svchost pode corrigir esse problema, já que essa foi a única maneira encontrada para interromper a realocação do conjunto de trabalhos (ainda não corrigi o problema de 32 bits e matou o pai svchost criou alguns novos problemas ).

[Atualização de 2018-10-03: Eu basicamente resolvi o problema.] O Agendador de Tarefas pode definir tarefas para serem executadas em prioridades diferentes, mas a interface do usuário não mostra isso.

Para alterar a prioridade:

  1. Exporte a tarefa como um arquivo XML.
  2. Edite o arquivo XML e altere a tag Priority. Consulte esta página para obter uma lista de prioridades.
  3. Defina o StopOnIdleEnd como "false". (Não testei isso, mas pode estar causando o atraso do mouse / entrada).
  4. Importe o arquivo XML modificado como uma tarefa e ele deve funcionar.

Aumentar a prioridade dessa maneira também aumenta a memória e a prioridade de E / S.

A compilação de scripts AHK como 64 bits ainda pode ser necessária.

    
por RedLetter 31.03.2018 / 21:50

0 respostas