Como alterar a prioridade de E / S de um processo ou thread no Win7?

29

O Process Explorer é capaz de mostrar a prioridade efetiva de IO de um determinado segmento, mas não de alterá-lo. Como o suporte prioritário IO é um recurso comparativamente novo, a maioria dos programas não define suas próprias prioridades de IO. Parece que, por padrão, a prioridade do IO é derivada da prioridade do encadeamento (em vez da prioridade do processo), que o Process Explorer não pode modificar.

Existem outras ferramentas que podem ajudar a alterar a prioridade de IO de um determinado thread / todos os threads de um determinado processo?

    
por RomanSt 29.04.2010 / 18:49

4 respostas

10

Ferramenta pronta

Uma ferramenta de terceiros para definir as prioridades de E / S do processo, seja por ação manual do usuário ou automação e persistência, seria < strong> Process Lasso . Ele pode definir praticamente qualquer configuração de processo, e fazê-lo de forma persistente, ou por regras (por exemplo, quando isso acontece, altere a prioridade de E / S).

Resposta programática

A resposta é uma simples chamada de API para uma API nativa do NT, NTSetInformationProcess . É definido como a classe 'IoPriority' no DDK 2008. No NT6, apenas dois níveis são suportados: Muito baixo (fundo) e Normal . Existem tecnicamente 5 níveis definidos - Crítico, Alto, Normal, Baixo e Muito Baixo. O nível Crítico é reservado para operações de paginação. Não há dados sobre os outros.

No entanto, a maneira correta de usar a prioridade de E / S é apenas iniciar um 'modo de segundo plano' por meio de uma chamada para a API do Windows SetProcessPriorityClass , fornecendo PROCESSS_MODE_BACKGROUND_BEGIN. Isso fará com que ele use a prioridade de E / S muito baixa (plano de fundo), junto com uma classe de prioridade de CPU IDLE. Quando terminar, reverta via PROCESS_MODE_BACKGROUND_END.

A API SetThreadPriority também permitirá esse mesmo modo de segundo plano para segmentos específicos. Aqui você forneceria THREAD_MODE_BACKGROUND_BEGIN / END.

    
por 28.12.2010 / 10:06
22

Eu desenvolvi isso depois de ver que ninguém se incomodou com isso: link (código aberto)

Este programa é capaz de definir a prioridade de E / S de um processo, e todos os threads estão sendo afetados por ele imediatamente. É muito fácil modificá-lo para trabalhar com threads em vez de processos.

    
por 18.05.2010 / 17:50
15

O ProcessHacker é uma ferramenta GUI que pode alterar a prioridade IO de um processo arbitrário.

    
por 14.08.2010 / 15:25
1

Eu sou parcial a um aplicativo gratuito chamado PRIO, que é um protetor de prioridade de processo (entre outras coisas) com um tamanho muito pequeno (menos de 1 MB). Após a instalação, ele é executado silenciosamente em segundo plano até que você precise dele, e sua interface é criada diretamente no Gerenciador de Tarefas do Windows, estendendo sua funcionalidade e tornando-o como se os recursos adicionais sempre fizessem parte do Gerenciador de Tarefas. Quando você clica com o botão direito do mouse em um processo no Gerenciador de Tarefas com a intenção de alterar sua prioridade, alguns dos recursos adicionados do PRIO se tornam aparentes, pois você pode alterar não apenas a prioridade de CPU do processo, mas também sua prioridade de E / S , e você pode optar por salvar as novas configurações, se assim o desejar. Esta última faz com que, toda vez que o processo (ou seja, aquele programa) seja executado, tanto as prioridades de processo de CPU e E / S definidas e salvas por você entrarão em vigor.

O aplicativo tem outros recursos que também estendem a funcionalidade das várias guias no Gerenciador de Tarefas do Windows. Existem versões para sistemas de 32 e 64 bits e o aplicativo é gratuito para uso pessoal.

    
por 11.11.2016 / 23:23