O Process Explorer pode mostrar a prioridade efetiva de E / S de um determinado encadeamento, mas não alterá-lo. Como o suporte à prioridade de E / S é um recurso relativamente novo, a maioria dos programas não define suas próprias prioridades de E / S. Parece que, por padrão, a prioridade de E / S é derivada da prioridade do encadeamento (em vez da prioridade do processo), que o Process Explorer também não pode modificar.
Existem outras ferramentas que podem me ajudar a alterar a prioridade de E / S de um determinado segmento / todos os segmentos de um determinado processo?
Respostas:
Ferramenta pronta
Uma ferramenta de terceiros para definir prioridades de E / S do processo, por ação manual do usuário ou automação e persistência, seria o Process Lasso . Ele pode definir quase qualquer configuração de processo e fazê-lo persistentemente 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 . É definida como a classe 'IoPriority' no DDK de 2008. No NT6, apenas dois níveis são suportados: Muito Baixo (segundo plano) e Normal . Tecnicamente, existem 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 I / O é apenas para iniciar um 'modo de fundo' através 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 (em segundo plano), junto com uma classe de prioridade da CPU IDLE. Quando terminar, reverta via PROCESS_MODE_BACKGROUND_END.
A API SetThreadPriority também permitirá esse mesmo modo de segundo plano para threads específicos. Aqui você forneceria THREAD_MODE_BACKGROUND_BEGIN / END.
fonte
Eu desenvolvi isso depois de ver que ninguém se importava com isso: https://sourceforge.net/projects/iopriority/ (código aberto)
Este programa pode definir a prioridade de E / S de um processo, e todos os encadeamentos são afetados por ele imediatamente. É muito fácil modificá-lo para trabalhar com threads em vez de processos.
fonte
ProcessHacker é uma ferramenta GUI que pode alterar a prioridade de E / S de um processo arbitrário.
fonte
Sou parcial de um aplicativo gratuito chamado PRIO, que economiza prioridade de processo (entre outras coisas) com uma pegada muito pequena (menos de 1 MB). Após a instalação, ele é executado silenciosamente em segundo plano até que você precise, e sua interface é criada diretamente no Gerenciador de Tarefas do Windows, estendendo sua funcionalidade e tornando-o como se os recursos adicionados 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 adicionais do PRIO ficam aparentes, pois você pode alterar não apenas a prioridade da CPU do processo, mas também a prioridade de E / S (ergo sua pergunta) , e você pode salvar as novas configurações, se desejar. Isso faz com que, toda vez que esse processo (ou seja, esse programa) seja executado, as prioridades de processo de CPU e de E / S definidas e salvas por você entrem em vigor.
O aplicativo possui outros recursos que também ampliam 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.
fonte